Python骰子模拟
我被一个模拟掷骰子的家庭作业问题卡住了。该问题要求创建一个返回1到6之间的随机整数值的函数,并创建一个主程序,询问用户要掷多少骰子(必须限制为5个骰子),并调用该函数打印生成的值。到目前为止,我有:Python骰子模拟,python,random,dice,Python,Random,Dice,我被一个模拟掷骰子的家庭作业问题卡住了。该问题要求创建一个返回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 d
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)
运行程序时,无论“骰子数”输入是多少,它只返回一个随机整数值。这里到底出了什么问题
非常感谢您的帮助。一旦您的
dice
函数执行并第一次遇到return
语句,它将返回,而不继续for
循环的其余部分
要解决此问题,可以在dice
中声明一个局部变量,该变量保存要返回的多个结果。使用如下语句
retval = []
retval.append(...)
return retval
(我将留待你来填空。)
Python的一个更高级的用法是使用
yield
语句从一种称为生成器的特殊函数返回一个值,该函数可以记住它的位置,以后可以重新启动。但是,在使用诸如yield
之类的功能之前,有必要牢牢掌握基本知识。一旦dice
函数执行并第一次遇到return
语句,它将返回,而不必继续for
循环的其余部分
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
要解决此问题,可以在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")
对于2d6中的d等
for _ in range (int(prefix)):
print (random.randint(1, int(suffix)))
你使用这样的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)))
return语句将在第一次进入循环后立即返回。return语句将在第一次进入循环后立即返回。不应该为家庭作业问题编写代码~我所做的只是为他更改了一个术语不应该为家庭作业问题编写代码~我所做的只是更改了一个他用的术语谢谢你的提示,我把所有的数字加在一个变量中,然后像你说的那样返回这个变量。谢谢你的提示,我把所有的数字加在一个变量中,就成功了,然后像你说的那样返回这个变量。你还必须把打印语句放在缩进的最后一行。你还必须把打印语句放在缩进的最后一行