1

我有点卡在模拟掷骰子的家庭作业问题上。问题要求创建一个函数,返回一个从 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”输入是什么,它都只返回一个随机整数值。这里到底有什么问题?

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

4

3 回答 3

4

一旦您的dice函数执行并return第一次遇到该语句,它就会返回而不继续for循环的其余部分。

要解决此问题,您可以在内部声明一个局部变量dice,其中包含您要返回的多个结果。使用类似的语句

retval = []

retval.append(...)

return retval

(我会留给你来填补空白。)

Python 的更高级用法包括使用该语句从一种称为generatoryield的特殊函数返回单个值,该函数会记住它的位置,并且可以稍后重新启动。但是,在使用.yield

于 2012-10-07T19:14:50.620 回答
0
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

now you can access dice like a list ...

于 2012-10-07T19:15:25.407 回答
0

你使用这样的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")

对于 2d6 中的 d 等

    for _ in range (int(prefix)):

      print (random.randint(1, int(suffix)))
于 2018-01-08T05:19:01.807 回答