lst = [['20200001','a1'],['20200002','a2'],['20200003','a3'],['20200004','a4'],['20200005','a5'],['20200006','a6'],['20200007','a7'],
['20200008','a8'],['20200009','a9'],['20200010','a10'],['20200011','b1'],['20200012','b2'],['20200013','b3'],['20200014','b4'],
['20200015','b5'],['20200016','b6'],['20200017','b7'],['20200018','b8'],['20200019','b9'],['20200020','b10']]
n = input()
'''
if n == lst[len(lst)-1][0]:
print(lst[len(lst)-1])
'''
right = len(lst)-1
left = 0
while right>=1:
mid = (left + right) // 2
if lst[mid][0]==n:
print(lst[mid])
break
elif n>lst[mid][0]:
lst = lst[mid+1:right+1]
else:
lst = lst[0:mid+1]
N=len(lst)
right = N-1
小白一枚,这是我写的关于折半查找的一个程序,题目如下:折半查找:1个列表里存储了20个子列表,各子列表内存储了学生的学号及姓名两个元素,两个元素都是字符串类型。现已知该20个学生子列表已按学号递增序排好序。请设计一个程序,使用折半查找算法通过最少次数的比较找到指定学号的学生,如果没有,报告未找到。
思路如下:指定查找对象与中值lst[len(lst)-1//2]比较,若小,切片取出左边一半的列表,否则取出右边一半,循环,可以得到查找值。但是出现一个问题,就是列表中最后一个元素就是不行(注释处是我为了糊任务加的),想请教各位大神怎么回事(有认真思考过,但还是不会)