如何在Python猜数字程序中用二分查找替代终端手动输入猜数
猜数字程序自动求解实现方案
原参考代码问题修正
原参考代码存在两处可运行性错误,需先调整:
- random模块无
ranNum方法,正确的随机数生成方法为randint - 比较逻辑中引用的变量
v未定义,应为当前猜测值g
自动求解实现思路
采用二分查找算法实现自动定位目标数字,是当前场景下的最优解法:对于0~999的数字范围,最多仅需10次猜测即可命中,远高于随机猜测效率。
核心逻辑步骤:
- 初始化查找边界:最小可能值
low = 0,最大可能值high = 999 - 每次取当前范围的中间值作为猜测值
- 根据偏大/偏小的反馈调整边界,缩小查找范围,直到命中目标数字
完整可运行代码
from random import randint # 生成0~999范围内的随机目标数,如需调整范围可修改参数 target = randint(0, 999) # 初始化二分查找边界 low = 0 high = 999 guess_times = 0 while True: guess_times += 1 # 取当前区间中间值作为猜测值 current_guess = (low + high) // 2 print(f"第{guess_times}次猜测:{current_guess}") if current_guess == target: print(f'恭喜猜中!总猜测次数:{guess_times}') break elif target < current_guess: print("偏小") # 目标值更小,调整上边界 high = current_guess - 1 else: print("偏大") # 目标值更大,调整下边界 low = current_guess + 1
运行说明
- 代码运行后无需任何手动输入,将自动完成全流程猜测,直到命中目标
- 若需要调整目标数字的生成范围,同步修改
randint的参数和low/high的初始值即可 - 示例代码已将提示改为中文,如需保留英文提示,替换对应print内容即可
内容的提问来源于stack exchange,提问作者lmquan
相关产品推荐
相关产品推荐

