定义一个函数骰子(n),它返回n个6面骰子随机卷的总和。此处显示的示例输出:
In []: dice(5)
Roll was 16
我似乎无法弄清楚这一点,甚至认为它可能相对简单。
def dice(n):
rolls = []
rolls += [random.choice([1,7])]
for rolls in range (n):
return 'Roll was', sum(rolls)
这是我尝试过的第三件事。但我仍然是编码的新手,所以我不知道如何解决它。我得到的错误代码是'int'对象不可迭代
答案 0 :(得分:1)
如果你尝试一下,这很容易:
def dice(number_of_dice):
final_sum = 0
for i in range(0,number_of_dice):
final_sum += random.randint(1,6)
return final_sum
答案 1 :(得分:0)
import random
def dice(n):
return sum(random.randint(1,6) for _ in range(n))
答案 2 :(得分:0)
>>> from random import randint
>>> dice_item = lambda: randint(1, 6)
>>>
>>> def dice(n):
... return sum(dice_item() for y in range(n))
>>> dice(5)
19
答案 3 :(得分:0)
random.choice([1,7])
从列表[1,7]
中选择一个随机元素。 random.randint(1,6)
将为您提供1到6之间的随机数。
您应该执行rolls += ...
。
rolls.append(...)
然后,当您执行for
循环时,您正在重用名称rolls
,这将取消之前的值。
另外,你应该在for
循环中掷骰子,然后计算该循环之外的总和
def dice(n):
rolls = []
for _ in range(n):
rolls.append(random.randint(1, 6))
return sum(rolls)
答案 4 :(得分:0)
这可能是也可能不是编码的正确方法,但这就是我最终的结果。
def dice(n):
print 'Roll was', sum([random.randrange(1,7) for _ in range(n)])
谢谢大家的帮助。
答案 5 :(得分:0)
我希望这样做:
import numpy as np
def dice(n):
rolls = np.random.randint(5, size = (1, n)) + 1
return rolls.sum()
if __name__ == '__main__':
dice(10)