Python骰子模拟

时间:2012-10-07 19:13:43

标签: 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 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”输入是什么,它都只返回一个随机整数值。这到底出了什么问题?

感谢任何帮助,谢谢。

3 个答案:

答案 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