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

数字猜谜游戏问题排查:猜测次数未递减或while循环条件失效?

数字猜谜游戏问题修复

核心问题分析

  • 循环条件逻辑错误:原代码用rightnumber1 != True or guesses != 0作为循环判断条件,这会导致两种异常情况:

    • 就算猜对数字(rightnumber1为True),只要剩余次数不为0,循环会继续执行
    • 次数用完后(guesses为0),只要没猜对,循环会无限运行
      正确的循环逻辑应该是没猜对且还有剩余次数,即not rightnumber1 and guesses > 0
  • 输入异常未处理:当用户输入非整数内容时,int(input(...))会直接抛出错误导致程序崩溃,猜测次数无法正常递减

  • 无效分支存在:原代码的else分支永远不会触发,因为if和elif已经覆盖了数字相等/不等的所有情况

修复后的代码

import random

def guess_func():
    numberrange1 = random.randint(1, 100)
    rightnumber1 = False
    guesses = 3
    # 修正循环条件:未猜对且还有次数才继续
    while not rightnumber1 and guesses > 0:
        try:
            numberguess1 = int(input('范围已设定,请输入猜测的数字:'))
            if numberguess1 == numberrange1:
                print('恭喜你,猜对了!')
                rightnumber1 = True
            else:
                guesses -= 1
                if numberrange1 > numberguess1:
                    print(f'猜小了!剩余次数:{guesses}')
                else:
                    print(f'猜大了!剩余次数:{guesses}')
                # 次数耗尽时提示正确答案
                if guesses == 0:
                    print(f'次数用完了,正确数字是:{numberrange1}')
        except ValueError:
            print('请输入有效的整数!')
            # 输入错误不消耗猜测次数

修复说明

  1. 调整循环条件,确保只有未猜对且还有剩余次数时才继续游戏
  2. 加入try-except捕获输入非整数的异常,避免程序崩溃,且输入错误不扣除次数
  3. 简化分支逻辑,移除无效的else分支
  4. 每次猜错后显示剩余次数,次数耗尽时主动告知正确答案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:00:58