Ich arbeite derzeit an einem Code, um einen Wert C zu finden, die ich dann mit anderen Parametern vergleichen werde. Wenn ich versuche, meinen Code auszuführen, erhalte ich jedoch diesen Fehler: ValueError: Math-Domänenfehler. Ich bin mir nicht sicher, warum ich diesen Fehler erhalte, obwohl ich denke, dass ich so meine Gleichung einstelle. Vielleicht gibt es einen besseren Weg, es zu schreiben. Das ist mein Code:ValueError: Math Domain Fehler bei der Verwendung Logarithmen
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
Es gibt dann diese Zeile zurück, die besagt, dass es einen Domänenfehler gibt.
C = (((math.log(float(kH2[n]),10)))-(math.log(float(kHe[n]),10)))/math.log(R,10)
ValueError: math domain error
Auch für die Textdatei, verwende ich nur eine zufällige Liste von 6 Zahlen für jetzt, da ich meinen Code Ich versuche zu arbeiten, bevor ich die reale Liste von Zahlen setzen in. Die Zahlen, die ich verwende, ist: als nicht-positiver Wert in eine Log-Funktion eine Domäne Fehler
5 10 4 2
6 20 1 2
7 30 4 2
8 40 3 2
9 23 1 2
4 13 6 2
Debugging-Tipp - brechen Sie Ihre komplizierte Zeile in Stücke, bis Sie den Fehler isolieren. – enderland
Ich vermute, dass Sie Python 2 verwenden. Wenn ja, dann wird 'R' 0. Ändern Sie' R = ((uH2 * eH2)/(uHe * eHe)) 'zu' R = float (uH2 * eH2)/(Uh * eHe) '. Sehen Sie zum Beispiel [diese Frage] (http://stackoverflow.com/questions/2958684/python-division) für Details. –
Warren scheint jetzt mit Ihrem Vorschlag zu arbeiten. Danke für deinen Rat. Danke auch für deinen Rat enderland. – Cosmoman