Python3--如何在数字游戏中实现二进制搜索

时间:2018-11-06 14:57:25

标签: python list function binary-search-tree

您好,我正在研究二进制搜索树。该程序说明自己。我对是否应该将函数写成一半的数字感到困惑。我只是对这一切的逻辑感到困惑。如果可以的话,我将不胜感激。

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

1 个答案:

答案 0 :(得分:0)

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

顺便说一句,这实际上不是搜索树,只是基本的二进制搜索。搜索树将把所有可能的数字存储在连接的树形图中,然后使用它来搜索答案,这是没有做的。