You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 01:02:05