from typing import Any, Tuple


def 取重复率(元组数据: Tuple[Any, ...]):
    """返回元组成员的重复率。

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

    计算方式:
        ``(总成员数量 - 唯一成员数量) / 总成员数量``
    """
    try:
        if not isinstance(元组数据, tuple) or not 元组数据:
            return None

        唯一成员 = []
        for 元素 in 元组数据:
            if 元素 not in 唯一成员:
                唯一成员.append(元素)
        return (len(元组数据) - len(唯一成员)) / len(元组数据)
    except Exception:
        return None


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

    print("\n===== 示例2：全部唯一 =====")
    数据 = ("a", "b", "c")
    print("结果:", 取重复率(数据))

    print("\n===== 示例3：全部相同 =====")
    数据 = ("a", "a", "a")
    print("结果:", 取重复率(数据))

    print("\n===== 示例4：包含不可哈希成员 =====")
    数据 = ([1], [1], {"x": 1}, {"x": 1})
    print("结果:", 取重复率(数据))

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

    print("\n===== 示例6：应用场景-统计标签重复率 =====")
    标签列表 = ("已支付", "待发货", "已支付", "高优先级", "待发货")
    print("结果:", 取重复率(标签列表))



