我有一个程序代码来计算输入txt文件的平均值,它会将平均值保存到基线。 当用户第二次执行程序时,它应该计算另一个txt文件的平均值,平均值将比较基线。
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()
假设我的第一个值是506
,因为它是第一次执行,所以应该运行if语句if baseline_average == "":
。问题是,当第二个值为7099
时,它高于基线并应与elif infile_memory_average > baseline_average:
一起运行,但我的程序每次只运行elif infile_memory_average < baseline_average:
。
这里的逻辑错误是什么?
答案 0 :(得分:0)
从我所看到的情况来看,我认为您需要将baseline_average声明为整数。如果您将其作为字符串读取,则它的值将不同。所以试试这个:
之后:baseline_average = txt_memory_baseline.get()
执行:baseline_average = int(baseline_average)
那是我的猜测。