from random import randint
number_of_trials = 100
range_of_random_numbers = 1000
for each in number_of_trials:
print randint(range(range_of_random_numbers))
我是python的初学者。当我尝试运行上面的代码时,我收到错误:
TypeError:' int'对象不可迭代
我试图从一个范围(在range_of_numbers中定义)中获取一个随机数来打印一定次数(在number_of_trials中定义)。请帮忙,我做错了什么?
答案 0 :(得分:2)
使用range
创建一个可迭代的列表(如果你使用的是Python 2.x),它将用于迭代。
你需要将两个整数传递给random.randint
,而不是一个可整合的(或列表):
from random import randint
number_of_trials = 100
range_of_random_numbers = 1000
for each in range(number_of_trials):
print randint(0, range_of_random_numbers)
答案 1 :(得分:1)
我认为您想要使用的是选择。
from random import choice
然后改变
print randint(range(range_of_random_numbers))
到
print choice(range(range_of_random_numbers))
选择函数将从非空序列中随机选取一个元素。
答案 2 :(得分:0)
代码中有一个问题和一个建议 -
你正在做 - for each in number_of_trails:
- 这是错误的,你试图迭代一个整数,你应该这样做 - for each in range(number_of_trails):
。
这里最好用的是random.choice()
(而不是randint()
)。特别是如果range_of_random_numbers
不连续。
示例 -
from random import choice
number_of_trials = 100
range_of_random_numbers = 1000
for each in range(number_of_trials):
print choice(range(range_of_random_numbers))
来自documentation of random.choice()
-
从非空序列seq中返回一个随机元素。
答案 3 :(得分:0)
应该是
from random import randint
number_of_trials = 100
range_of_random_numbers = 1000
for each in range(number_of_trials):
print randint(range(range_of_random_numbers))
由于int对象不可迭代,因此得到错误:
即)
for a in 1:
print a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable