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

如何修复猜数字函数中的无限循环及初始猜测打印问题?

猜数字函数问题修复方案

问题1:无限循环的原因

你的代码里x只在循环前获取一次输入,进入while循环后没有重新获取用户的新输入,也没有根据新范围生成新的猜测数字。只要第一次输入不是y,循环就会一直重复执行相同逻辑,永远跳不出去。

问题2:初始猜测值无法打印的问题

要打印初始猜测值,只需在第一次调用input()之前加上print(num),让用户在输入反馈前就能看到电脑的初始猜测。

修复后的完整代码

from random import randint  # 原代码缺少该导入,会导致randint未定义报错

def guess_a_number():
    lower = 0
    higher = 100
    num = randint(lower, higher)
    print(f"我猜的数字是:{num}")  # 打印初始猜测值
    x = input("数字更大请输入+,更小请输入-,正确请输入y:")

    while x != "y":
        if x == "+":
            lower = num + 1  # 基于当前猜测值调整范围,而非原范围+1
            num = randint(lower, higher)
        elif x == "-":
            higher = num - 1  # 基于当前猜测值调整范围,而非原范围-1
            num = randint(lower, higher)
        else:
            print("输入无效,请输入+、-或y")
        print(f"我猜的数字是:{num}")
        x = input("数字更大请输入+,更小请输入-,正确请输入y:")  # 重新获取用户输入

    print("yay :D")
    print(f"猜对了!数字就是{num}")

guess_a_number()  # 调用函数执行逻辑

关键修改点

  • 补充from random import randint导入语句,解决函数未定义报错
  • 在首次输入前打印初始猜测值,解决初始值无法显示的问题
  • 每次循环内基于当前猜测值调整范围,并重新生成新的猜测数字,优化范围缩小逻辑
  • 循环末尾重新获取用户输入,避免无限循环
  • 增加无效输入的提示逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:41:03