我在 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
如果我用 int 替换第 3 行中的 float,我会遇到同样的问题,只是它说“int”对象不可迭代。我还尝试将 count 的值从 7 更改为 7.0。我该如何解决这个错误?
for i in count:
表示 for i in 7:
,这是行不通的。 in
之后的位应该是可迭代类型,而不是数字。试试这个:
for i in range(count):
使用
范围(计数)
int 和 float 不可迭代
简而言之,检查传递给需要迭代(例如字符串、列表等)的函数的数据中是否存在意外/“隐藏”NaN 值。
正如其他答案所指出的,当您的代码需要一个可迭代对象但传递给它的是一个浮点数时,就会发生此错误。缺失数据通常表示为 NaN(浮点型),因此如果将浮点型或 NaN 传递给需要可迭代的函数,则会抛出此错误。除了OP中的显式循环(
for i in 7.0
)之外,还有许多内置函数,例如list()
,set()
,tuple()
,dict()
,enumerate()
,all()
,any()
、 max()
、 min()
、 sum()
等期望一个可迭代的,所以如果你向它们传递一个浮点数,例如max(float('nan'))
或 list(1.5)
,您会在标题中看到错误。