📜  使用二进制搜索的Python的数字猜谜游戏(1)

📅  最后修改于: 2023-12-03 15:06:54.801000             🧑  作者: Mango

使用二进制搜索的Python的数字猜谜游戏

本文介绍如何使用二分搜索算法来实现数字猜谜游戏。该算法可大大减少猜测次数,提高猜谜效率。

二分搜索算法

二分搜索(Binary Search)是一种在有序数组中查找某一特定元素的搜索算法。其算法思想是将数组从中间开始分成左右两个部分,如果中间元素等于要查找的元素,直接返回结果;如果中间元素大于要查找的元素,则在左半部分继续查找;如果中间元素小于要查找的元素,则在右半部分继续查找。重复这个过程,直到找到结果或确定结果不存在。

二分搜索算法的时间复杂度为 O(logn),其中 n 为数组元素个数。

程序实现

以下是使用二分搜索算法实现的数字猜谜游戏的 Python 代码:

import random

def guess_number(start, end):
    """猜数字游戏"""
    answer = random.randint(start, end)  # 生成答案

    while True:
        guess = (start + end) // 2  # 二分搜索猜测数字
        print(f"猜测的数字为 {guess}")

        if guess == answer:
            print("恭喜你,猜对了!")
            break
        elif guess < answer:
            print("猜测的数字太小了。")
            start = guess + 1  # 范围向右移动
        else:
            print("猜测的数字太大了。")
            end = guess - 1  # 范围向左移动

该函数接受两个整数参数 start 和 end,表示要猜测的数字的范围。函数使用 while 循环进行猜测,每次猜测都通过二分搜索算法得到一个整数。然后程序根据该整数与答案的大小关系,指导猜测范围向左或向右移动。

使用示例

以下是一个使用示例:

guess_number(1, 100)

输出:

猜测的数字为 50
猜测的数字为 25
猜测的数字为 12
猜测的数字为 6
猜测的数字为 9
猜测的数字为 11
猜测的数字为 10
恭喜你,猜对了!

在该示例中,程序使用二分搜索算法从 1 到 100 的范围内猜测数字,最终找到了正确答案。

总结

使用二分搜索算法实现数字猜谜游戏可大大减少猜测次数,提高猜谜效率。该算法的实现方法相对简单,易于理解和编写。