from typing import Any, Tuple


def 取众数(元组数据: Tuple[Any, ...]):
    """返回元组中的众数。

    功能说明:
        - 这个函数用于返回元组中的众数。
        - 常用于从元组中读取某个成员、某一段数据，或者计算出一个统计结果。
        - 如果当前数据不适合处理，函数会返回约定好的结果，方便新手直接判断这次是否成功取到值。

    Args:
        元组数据: 待统计的元组。

    Returns:
        成功时返回 ``(众数, True)``；失败时返回 ``(None, False)``。
    """
    try:
        if not isinstance(元组数据, tuple) or not 元组数据:
            return None, False

        频率列表 = []
        for 元素 in 元组数据:
            已找到 = False
            for 项 in 频率列表:
                if 项[0] == 元素:
                    项[1] += 1
                    已找到 = True
                    break
            if not 已找到:
                频率列表.append([元素, 1])

        众数 = 频率列表[0][0]
        最大次数 = 频率列表[0][1]
        for 元素, 次数 in 频率列表[1:]:
            if 次数 > 最大次数:
                众数 = 元素
                最大次数 = 次数
        return 众数, True
    except Exception:
        return None, False


if __name__ == "__main__":
    print("===== 示例1：基础众数 =====")
    数据 = (1, 2, 2, 3, 2, 4)
    print("结果:", 取众数(数据))

    print("\n===== 示例2：字符串众数 =====")
    数据 = ("a", "b", "a", "c", "a")
    print("结果:", 取众数(数据))

    print("\n===== 示例3：并列时返回先达到最高频的成员 =====")
    数据 = ("a", "b", "a", "b")
    print("结果:", 取众数(数据))

    print("\n===== 示例4：单成员元组 =====")
    数据 = ("唯一",)
    print("结果:", 取众数(数据))

    print("\n===== 示例5：空元组 =====")
    数据 = ()
    print("结果:", 取众数(数据))

    print("\n===== 示例6：应用场景-统计最常出现的访问来源 =====")
    来源列表 = ("百度", "知乎", "百度", "官网", "百度", "公众号")
    print("结果:", 取众数(来源列表))



