始终收到 TypeError: 'int' object is not iterable 错误

5
我一直在收到这个错误: TypeError:“int”对象不可迭代。
我的任务是(为了让您了解我想要实现什么),“编写一个程序,在for循环中创建100个随机整数,包括负数和正数,范围在-10到+10之间,然后确定有多少个是正数,有多少个是负数。最后,打印出有多少个数字是正数,有多少个数字是负数。”
import random

positive = 0
negative = 0

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

这是我目前的代码。如果有人能够利用上述信息和我的错误来帮助我,那就太好了!


你正在迭代 number,这就是为什么你会收到一个错误。 - sam
可能是重复的问题:int object is not iterable? - Daniel Brose
我看了那个链接,但它并没有帮助到我。如果有人能够详细回答我的问题,那就太好了。 - Nan N
3个回答

2

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

谢谢,我做了这个,它实际上起作用了。一会儿就会给你信用。 - Nan N

1

random.randrange(-10,10) 返回 range(-10,10) 中的一个随机数,该范围不可迭代。 random.randrange(-10,10) for _ in range(100) 可以实现你想要的功能。此外,您从未打印出正数和负数的计数。


谢谢你,你让我走上了正确的道路,就像其他人一样!再次感谢! - Nan N

1

random.randrange()是一个返回单个随机数的函数。你的代码出错是因为你尝试像可迭代对象一样循环遍历这个单个数字。

相反,你想要生成100个独立的随机数,所以你的for循环应该像这样:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接