python - 使用 python 进行二进制搜索和值检查
问题描述
我正在尝试在 python 中实现二进制搜索算法,所以我的目标是实现三件事:
二分搜索(到中间,然后向上或向下等等)
一个跟踪所有使用过的猜测的列表,这样它们就不会重复
根据用户提供的信息确定最小值和最大值的两个变量(例如:值大于 50)
我能够进行二分搜索,但它本身效率不高,所以我需要实现另外两个才能使其正常工作。我目前被困在清单上。
有我的主要功能,称为猜测
`def猜测器(最大值,最小值):
global guess
rightOrNot = str(input(f"is you number {round(guess)}?[yes/no]"))[0]
if rightOrNot in "yY":
print("thanks for playing")
exit()
else:
usedNumbers.append(guess)
goHigherOrLower = str(input("is you number higher or lower?"))[0]
if goHigherOrLower in "lL":
if guess < maximum:
maximum = guess
guess = adjustGuess(guess, maximum, minimum, goHigherOrLower)
guesser(guess, maximum)
elif goHigherOrLower in "hH":
if guess > minimum:
minimum = guess
guess = adjustGuess(guess, maximum, minimum, goHigherOrLower)
guesser(guess, maximum)
usedNumbers.append(guess)
print(usedNumbers)`
显然这些数字没有被附加,我不知道为什么。中间的这个调整猜测函数用于调整猜测(降低或增加它并调整,以便再次使用未使用的值并且它尊重最大值和最小值)
if lowhigh in "hH":
numberToAdjust += numberToAdjust/2
while numberToAdjust in usedNumbers:
numberToAdjust += 1
这是处理猜测并检查它是否在列表中的函数。'hH' 表示用户的数字高于前面的猜测(较低的还有另一块代码)
任何人都知道为什么我的代码被破坏了?
解决方案
推荐阅读
- php - php mysql 查询总是返回一个结果 WHERE CLAUSE 有 OR
- javascript - OpenId Connect 在 ios 7/8 上不起作用(OpenID Connect/React)
- reactjs - Ag Grid React checkboxSelection: true 在使用打字稿时不允许选择/取消选择行
- android - Android Retrofit响应返回空对象
- java - 每行打印 10 个整数
- sql-server - 锁定提示 MS-SQL Server、Slick 和 Scala
- laravel - 外键约束格式不正确(Laravel 迁移)
- python - 沿 Pandas 数据框中的列计数?
- flutter - 为当前位置颤动谷歌地图标记
- javascript - 我无法使用 Gatsby 动态创建页面