我有点卡在模拟滚动骰子的作业问题上。问题要求创建一个从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”输入是什么,它都只返回一个随机整数值。这到底出了什么问题?
感谢任何帮助,谢谢。
答案 0 :(得分:4)
只要您的dice
函数第一次执行并遇到return
语句,它就会在不继续for
循环的其余部分的情况下返回。
要解决此问题,您可以在dice
内声明一个包含要返回的多个结果的局部变量。使用
retval = []
retval.append(...)
return retval
(我会留给你填写空白。)
Python的更高级用法包括使用yield
语句从称为 generator 的特殊函数中返回单个值,该函数会记住它的位置,以后可以重新启动。但是,在使用yield
之类的功能之前,有必要牢牢掌握基础知识。
答案 1 :(得分: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
现在您可以像列表一样访问骰子......
答案 2 :(得分:0)
你使用像这样的while循环
for _ in range (int(prefix)):
print (random.randint(1, int(suffix)))
表示2d6等中的d
def removeLinkedList(node, value):
if not node:
return node
elif node.val == value:
return removeLinkedList(node.next,value)
else:
node.next = removeLinkedList(node.next, value)
return node