声明:参考B站视频,自学成长记录
https://www.bilibili.com/video/BV1v7411P7CR?from=search&seid=8378833033948085301
'''
二分查找 实现猜数字
'''
def guess_num(list, num):
'''
猜大小
:param list: 有序列表
:param num: 猜的数字
:return:
'''
# 最低索引
left = 0
# 最高索引
right = len(list) - 1
index = 1
while right >= left:
# 中间位置
mid = (left + right) // 2
# 如果猜的数 == 中间位置的数
if num == list[mid]:
print('第{}次, 找到了'.format(index))
# 找到后 退出循环
break
# 如果猜的数 < 中间位置的数
if num < list[mid]:
# 最高位置 移到 中间位置左边 -1
right = mid - 1
print("第{}次, 你猜小了".format(index))
else:
# 最低位置 移到 中间位置右边 +1
left = mid + 1
print("第{}次, 你猜大了".format(index))
index += 1
else:
print("第{}次,没找到".format(index))
guess_num([i for i in range(10)], 5)
'''
执行结果:
1次, 你猜大了
2次, 你猜小了
3次, 找到了
'''