Python 自动程序数字炸弹游戏

2023-12-28 10:43:51

在一个数字范围内,有一个数字作为炸弹,谁猜中这个炸弹就被惩罚.比如范围是1~99,炸弹是60,然后猜了一个数字是30,30不是炸弹,那么现在猜数字的范围就缩小到30~100,又猜了一个数字80,80也不是炸弹,那么现在又缩小范围到30~80,每次猜不能猜边界上的值,直到有人猜中这个炸弹

import random, time

value_list = [i for i in range(1, 101)]  # 生成一个数字列表
print(value_list)
first_index = 0  # 开始索引
end_index = len(value_list) - 1  # 末尾索引
print(first_index, end_index)
num = random.randint(1, 100)  # 随机生成一个数字炸弹

print(value_list[99])

print('随机数字是:', num)  # 打印随机数

while True:
    d_index = int((first_index + end_index) / 2)  # 取中间索引
    print('搜索:', value_list[d_index], first_index, end_index)  # 打印选择数据及索引值
    time.sleep(1)  # 等待1s
    if num == value_list[d_index]:  # 随机值和选到的值相同
        index = value_list.index(num)  # 获取当前值在列表中的索引
        print('随机数字的索引是:', index, 'value=', num)  # 打印结果
        break  # 结束循环
    else:
        if num > value_list[d_index]:  # 随机值大于选择的值
            first_index = d_index  # 将当前索引值赋值给开始索引
        else:
            end_index = d_index  # 将当前索引赋值给末尾索引
    if first_index == end_index - 1:  # 搜索到最后两个值
        if num == value_list[end_index]:  # 对最大的索引数据进行比较,相同则输出
            index = value_list.index(num)
            print('随机数字的索引是:', index, 'value=', num)
            break
        elif num == value_list[first_index]:  # 对最小的索引数据进行比较,相同则输出
            index = value_list.index(num)
            print('随机数字的索引是:', index, 'value=', num)
            break
        else:  # 随机值不是最大值也不是最小值
            print(value_list[d_index], first_index, d_index, end_index)
            print('未找到索引')
            break

文章来源:https://blog.csdn.net/2202_75561400/article/details/135258109
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。