【问题标题】:(Python)If statement logic error(Python)If语句逻辑错误
【发布时间】: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 &gt; baseline_average: 运行,但我的程序每次只运行elif infile_memory_average &lt; baseline_average:。 这里的逻辑错误是什么?

【问题讨论】:

  • “txt 文件的平均值”应该是什么意思?
  • 在 elif infile_memory_average > baseline_average: 之前放置一个断点,并在第二次执行时检查这两个值。
  • 我看不出这个程序怎么可能运行。您将baseline_average 与字符串进行比较,然后将其与整数进行比较。它到底是什么,txt_memory_baseline.get 函数在哪里?

标签: python debugging if-statement logic


【解决方案1】:

据我所知,我认为您需要将baseline_average 声明为整数。如果您将其作为字符串读取,则它的值会有所不同。所以试试这个:

之后:baseline_average = txt_memory_baseline.get()

执行:baseline_average=int(baseline_average)

这是我的猜测。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多