首页 > 解决方案 > 使用 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' 表示用户的数字高于前面的猜测(较低的还有另一块代码)

任何人都知道为什么我的代码被破坏了?

标签: pythonalgorithmsearch

解决方案


推荐阅读