我想写一个程序,可以打印10个随机骰子卷。这是我的密码:
import itertools
from random import randint
def gen_rndtup(n):
a = randint(1,n-1)
b = randint(1, n-2)
yield (a, b)
if __name__=='__main__':
n = 7
dice_roll = itertools.islice(gen_rndtup(n), 10)
print(list(dice_roll))
这是我得到的输出:[(4, 2)]
(很明显,由于随机数生成器,每次的数字都不同)。你知道吗
根据我在the documentation中读到的内容,itertools.islice(gen_rndtup(n), 10)
应该返回由gen_rndtup(n)
生成的前10个元组,那么为什么它只返回一个呢?你知道吗
因为
gen_rndtup
只产生一个元组。如果您想gen_rndtup
给您多个值,您需要它yield
多次(通过使用多个yield
语句或将yield
放入某种循环)。你知道吗生成器生成一个结果,然后停止生成结果。你知道吗
将产生你所期望的结果
相关问题 更多 >
编程相关推荐