Python文本冒险游戏while循环无法终止问题求助
解决文本冒险游戏无法终止的问题
你的代码核心问题是递归和while循环混用,输入错误时会不断叠加递归栈,就算输入"n",上层的递归函数还卡在while循环里没法正常终止;另外while里的pass完全无效,会导致循环无限执行。
给你两种可行的修正方案:
方案1:用循环替代递归(更稳妥,避免递归栈溢出)
def GAME_RESTART(): while True: i = input("would you like to play again?(y/n)") if i == "y": Game() # 假设Game()执行完毕后会回到此处 break elif i == "n": print_pause("YOU'VE COME TO AN END!") print_pause("Hopefully the game finds you well") break # 跳出循环,函数执行完毕,游戏终止 else: print_pause("Incorrect input. Please choose (y/n)")
方案2:修正递归逻辑(移除多余的while循环)
def GAME_RESTART(): i = input("would you like to play again?(y/n)") if i == "y": Game() GAME_RESTART() # 一局游戏结束后再次询问是否重启 elif i == "n": print_pause("YOU'VE COME TO AN END!") print_pause("Hopefully the game finds you well") # 此处无需额外代码,函数执行完毕自动返回,程序终止 else: print_pause("Incorrect input. Please choose (y/n)") GAME_RESTART() # 输入错误时重新调用自身,而非用循环卡住
两种方案都能解决终止问题:
- 方案1用
while True统一处理输入验证,输入正确就通过break跳出循环,函数正常结束后程序自然终止。 - 方案2去掉了冗余的
while循环,输入错误时直接递归调用自身,输入"n"时函数无残留逻辑,执行完毕后自动终止程序。
内容的提问来源于stack exchange,提问作者Zeina
相关产品推荐
相关产品推荐

