なぜコードは "and not found"がなくても機能しません。この声明の使用は何ですか?Pythonで "and not"を使うのは何ですか?
def BinarySearch(alist, item):
first=0
last=len(alist)-1
found=False
while first<=last and not found:
midpt= (first+last)//2
if alist[midpt] == item:
found=True
else:
if item < alist[midpt]:
last=midpt-1
else:
first=midpt+1
return(found)
alist=[1,2,3,4,5]
item=8
print(BinarySearch(alist,item)
)
(読み取り以外)この種のものを理解するための最良の方法を使用することですステートメントでコードステートメントをステップ実行するデバッガー。これを 'and not found'の有無にかかわらず行い、上のテストで' item'を '8'から' 3'に変更すると、その違いがわかります。 –
'first <= last'と' not found'の両方が真でなければなりません。これは単なるブール式です。ここには「ない」という構造はありません。 –
コードは 'found'フラグを使用することによって非常に複雑です。 'found = True'を' return True'に置き換え、 'return(found)'を 'return False'で置き換えることができます。 –