2016-10-24 4 views
1

反復処理可能ではない私は、割り当てを完了するために以下のコードを書いた:のPython:Floatオブジェクトが

fname = raw_input("Enter file name: ") 
fh = open(fname) 
total = 0 
count = 0 
for line in fh: 
    if not line.startswith("X-DSPAM-Confidence:") : continue 
    pos = line.find(':') 
    num = float(line[pos+1:]) 
for number in num: 
    total = total +num 
    count += 1 
print 'Average spam confidence:', total/count 

システムは

フロートオブジェクトが

反復可能ではないことを読んで、エラーメッセージが出てきます

私は間違いを知っていましたfor number in num: 正しい答えは

です
fname = raw_input("Enter file name: ") 
fh = open(fname) 
total = 0 
count = 0 
for line in fh: 
    if not line.startswith("X-DSPAM-Confidence:") : continue 
    pos = line.find(':') 
    num = float(line[pos+1:]) 
    total = total +num 
    count += 1 
print 'Average spam confidence:', total/count 

私の質問は:正解では 、浮動オブジェクトもiterableですか? 助けてくれてありがとう!

+0

を呼び出すことによってtotalに直接numを追加するだけです。 –

答えて

1

Python glossaryのメモのとおり、オブジェクトは「一度に1つずつメンバーを返すことができる」場合は、繰り返し可能です。 numは浮動小数点数であり、単なる数字であり、リスト、セット、または辞書のように一度に1つずつ要素を返すことはできません。したがって、for number in num:を書くのは意味がありません。これを行うには、numはiterableでなければなりません。そのため、メンバーは一度に1つずつnumberとして返すことができます。代わりに、total = total + num(またはそれ以上の場合はtotal += num

+0

整数引数のために働く 'for number in range(num)'を実行できることに注意してください。 –

+0

@Erik Godard:説明に感謝!! –

関連する問題