Количество камней несовместимо, игра ним

Проблема в том, что количество камней, которые берет компьютер, отличается от количества, отображаемого на экране. Я знаю, это потому, что функция повторяется дважды. Но я не могу найти способ сохранить сгенерированное случайное число и использовать это число для печати И вычитания [Также я знаю, что это можно сделать без использования функций, но это необходимо]

Вот код:

      import random
stones = random.randint(15, 30)
turn = 0

while stones > 0:
    if turn == 0:
        def player_announce():
            print('There are', stones, 'stones. How many would you like?', end=' ')
        def invalid_entry():
            print('Enter a number from 1-3.')
        player_announce()
        player_stones = int(input(''))
        if player_stones > 3 or player_stones < 1:
            invalid_entry()
        else:
            stones = stones - player_stones
            turn = 1
    else:
        def draw_stones():
            computer_stones = random.randint(1, 3)
            return computer_stones
        print('There are', stones, 'stones. The computer takes', draw_stones())
        stones -= draw_stones()
        turn = 0
if turn == 0:
    print('The computer beats the player!')
else:
    print('The player beats the computer!')

1 ответ

Простой ответ — вызвать draw_stones один раз и сохранить результат:

      computers_stones = draw_stones()
print('There are', stones, 'stones. The computer takes', computers_stones)
stones -= computers_stones

Как только вы заработаете, я советую вам попросить кого-нибудь прочитать все это для вас, есть много вещей, которые вы могли бы сделать лучше!

Другие вопросы по тегам