Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python骰子模拟_Python_Random_Dice - Fatal编程技术网

Python骰子模拟

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

我被一个模拟掷骰子的家庭作业问题卡住了。该问题要求创建一个返回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) 
运行程序时,无论“骰子数”输入是多少,它只返回一个随机整数值。这里到底出了什么问题


非常感谢您的帮助。

一旦您的
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语句将在第一次进入循环后立即返回。不应该为家庭作业问题编写代码~我所做的只是为他更改了一个术语不应该为家庭作业问题编写代码~我所做的只是更改了一个他用的术语谢谢你的提示,我把所有的数字加在一个变量中,然后像你说的那样返回这个变量。谢谢你的提示,我把所有的数字加在一个变量中,就成功了,然后像你说的那样返回这个变量。你还必须把打印语句放在缩进的最后一行。你还必须把打印语句放在缩进的最后一行