0

我试图在掷骰子时使用while循环而不是循环。for我认为不elif正确,但我无法弄清楚如何在其中使用while循环。这是我到目前为止所拥有的:

import random

def rolldiewhileloop():
    number = 10
    one = 0
    two = 0
    three = 0
    four = 0
    five = 0
    six = 0
    while number > 0:
        flip = int(random.random() * 6)
        if(flip == 1):
            one = one + 1
        elif flip == 2:
            two = two + 1
        elif flip == 3:
            three = three + 1
        elif flip == 4:
            four = four + 1
        elif flip == 5:
            five = five + 1
        elif flip == 6:
            six = six + 1

    return [one, two, three, four, five, six]
4

2 回答 2

6

在您当前的 while 循环中,您不会更改 的值number,因此这将是一个无限循环。由于您从 10 开始并且循环直到number小于或等于零,因此您可能应该在每次迭代时减一:

number = 10
while number > 0:
    number -= 1
    # the rest of the loop

注意number -= 1相当于number = number - 1

作为旁注,random.random()与其将结果相乘,不如使用random.randint(1, 6). 此外,由于您已经返回一个数组,因此创建一个结果列表并修改它会更像 Pythonic,而不是为每种可能性创建一个单独的变量。例如:

def rolldiewhileloop():
    results = [0] * 6
    number = 10
    while number > 0:
        number -= 1
        flip = random.randint(1, 6)
        results[flip-1] += 1
    return results
于 2013-10-04T20:05:33.057 回答
1

您需要在 while 循环的每次传递中递减数字。放在number -= 1while 循环的最后一行。

于 2013-10-04T20:04:27.577 回答