Python 循环 - 用骰子确定箱车

Python Loops - Determining Box Cars with Dice

我需要编写一个程序来计算滚动 Box Cars (6+6) 需要多少次。

我在使用滚动计数器时遇到了问题。我无法获得循环遍历计数器和 return 主程序的滚动计数的功能。这是我目前所拥有的。

import random

roundCounter = 0
rollCounter = 0


def roll(die1,die2):
    nRolls = 0    
    print(die1, die2) # for testing purpose only
    while True:
        nRolls += 1
        if die1 == 6 and die2 == 6:
            break
        return nRolls

while True:
    roundCounter += 1
    die1 = random.randrange(1, 7)
    die2 = random.randrange(1, 7)
    roll(die1,die2)

    print('Round #', roundCounter, 'took', rollCounter, 'rolls')


    roll_again = input('Press Enter to go again, or q to quit:')
    if roll_again == 'q':
        break

我可以输出圆形计数器。下面是一个例子。

3 6
Round # 1 took 0 rolls
Press Enter to go again, or q to quit:
5 4
Round # 2 took 0 rolls
Press Enter to go again, or q to quit:
4 6
Round # 3 took 0 rolls
Press Enter to go again, or q to quit:
6 5
Round # 4 took 0 rolls
Press Enter to go again, or q to quit:
5 5
Round # 5 took 0 rolls
Press Enter to go again, or q to quit:
3 2
Round # 6 took 0 rolls
Press Enter to go again, or q to quit:
6 4
Round # 7 took 0 rolls
Press Enter to go again, or q to quit:

对我遗漏的东西有什么想法吗?

您的函数循环中有两个致命问题:

while True:
    nRolls += 1
    if die1 == 6 and die2 == 6:
        break
    return nRolls

首先是您 return 在第一个 lop 迭代中,而不是等待 boxcars 出现。

二是重掷失败; die1die2 被传递到函数中,函数将它们有效地视为常量:您永远不会更改它们。除非你恰好通过了一对 6,否则你会遇到第一个 return(第一个问题)。

作为一个人,您需要完成 您的 流程,并更加小心地使您的代码匹配。