Python:Float对象不是Iterable

时间:2016-10-24 02:36:29

标签: python

我编写了以下代码来完成作业:

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 

但我的问题是: 在正确答案中,float对象是否也可迭代? 谢谢你的帮助!!

1 个答案:

答案 0 :(得分:1)

正如Python glossary所指出的,如果一个对象“能够一次返回一个成员”,那么它就是一个可迭代的对象。 num是一个浮点数,它只是一个数字,它不能像列表,集合或字典一样一次返回它的元素。因此,编写for number in num:是没有意义的 - 为此,num应该是可迭代的,以便它可以一次一个地返回它的成员number。相反,您应该通过致电num直接将total添加到total = total + num(或者更好,total += num