刚好最近在学python,然后边看边学python《算法图解》,我在第一章学习二分查找的时候,按照书上给的demo敲代码,运行之后发现一直报错。(我用的是pycharm)一开始报错??如下:syntaxerror?报错是打印有问题。书上的两行是这样写的:printbinary_search(my_list,3)printbinary_search(my_list,-1)想了半天,发现print后面应该加一个括号,如下:print(binary_search(my_list,3))print(binary_search(my_list,-1))经过上面的修改,没有出现语法错误,但是运行的时候又报错了(我拆分):根据给定的错误,表示list的indexinside只能是一个整数,先看原代码:这里的索引是'mid',用于查找列表中的元素,如果mid=1,则查找列表中的第二个元素,显然这里的mid只能是整数(这并不意味着我在寻找列表中的第1.5个数字?)所以我们按如下方式对mid进行四舍五入:mid=(low+high)//2guess=list[mid]Theonlythingthatthat变化是多了一个'/',这样mid就可以四舍五入了。经过以上两处改动后,可以顺利运行,不会再报错了。注意:可能会有疑问,为什么print后面要加括号。我也看了pycharm给的提示,发现可能是作者的版本不一样。毕竟是几年前的书了。另外,如果你在VSCode中遇到同样的问题,也可以使用同样的方法解决。完整的版本附在下面。代码(仅供参考):defbinary_search(list,item):low=0high=len(list)-1whilelow<=high:mid=(low+high)//2guess=list[mid]ifguess==item:returnmidifguess>item:high=mid-1else:low=mid+1返回Nonemy_list=[1,3,5,7,9]print(binary_search(my_list,3))print(binary_search(my_list,-1))
