Python中(n)Dice的总和

时间:2016-12-21 16:06:16

标签: python

  

定义一个函数骰子(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'对象不可迭代

6 个答案:

答案 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)