【问题标题】:TypeError: 'float' object not iterableTypeError:“浮动”对象不可迭代
【发布时间】:2011-12-28 12:48:25
【问题描述】:

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

现在我从一本 python 教程书中接受了这个挑战,但他们没有答案,据我所知,我已经按照他们提出的语法完成了所有工作。

The tutorial is here (PDF)

【问题讨论】:

  • for i in count 不在您附加的教程中。
  • 请使用print(...) 而不是print (...)。在 Python 3 中,print 是一个函数,因此在格式化它时将其与任何其他函数一样对待。 (PEP 8 还希望您将 a=ba+=b 更改为 a = ba += b。)
  • 您还需要初始化您尝试打印的三个变量:即将zero = positive = negative = 0 放在循环之前。
  • @cwallenpoole 我可能没有正确表达我的问题,我试图完成第 3.3 节中的问题 13(该 pdf 中的第 35 页),我认为我使用了正确的语法(我从中学到了该 pdf 上的其他页面)但正如 Chris Morgan 指出的那样,我缺少范围函数 ChrisMorgan 我将立即开始删除空格,再次感谢您的帮助 ekhumoro 谢谢我现在就这样做

标签: python for-loop floating-point python-3.x


【解决方案1】:

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

for i in range(count):

【讨论】:

  • 然后我们得到:TypeError: 'float' object cannot be mapped as an integer
  • 多年后它仍然有帮助。谢谢,@Thomas K
【解决方案2】:

使用

范围(计数)

int 和 float 不可迭代

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-24
    • 2023-03-09
    • 2014-03-16
    • 1970-01-01
    • 2018-05-15
    • 2013-09-01
    • 2017-08-27
    • 2018-10-10
    相关资源
    最近更新 更多