Python Loops - Определение автомобилей с кубиками - PullRequest
0 голосов
/ 17 марта 2020

Мне нужно написать программу, которая будет подсчитывать, сколько бросков требуется, чтобы бросить Автомобили с коробками (6 + 6).

Я спотыкаюсь о счетчик роллов. Я не могу получить функцию l oop через счетчик и вернуть счетчик бросков в основную программу. Это то, что у меня есть.

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:

Есть мысли о том, что мне не хватает?

1 Ответ

0 голосов
/ 17 марта 2020

У вас есть две фатальные проблемы в функции l oop:

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

Первое - вы возвращаетесь на первой итерации цикла, а не ждете появления boxcars.

Во-вторых, вы не можете перебросить кости; die1 и die2 передаются в функцию, которая эффективно обрабатывает их как константы: вы никогда не меняете их. Если вам не удалось пройти пару 6 с, вы попадете в первую return (первая проблема).

Для этого вам нужно пройти через ваш процесс , как человеческое существо, и будьте более осторожны, чтобы ваш код соответствовал.

...