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 mid
if guess<item:
return low=mid+1
else:
return high=mid-1
return None
my_list=[1,3,5,7,9]
binary_search(my_list,-1)
File "<ipython-input-6-b0d18351752a>", line 10 return low=mid+1 ^ SyntaxError: invalid syntax 显示语法错误到底哪里错误啊
return 错误,应该写为
return mid+1
//或者
low = mid + 1
return low
修改之后运行依然报错,TypeError: list indices must be integers or slices, not float
list的索引不能为float,
print(type((low + high) / 2))输出查看类型
<class 'float'>显示为float类型
进行修改
mid=int((low+high)/2)强制转换为int类型
if guess<item:
low=mid+1
else:
high=mid-1