0
我目前正在研究一個代碼來查找值C,然後我將與其他參數進行比較。但是,每當我嘗試運行我的代碼時,都會收到此錯誤:ValueError:數學域錯誤。我不確定爲什麼我收到這個錯誤,但我認爲這是我設置我的等式的方式。也許有更好的方法來寫它。這是我的代碼:ValueError:使用對數時的數學域錯誤
import os
import math
path = "C:\Users\Documents\Research_Papers"
uH2 =5
uHe = 3
eH2 = 2
eHe = 6
R = ((uH2*eH2)/(uHe*eHe))
kH2=[]
kHe=[]
print(os.getcwd()) # see where you are
os.chdir(path) # use a raw string so the backslashes are ok
print(os.getcwd()) # convince yourself that you're in the right place
print(os.listdir(path)) # make sure the file is in here
myfile=open("[email protected]","r")
lines=myfile.readlines()
for x in lines:
kH2.append(x.split(' ')[1])
kHe.append(x.split(' ')[0])
myfile.close()
print kH2
print kHe
g = len(kH2)
f = len(kHe)
print g
print f
for n in range(0,7):
C = (((math.log(float(kH2[n]),10)))-(math.log(float(kHe[n]),10)))/math.log(R,10)
print C
然後它返回這一行說有一個域錯誤。
C = (((math.log(float(kH2[n]),10)))-(math.log(float(kHe[n]),10)))/math.log(R,10)
ValueError: math domain error
另外,對於文本文件,我只是用6位數字的隨機列表現在,因爲我試圖讓我的代碼工作之前,我把號碼的真正名單。我使用的數字是:
5 10 4 2
6 20 1 2
7 30 4 2
8 40 3 2
9 23 1 2
4 13 6 2
調試提示 - 將複雜的線條分解成小塊,直到找出錯誤。 – enderland
我懷疑你使用的是Python 2.如果是這樣,那麼'R'將爲0.將R =((uH2 * eH2)/(uHe * eHe))改爲R = float(uH2 * eH2)/ UHE * EHE)'。例如,請參閱[此問題](http://stackoverflow.com/questions/2958684/python-division)以獲取詳細信息。 –
沃倫現在似乎與您的建議一起工作。謝謝你的建議。另外,感謝您的建議enderland。 – Cosmoman