2017-12-01 8 views
0

ファイルから整数を集計する関数を書いています。ここ
はコードです:ファイルから整数を追加する

def sum_integers_from_file(file_name): 
    try: 
     file = open(name) 
     total = 0 
     for i in file: 
      total += int(i) 
     file.close() 
     return total 
    except: 
     print "error" 

ファイルfoo.txt

機能は1234を返します。

なぜtotal += int(i)はすべての整数を加算しますか?

+0

インデントを修正してください! – mrCarnivore

+0

ファイルに改行がなく、文字で分割していない場合、計算は0 + 1234です。 –

+0

for i in fileは、ファイル内のテキストの行を繰り返し、文字は繰り返しません。 PS、 'with'ステートメントを使ってファイルを開く –

答えて

2

と同じことを行うことができますファイルをwithステートメントで読み取ります。それはファイルを閉じる責任からあなたを解放し、また短いです!これは動作します:

def sum_integers_from_file(file_name): 
    try: 
     with open(file_name, 'r') as f: 
      s = f.read() 

     total = 0 
     for char in s: 
      total += int(char) 
     return total 
    except: 
     print("error") 
2

ファイルは1行です。

各行からすべてのintを追加しています。

あなたはその方法で1,2,3,4を追加したい場合は、新しい行に

それらを移動する。また、あなたはそれは非常にお勧めします。この

with open(name) as f: 
     return sum(int(line) for line in f) 
+0

作者はそれをする必要はありません。各数字/文字は整数として解釈できます... – mrCarnivore

+0

質問が返された理由を質問していました。期待したことを決して与えてはいけない。 –

+0

十分だよ。 – mrCarnivore

関連する問題