defbinary_search(list,item):# low and high keep track of which part of the list you'll search in. low =0 high =len(list)-1# While you haven't narrowed it down to one element ...while low <= high:# ... check the middle element mid = (low + high) //2#得到商,并向下取整,比如3.5变成3;每次都检查中间的元素 guess = list[mid]# Found the item.if guess == item:#找到了元素return mid# The guess was too high.修改highif guess > item: high = mid -1# The guess was too low.修改lowelse: low = mid +1# Item doesn't existreturnNone#没有指定的元素my_list = [1,3,5,7,9]print (binary_search(my_list, 3))# => 1,返回3所在列表的索引位置,从0开始,所以3返回1;#体会一下这种测试驱动开发的思想,先在代码后面写上用于测试的语句;#先用伪代码理清逻辑,然后再补充好细节;# 'None' means nil in Python. We use to indicate that the item wasn't found.print (binary_search(my_list, -1))# => None,因为不存在,所以返回None;输出:1None