独学コンピューターサイエンティスト 第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