2017-03-10 8 views
0

私は、.txtファイルを読み込んでそれからグレードのリストを追加するプログラムを作成しました。そのリストから最小値と最大値を取得しようとすると、リストに大きな範囲の数値が含まれていても同じ値が返されます。「min」と「max」関数は数字の.txtファイルから同じ値を返します

.txtファイルは、次のようにフォーマットされます。ここでは

name 
grade 
name 
grade 

は私のコードです:

def main(): 

    #open gradebook 
    gradebook_file = open ('gradebook.txt', 'r') 
    name = gradebook_file.readline() 
    grade = float (gradebook_file.readline()) 
    numbers = [] 
    for lines in gradebook_file: 
     numbers.append (grade) 

    _min = min (numbers) 
    _max = max (numbers) 

    #define variable to read contents of gradebook 
    contents = gradebook_file.read() 

    #print contents 
    print (contents) 
    print ('The minimum average grade was a(n) ' + str (_min) + '.') 
    print ('The maximum average grade was a(n) ' + str (_max) + '.') 

    #close the gradebook 
    gradebook_file.close() 

#call main 
main() 
+2

確実に1時間のデバッグセッションで、 'print(numbers)'を試みたことがありますか? –

+0

あなたは1つの学年と1つの名前しか読んでいません。あなたのコードを今修正しています。 – Ambitions

答えて

3
grade = float (gradebook_file.readline()) 
numbers = [] 
for lines in gradebook_file: 
    numbers.append (grade) 

あなたが浮くために第2ラインを変換し、そして残りの上の反復同じ値をもう一度付け加えるファイル。

あなたはすべて同じ値のリストを取得しますので、min(numbers) == max(numbers)

クイックフィックス2のうち1行(奇数1)を読んで、名前をスキップする:

numbers = [float(line) for i,line in enumerate(gradebook_file) if i%2] 

最終注:ファイルを読んだ後contents = gradebook_file.read()を行うとき、それは何も読まない:あなたはしましたすでにファイルジェネレータを使い果たしました。

+0

誰かがdownvoteを説明することができますか?私の答えが間違っているなら、私はそれを修正するか、それを削除するでしょう(すでに3票の回答が削除されているので問題にはなりません) –

+0

最近、スタックオーバーフローが起きています。私はdownvoteに値する何も見ません。 –

+0

@JohnColemanありがとうございます。私は誰かがOPを自分でデバッグしなければならないと考えていると思われます。問題は悪く、回答者は罰せられるべきです。そんなこと知ってる。そのような場合には、私は非常に役立つように努力し、簡単な答えを超えて、OPコードを改善するために、厄介なコードで修正するのではなく、 –

関連する問題