Python 为什么';如果游戏玩了不止一次,我的功能不会退出吗?

Python 为什么';如果游戏玩了不止一次,我的功能不会退出吗?,python,python-3.x,Python,Python 3.x,我通过做一个简单的猜谜游戏来练习Python。它似乎工作得很好,但是如果用户玩了不止一次,那么即使回答再次玩,程序也不会退出?(是/否):是n。我认为这与递归有关,但我不确定如何修复它 有什么建议吗 (打印(键)只是为了快速赢得游戏进行调试。) 您将再次递归运行该函数,但调用后不会退出,因此当用户退出第二轮时,他将返回第一轮 您缺少的是调用run\u game后返回的return 前 如果重播=='y': 运行游戏() 返回 如果要使用递归多次运行游戏,则需要在递归调用后添加一个return。注

我通过做一个简单的猜谜游戏来练习Python。它似乎工作得很好,但是如果用户玩了不止一次,那么即使回答
再次玩,程序也不会退出?(是/否):
n
。我认为这与递归有关,但我不确定如何修复它

有什么建议吗

(打印(键)只是为了快速赢得游戏进行调试。)


您将再次递归运行该函数,但调用后不会退出,因此当用户退出第二轮时,他将返回第一轮

您缺少的是调用
run\u game
后返回的
return

如果重播=='y':
运行游戏()
返回

如果要使用递归多次运行游戏,则需要在递归调用后添加一个
return
。注意,递归是一种错误的方法。你应该使用一个外循环,最好分成一个单独的函数(即让
run\u game
运行一个游戏,让调用者询问你是否想再次玩)。如果用户输入的值不是
y
n
,您也应该采取合理的措施。
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()