2017-03-21 4 views
-2

私は入力txtファイルの平均を計算するプログラムコードを持っており、平均値をベースラインに保存します。 ユーザーがプログラムを2回目に実行すると、txtファイルの別の平均を計算し、平均値がベースラインを比較します。(Python)文の論理エラー

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() 

if baseline_average == "":を実行する必要がある場合、それは最初の時間が実行されるので、私の最初の値は、506であると仮定します。問題は、2番目の値が7099で、ベースラインよりも高く、elif infile_memory_average > baseline_average:で実行する必要がありますが、プログラムは毎回elif infile_memory_average < baseline_average:で実行されるだけです。 ここで論理エラーとは何ですか?

+0

"平均txtファイル"とはどういう意味ですか? – timgeb

+0

elifのinfile_memory_average> baseline_average:の直前にブレークポイントを置き、2回目の実行の値を両方ともチェックします。 –

+0

http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int – Lafexlos

答えて

0

私が見ることから、baseline_averageを整数として宣言する必要があると思います。代わりに文字列として読み込んでいる場合は、その値が異なります。やる

baseline_average = txt_memory_baseline.get():後

:ので、これを試してみてください私の推測だろうbaseline_average = INT(baseline_average)