Python的骰子模拟(Python dice simulation)

2019-08-01 05:19发布

我有点停留在一个家庭作业问题,模拟滚动骰子。 该问题询问创建返回一个随机整数值从1到6的功能,并且创建询问用户多少骰子翻滚(必须限制在5个骰子)一个主程序,并调用打印所产生的功能值。 到目前为止,我有这样的:

import random

def dice(number_of_dice):
    for i in range(0,number_of_dice):
        return random.randint(1,6)


number_of_dice = input("How many dice would you like to roll? ")
while number_of_dice >5:
    number_of_dice = input("You may only have a limit of 5 dice, enter a number under 5. " )
print dice(number_of_dice) 

运行程序时,它只返回一个随机整数值,无论“number_of_dice”输入是什么。 究竟什么是错在这里?

任何帮助表示赞赏,感谢。

Answer 1:

只要你的dice函数执行时,看到return ,第一次声明,它返回不继续的,其余for循环。

为了解决这个问题,你可以声明中的局部变量dice保存要返回多个结果。 使用类似的语句

retval = []

retval.append(...)

return retval

(我将让你来填补空白。)

更先进的使用Python的涉及使用的yield语句从一种特殊的函数调用发电机 ,它可以记住它在哪里,以后可以重新返回一个值。 然而,这是值得使用类似功能之前获得基础知识牢固掌握yield



Answer 2:

def dice(number_of_dice):
    for i in range(0,number_of_dice):
        yield random.randint(1,6)  #yield will successivly return as opposed to just return

现在你可以访问骰子像列表...



Answer 3:

您可以使用这样一个while循环

import random

from random import randint

while True:

  dice = input("how many dice would you like to roll?")

    prefix, middle, suffix = dice.partition("d")

为d的2D6等

    for _ in range (int(prefix)):

      print (random.randint(1, int(suffix)))


文章来源: Python dice simulation