类型错误:“浮动”对象不可迭代

问题描述 投票:0回答:3

我在 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。我该如何解决这个错误?

python python-3.x for-loop floating-point typeerror
3个回答
36
投票

for i in count:
表示
for i in 7:
,这是行不通的。
in
之后的位应该是可迭代类型,而不是数字。试试这个:

for i in range(count):

4
投票

使用

范围(计数)

int 和 float 不可迭代


-1
投票

简而言之,检查传递给需要迭代(例如字符串、列表等)的函数的数据中是否存在意外/“隐藏”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)
,您会在标题中看到错误。

© www.soinside.com 2019 - 2024. All rights reserved.