TypeError: 'float'对象不可迭代
我在Windows 7上使用Python 3.2.2,想写一个程序,让用户输入7个数字,然后告诉他们有多少个是正数、多少个是负数、还有多少个是零。到目前为止,我写的代码是这样的:
count=7
for i in count:
num = float(input("Type a number, any number:"))
if num == 0:
zero+=1
elif num > 0:
positive+=1
elif num < 0:
negative+=1
print (positive)
print (negative)
print (zero)
但是当我运行这段代码时,我遇到了这个问题:
TypeError: 'float' object is not iterable
如果我把第3行的float换成int,问题还是一样,只不过它提示说'int'对象不可迭代。我还试过把count的值从7改成7.0。请问我该如何解决这个错误呢?
3 个回答
-1
简单来说,检查一下你传给一个需要可迭代对象(比如字符串、列表等)的函数的数据中是否有意外的“隐藏”NaN值。
正如其他回答所说,这个错误发生在你的代码期待一个可迭代对象,但却传入了一个浮点数。缺失的数据通常用NaN表示(这也是一种浮点数),所以如果你把浮点数或者NaN传给一个需要可迭代对象的函数,就会出现这个错误。除了在代码中明确写的循环(for i in 7.0
),很多内置函数,比如list()
、set()
、tuple()
、dict()
、enumerate()
、all()
、any()
、max()
、min()
、sum()
等,都需要可迭代对象,所以如果你把浮点数传给它们,比如max(float('nan'))
或者list(1.5)
,就会出现标题中的错误。
4
使用
range(count)
整数和浮点数是不能被遍历的
36
for i in count:
的意思是 for i in 7:
,这样写是行不通的。因为在 in
后面应该跟一个可以被循环的东西,而不是一个数字。你可以试试这样写:
for i in range(count):