【发布时间】:2017-03-21 07:24:32
【问题描述】:
我有一个程序代码来计算输入 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:。
这里的逻辑错误是什么?
【问题讨论】:
-
“txt 文件的平均值”应该是什么意思?
-
在 elif infile_memory_average > baseline_average: 之前放置一个断点,并在第二次执行时检查这两个值。
-
我看不出这个程序怎么可能运行。您将
baseline_average与字符串进行比较,然后将其与整数进行比较。它到底是什么,txt_memory_baseline.get函数在哪里?
标签: python debugging if-statement logic