1. ホーム
  2. Python

アルゴリズム図 1.2 二項対立型ルックアップ TypeError: リストのインデックスは整数またはスライスでなければならず、float ではありません 解答

2022-02-18 11:04:43
def binary_search(list, item):
    low = 0
    high = len(list) - 1

    while low <= high:
        mid = (low + high) / 2
        guess = list[mid]
        if guess == item:
            return guess
        if guess > item:
            high = mid - 1
        else:
            low = mid + 1
    return None


my_list = [1, 3, 5, 7, 9]

print(binary_search(my_list, 3))
print(binary_search(my_list, -1))


次の行を入れます。

mid = (low + high) / 2

に変更する。

mid = int((low + high) / 2)

強く整数に変換する。

リストのインデックスは整数かスライスでなければならないので

もう一つの方法

mid = low + (high - low) / 2