Почему моя функция не закрывается, если в игру играют более одного раза? - PullRequest
0 голосов
/ 06 ноября 2019

Я практикую Python, делая простую игру в догадки. Кажется, это работает хорошо, однако, если пользователь играет более одного раза, программа не закроется, даже если ответ на Play again? (y/n): будет n. Я думаю, что это связано с рекурсией, но я не уверен, как это исправить.

Есть какие-нибудь указатели?

(print(key) был просто для того, чтобы выиграть игру быстро для отладки.)

import random

def guess():
    while True:
        get = input("Enter a number between 1 and 9: ")
        try:
            num = int(get)
            break
        except ValueError:
            print("Please input an integer.")
    return num

def run_game():
    count = 0
    key = random.randint(1, 9)
    replay = None
    print(key)
    while True:
        num = guess()
        count += 1
        if num == key:
            print("Correct!")
            print("Total guesses:", count)
            replay = input("Play again? (y/n): ")
            if replay == 'y':
                run_game()
            elif replay == 'n':
                print("Thanks for playing!")
                return
        elif num > key:
            print("Too high!")
        else:
            print("Too low!")

run_game()

1 Ответ

0 голосов
/ 06 ноября 2019

Вы снова запускаете функцию рекурсивно, но не выходите после вызова, поэтому, когда пользователь выходит из второго раунда, он возвращается к первому раунду.

Чего вам не хватаетreturn после вашего звонка на run_game.

напр.

if replay == 'y':
  run_game()
  return
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...