如何修复猜数字函数中的无限循环及初始猜测打印问题?
猜数字函数问题修复方案
问题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
相关产品推荐
相关产品推荐

