見出し画像

独学コンピューターサイエンティスト 第1部 第3章 のサンプルプログラムのバグ

これは思考トレースだけして見つけ報告したバグなので、報告した責任を感じて実際にバグなのかを確かめてみました。

以下がバグを確かめたプログラムと出力結果です。

from bisect import bisect_left


def binary_search(an_iterable, target):
    index = bisect_left(an_iterable, target)
    
    print('    index =',index, 'len =', len(an_iterable))  # 検証の為に追加
    
    if index <= len(an_iterable) and an_iterable[index]  == target:
        return True
    return False

# 以下検証の為に追加

ite = ('a', 'b', 'c')

print("binary_search(ite, 'c') = ", binary_search(ite, 'c'))  # 正常に動作する

print("binary_search(ite, 'd') = ", binary_search(ite, 'd'))  # IndexError: で落ちる!


出力結果

    index = 2 len = 3
binary_search(ite, 'c') =  True
    index = 3 len = 3
Traceback (most recent call last):
  File "/home/gundam/python/p64-1.py", line 19, in <module>
    print("binary_search(ite, 'd') = ", binary_search(ite, 'd'))  # IndexError: で落ちる!
  File "/home/gundam/python/p64-1.py", line 9, in binary_search
    if index <= len(an_iterable) and an_iterable[index]  == target:
IndexError: tuple index out of range


確かめた結果、やはりバグでした。




#独学コンピューターサイエンティスト
#独CS #selftaughtcoder
#バグ #bug
#Python #Python3