不使用列表实现二分法猜数字算法切换反馈时返回重复值问题
问题原因
代码中对用户反馈的条件判断逻辑被重复编写了两次,每次输入一次反馈会连续触发两次猜测值和边界的更新,直接破坏了二分法的区间收缩逻辑,这是交替输入高低反馈后数值不变的核心原因。
修正方案
- 删除重复的条件判断块,每个用户反馈仅执行一次更新
- 调整更新顺序为「先收缩边界→再计算新的猜测值」,符合标准二分法实现逻辑
- 避免使用Python内置函数名
min、max作为自定义变量名,防止潜在冲突
修正后代码
upper = int(input("请输入最大值:")) lower = int(input("请输入最小值:")) proposition = (lower + upper) // 2 print(proposition) reponse = "" while reponse != "juste": reponse = input("猜测值是过高、过低还是正确?请输入 tropgrand/troppetit/juste:") if reponse == "tropgrand": # 猜测过高,收缩上边界 upper = proposition - 1 proposition = (lower + upper) // 2 print(proposition) elif reponse == "troppetit": # 猜测过低,收缩下边界 lower = proposition + 1 proposition = (lower + upper) // 2 print(proposition)
内容的提问来源于stack exchange,提问作者Terminatroll
相关产品推荐
相关产品推荐

