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

Python猜词游戏重启后生命值不重置、答对判定异常问题求助

问题根因

你的代码核心问题出在递归调用的逻辑设计上:

  • 当玩家耗尽机会选择重启时,你直接递归调用question1(),新启动的游戏流程结束后,会回到上一层旧的函数执行上下文,旧上下文里out_of_guesses仍为True,会直接结束整个程序,所以才会出现答对题也提示游戏结束的情况。
  • 另外当前代码答对题目后仅打印提示,没有处理下一题的跳转逻辑,while循环会直接终止,函数返回后也会回到上一层递归的结束逻辑,和上面的问题叠加就出现了你说的异常。
优化修复方案

建议把游戏的全局控制逻辑从递归改成循环,避免递归带来的上下文残留问题,同时把题目逻辑抽成通用配置,方便后续新增题目不需要改核心逻辑。

修改后的可运行代码如下:

# 题目配置,后续新增题目直接在列表里加字典即可
QUESTIONS = [
    {
        "prompt": "Are you idiot?: ",
        "answer": "yes"
    },
    # 这里可以加第二题、第三题,示例:
    # {
    #     "prompt": "2+2等于几?: ",
    #     "answer": "4"
    # }
]
GUESS_LIMIT = 3

def run_game():
    while True:
        # 每轮游戏从头开始,所有状态重置
        current_question_idx = 0
        total_questions = len(QUESTIONS)
        
        while current_question_idx < total_questions:
            current_q = QUESTIONS[current_question_idx]
            guess_count = 0
            out_of_guesses = False
            guess = ""
            
            while guess != current_q["answer"] and not out_of_guesses:
                if guess_count < GUESS_LIMIT:
                    guess = input(current_q["prompt"]).lower()
                    if guess == current_q["answer"]:
                        print("correct! Next question:")
                        current_question_idx += 1
                    else:
                        guess_count += 1
                        if guess_count < GUESS_LIMIT:
                            print("Try again")
                else:
                    out_of_guesses = True
            
            if out_of_guesses:
                break
        
        # 走到这里要么是答完所有题,要么是耗尽机会
        while True:
            restart = input("Game over, want to start over?: ").lower()
            if restart == "yes":
                break
            elif restart == "no":
                exit()
            else:
                print("Its yes or no.")

if __name__ == "__main__":
    run_game()
改动说明
  • 所有题目抽成统一的配置列表,后续新增题目只需要加配置项,不需要修改核心游戏逻辑,符合你复用代码的需求
  • 用外层循环控制整轮游戏的启停,不需要递归调用,每轮游戏启动时所有状态(生命值、当前题目序号)都会重置,不会出现状态残留的问题
  • 答对题目后自动索引到下一题,全部答完也会触发重启询问

内容的提问来源于stack exchange,提问作者Loss1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:12:07