我编写了以下代码来完成作业:
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对象是否也可迭代? 谢谢你的帮助!!
答案 0 :(得分:1)
正如Python glossary所指出的,如果一个对象“能够一次返回一个成员”,那么它就是一个可迭代的对象。 num
是一个浮点数,它只是一个数字,它不能像列表,集合或字典一样一次返回它的元素。因此,编写for number in num:
是没有意义的 - 为此,num
应该是可迭代的,以便它可以一次一个地返回它的成员number
。相反,您应该通过致电num
直接将total
添加到total = total + num
(或者更好,total += num
)