我有点停留在一个家庭作业问题,模拟滚动骰子。 该问题询问创建返回一个随机整数值从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”输入是什么。 究竟什么是错在这里?
任何帮助表示赞赏,感谢。
只要你的dice
函数执行时,看到return
,第一次声明,它返回不继续的,其余for
循环。
为了解决这个问题,你可以声明中的局部变量dice
保存要返回多个结果。 使用类似的语句
retval = []
retval.append(...)
return retval
(我将让你来填补空白。)
更先进的使用Python的涉及使用的yield
语句从一种特殊的函数调用发电机 ,它可以记住它在哪里,以后可以重新返回一个值。 然而,这是值得使用类似功能之前获得基础知识牢固掌握yield
。
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
现在你可以访问骰子像列表...
您可以使用这样一个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)))