首页 > 解决方案 > Python3--如何在数字游戏中实现二分查找

问题描述

您好,我正在学习二叉搜索树。该程序自行解释。我对是否应该为一半数字编写函数感到困惑。我只是对这一切的逻辑感到困惑。如果您能提供帮助,我将不胜感激。

list_of_numbers = [i for i in range(1,101)]
print("THIS IS YOUR LIST OF NUMBERS", list_of_numbers)

lowest_number = 1
highest_number = len(list_of_numbers)-1

mid = (len(list_of_numbers)) / 2
print("IS THIS YOUR NUMBER???:", mid)

number_of_guesses = 0

while lowest_number <= highest_number:
    print('Is your number: ', mid)
    print('please enter "<,>, or ="')
    first_guess = input("???:::::::::")
    first_answer = first_guess
    print(first_answer)
    equals = "="
    greaterthan = ">"
    lessthan = "<"    
    if first_answer == equals:
        print('Great JOB I GOT YOUR NUMBER ON THE FIRST TRY')
        break
    if first_answer == lessthan:
        print('The number is now between 49-1, half it.')
        break
    elif first_answer == greaterthan:
        print('The number is now between 51-100')
        break
    else:
        print('Type one of the answers')
        break


    number_of_guesses = number_of_guesses + 1

标签: pythonlistfunctionbinary-search-tree

解决方案


您不需要一个简单地除以 2 的函数。对于二进制搜索,您应该做的是跟踪数字的上限和下限;然后您可以将猜测计算为(upper + lower) / 2。如果玩家说猜测太高,则将上限设置为当前猜测。如果他们说猜测太低,则将下限设置为当前猜测。重复此操作,直到找到正确的数字。

顺便说一句,这不是真正的搜索树,它只是一个基本的二分搜索。搜索树会将所有可能的数字存储在一个连接的树形图中,并使用它来搜索答案,而这并没有这样做。


推荐阅读