我在 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。我该如何解决此错误?
问题出在你使用了 for i in count,其中 count 是一个整数。for 循环需要一个可迭代对象(如列表、元组或 range),而整数 7 不是一个可迭代对象,因此会导致 TypeError: 'float' object is not iterable 错误。
for i in count
count
for
range
7
要解决这个问题,你需要将 count 传递给 range() 函数,以生成一个迭代器,这样 for 循环就会运行 7 次。以下是修改后的代码:
range()
# 初始化计数器 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)
0
count-1
range(7)
0, 1, 2, 3, 4, 5, 6
positive
negative
zero
修改后,程序应该可以按预期工作。