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

Python猜数字项目BUG排查:5次猜错未触发Game Over仍停留在当前关卡

问题根源

  • 核心错误是for循环的else块缩进错误:你当前把else和判断猜测结果的elif同级对齐,Python会认为这个else是if...elif...else分支的一部分,只有当猜测值既不等于、也不小于、也不大于秘密数字时才会触发,这个逻辑永远不可能成立,所以5次猜错后永远走不到游戏结束的分支。
  • Python中for循环的else块必须和for关键字同级对齐,只有当for循环完整执行完所有迭代(没有被break打断)时才会触发,刚好对应5次全部猜错的场景。
  • 额外的小问题:
    1. 游戏结束提示的格式化字符串参数错误,总得分应该取points_scored不是points[counter]
    2. 游戏结束后需要把level置为0,才能跳出外层的while level !=0循环
    3. quit()语句缩进错误,比上一行代码少1个缩进位

修复后的完整代码

from random import randint
level = 1
points = [100,75,50,25,10]
points_scored = 0
play = True
while play:
    while level != 0:
        end_value = level * 10
        secret_number = randint(1, end_value)
        for counter in range(0, 5):
            # 获取用户输入的猜测数字
            guess_number = int(input(f"请输入1到{end_value}之间的数字,你还有{5-counter}次机会:"))
            # 判断猜测结果
            if secret_number == guess_number:
                print(f"恭喜你猜对了!你通过了第{level}关,获得{points[counter]}积分")
                points_scored += points[counter]
                level += 1
                break
            elif guess_number < secret_number:
                print("你猜的数字比秘密数字小")
            elif guess_number > secret_number:
                print("你猜的数字比秘密数字大")
        # 此处else和for同级,5次全部猜错才会触发
        else:
            print(f"游戏结束!秘密数字是{secret_number},你的总积分为{points_scored}")
            # 把level置为0,跳出外层关卡循环
            level = 0
            break
    else:
        print(f"恭喜你通关了!总积分为{points_scored}!!!")
        again = input("你想再玩一次吗?请输入yes或no:")
        if again == "no":
            play = False
            quit()

内容的提问来源于stack exchange,提问作者Laiba Ijaz Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:09:01