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

随机数字猜谜程序无法根据高低提示筛选数字问题求助

问题分析与修复方案

你的猜数字程序无法根据反馈调整猜测范围,核心问题集中在语法错误、逻辑错误和细节遗漏上:

  • 字符串方法调用错误:info = info.lower未加括号,实际是把lower方法对象赋值给了info,而非将输入转为小写字符串,导致后续条件判断全部失效。
  • 范围调整逻辑错误:high =+ guess和low =+ guess是语法误用,正确逻辑应为:
    • 用户反馈"high"(猜测值过高):正确数字在当前猜测值之下,需把上限设为guess - 1
    • 用户反馈"low"(猜测值过低):正确数字在当前猜测值之上,需把下限设为guess + 1
  • 缺少循环终止条件:用户输入"yes"确认猜对后,程序未跳出循环,会继续执行下一次猜测
  • 缺失模块导入:代码使用random.randint但未导入random模块,运行会直接报错
  • 输入校验存在风险:main函数用递归处理非法输入,多次错误输入可能触发栈溢出,改用循环更安全

修复后的完整代码

import random

def main():
    while True:
        try:
            number = int(input("Enter a number between 1-100: "))
            if 1 <= number <= 100:
                guesser(number)
                break
            else:
                print("Please pick a number between 1-100")
        except ValueError:
            print("Please enter a valid integer")
    
def guesser(number):
    low = 1
    high = 100
    guess = 0
    while guess != number:
        guess = random.randint(low, high)
        info = input(f"Is {guess:2d} low, high, or yes? ").strip().lower()
        if info == "high":
            high = guess - 1
        elif info == "low":
            low = guess + 1
        elif info == "yes":
            print("Yay! I guessed it right!")
            break
        else:
            print("Please enter 'low', 'high', or 'yes'")

关键修复点说明

  1. 补充模块导入:开头添加import random,确保随机数生成功能正常
  2. 修正字符串处理:改为info.strip().lower(),同时去除输入两端空白字符,提升输入容错性
  3. 修正范围调整逻辑:
    • 猜测过高时收缩上限:high = guess - 1
    • 猜测过低时抬升下限:low = guess + 1
  4. 添加终止逻辑:用户输入"yes"后执行break跳出循环,结束猜测流程
  5. 优化输入校验:用while True循环+try-except处理非整数输入,避免递归栈溢出,同时覆盖所有非法输入场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:57:28