TypeError: 'float'对象不可迭代

29 投票
3 回答
275067 浏览
提问于 2025-04-17 06:17

我在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):

撰写回答