小能豆

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

py

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


阅读 10

收藏
2024-11-11

共1个答案

小能豆

问题出在你使用了 for i in count,其中 count 是一个整数。for 循环需要一个可迭代对象(如列表、元组或 range),而整数 7 不是一个可迭代对象,因此会导致 TypeError: 'float' object is not iterable 错误。

要解决这个问题,你需要将 count 传递给 range() 函数,以生成一个迭代器,这样 for 循环就会运行 7 次。以下是修改后的代码:

# 初始化计数器
positive = 0
negative = 0
zero = 0

count = 7  # 要输入的数字数量

for i in range(count):  # 使用 range(count) 来迭代 7 次
    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:", positive)
print("Negative:", negative)
print("Zero:", zero)

解释:

  • range(count)range(count) 会生成从 0count-1 的数字序列。因为 count7,所以 range(7) 会生成 0, 1, 2, 3, 4, 5, 6 这 7 个数字。这样循环会执行 7 次,允许用户输入 7 个数字。
  • 计数器 (positive, negative, zero) 在开始时初始化,并且根据用户的输入在每次循环中更新。

修改后,程序应该可以按预期工作。

2024-11-11