【问题标题】:Keep getting TypeError: 'int' object is not iterable不断收到 TypeError: 'int' object is not iterable
【发布时间】:2016-01-09 09:07:40
【问题描述】:

我不断收到此错误: TypeError:'int' 对象不可迭代。

我需要做的任务(所以你对我想要实现的目标有一些背景知识)是这样的:“编写一个程序来创建 100 个随机整数,包括 -10 和 +10 之间的负数和正数(在一个for循环),然后确定有多少是正数,有多少是负数。最后,打印出有多少正数和多少负数。”

import random

positive = 0
negative = 0

for number in random.randrange(-10,10):
    if number > 0:
        positive += 1
    else:
        negative += 1
print ("End")

到目前为止,这是我的代码。如果有人可以帮助我使用上述信息和我的错误,那就太好了!

【问题讨论】:

  • 您正在迭代 number,这就是您收到错误的原因
  • 我查看了该链接,但没有帮助。如果有人能详细回答我,那就太好了。

标签: python python-3.x int


【解决方案1】:

random.randrange(-10,10) 创建单个随机整数,它不会自动创建 100 随机整数。因此,当您尝试这样做时 - for number in random.randrange(-10,10): - 当您尝试迭代一个不可能的整数时,它会出错。

我建议遍历 range(100) ,然后在循环中使用 random.randrange(-10,10) 。示例 -

for _ in range(100):
    number = random.randrange(-10,10)
    if number > 0:
        positive += 1
    else:
        negative += 1

【讨论】:

  • 谢谢,我做到了,它确实有效。会在一分钟左右给你功劳。
【解决方案2】:

random.randrange() 是一个返回单个随机数的函数。您的代码出错了,因为您随后尝试循环遍历该单个数字,就像它是可迭代的一样。

相反,您希望生成一个随机数 100 次,因此您的 for 循环应如下所示:

for i in range(100):
    number = random.randrange(-10,10)
    # do stuff with number...

【讨论】:

    【解决方案3】:

    random.randrange(-10,10)range(-10,10) 中返回一个随机数,该随机数不可迭代。 random.randrange(-10,10) for _ in range(100) 会做你想做的事。此外,您永远不会打印出正数和负数。

    【讨论】:

    • 谢谢你,你让我像其他人一样走上正轨!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2016-02-18
    • 2022-11-02
    • 2014-11-25
    • 2018-06-29
    • 2020-11-07
    • 2018-12-10
    相关资源
    最近更新 更多