1# 在列表cards中查找数字x,返回下标值,若未找到,返回-12defserch(cards=list, x=int):3 a =0# 定义左端点下标4 b =len(cards)-1# 定义右端点下标5# 逐级分割查找范围,缩小查找规模6while a <= b:7 m =(a + b)//2# 定义中点下标8if x == cards[m]:# x刚好等于中点值9return m
10elif ___1__# x<中点值,说明x位于左段位置11 b = m -1# 重新定义右端点12else:13 a = m +1# 重新定义左端点14return-1# 未找到,返回-1151617# 主程序18# 在列表d中查找用户输入的数字r19d =[1,6,16,24,44,46,79,80,81,82,87,102,134,151,156,188,196,202,212,226,228,248,272,274,286,306,321,351,363]20print(d)# 显示一下列表d21r =int(input("请输入要查找的数字:"))22y = serch(d, r)# 调用子函数,d,r是实参23if y >=0:24print("已找到", r,",它是列表中第", y +1,"个数字")25else:26print("未找到", r)