Ich habe einen Programmcode, um den Durchschnitt der Eingabe TXT-Datei zu berechnen, und es wird den Durchschnittswert zu Baseline speichern. Wenn der Benutzer das Programm zum zweiten Mal ausführt, sollte er einen anderen Durchschnitt der txt-Datei berechnen, der Durchschnitt vergleicht die Grundlinie.(Python) Wenn Anweisung Logik Fehler
def memory_baselineValues():
memory_txtfile = file_memory_locat.get() ### Enter txt file name
infile = open(memory_txtfile, 'r')
stuff = infile.readlines()
infile_memory_average = (int(stuff[3]) + int(stuff[13]) + int(stuff[23]) + int(stuff[33]) + int(stuff[43]) + int(stuff[53]) + int(stuff[63]) + int(stuff[73]) + int(stuff[83]) + int(stuff[93]))/10 ###calculate the average of txt file values
average_memory.insert(INSERT, infile_memory_average) ### output the average of txt file values
baseline_average = txt_memory_baseline.get()
if baseline_average == "": ###Check the textbox "txt_memory_baseline" values is null or not null, first time execute should null
baseline_average = infile_memory_average
txt_memory_baseline.insert(INSERT, baseline_average) ### add the first time execute average values to textbox
var = tkMessageBox.showinfo("Alert", "Test")
exit
elif infile_memory_average > baseline_average:
var = tkMessageBox.showinfo("Alert", "The average values of "+memory_txtfile+" is over the baseline")
read_average = infile_memory_average
before_baseline = int(baseline_average)
baseline_average = (read_average + before_baseline)/2 ###update baseline
txt_memory_baseline.delete(0, END)
txt_memory_baseline.insert(INSERT, baseline_average)
exit
elif infile_memory_average < baseline_average:
var = tkMessageBox.showinfo("Alert", "Safe")
read_average = infile_memory_average
before_baseline = int(baseline_average)
baseline_average = (read_average + before_baseline)/2 ###update baseline
txt_memory_baseline.delete(0, END)
txt_memory_baseline.insert(INSERT, baseline_average)
exit
else:
print"Somethings wrong"
print "done"
infile.close()
Angenommen, mein erster Wert 506
ist, da es erstmals ausführen, sollte die if-Anweisung if baseline_average == "":
ausgeführt werden. Das Problem ist, wenn der zweite Wert 7099
ist, ist es höher als die Grundlinie und sollte mit elif infile_memory_average > baseline_average:
ausgeführt werden, aber mein Programm wird nur elif infile_memory_average < baseline_average:
immer ausgeführt. Was ist der logische Fehler hier?
Was soll "Durchschnitt einer txt-Datei" bedeuten? – timgeb
Setzen Sie einen Haltepunkt kurz vor elif infile_memory_average> baseline_average: und überprüfen Sie beide Werte für die zweite Ausführung. –
http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int – Lafexlos