为什么没有“找不到”的代码不工作。这个声明有什么用?Python中“和不”的用法是什么?
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'都必须为true;它只是一个布尔表达式。这里没有'和''结构。 –
该代码过于复杂,使用'found'标志;你可以删除'和not found',用'return True'替换'found = True',用'return False'返回(found)'。 –