程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python查找众数及中位数

hfteth 2025-03-12 15:07:47 技术文章 14 ℃
from collections import Counter

def find_mode_and_median(arr):
    # 1. 找到众数
    counter = Counter(arr)
    max_count = max(counter.values())
    modes = [num for num, count in counter.items() if count == max_count]
    
    # 2. 对众数数组排序
    modes_sorted = sorted(modes)
    
    # 3. 计算中位数
    n = len(modes_sorted)
    if n % 2 == 1:
        median = modes_sorted[n // 2]
    else:
        median = (modes_sorted[n // 2 - 1] + modes_sorted[n // 2]) / 2
    
    return median

# 自定义输入
if __name__ == "__main__":
    try:
        # 输入数组
        input_str = input("请输入一个整型数组(以空格分隔):")
        arr = list(map(int, input_str.strip().split()))
        
        # 检查数组是否为空
        if not arr:
            print("输入数组不能为空。")
        else:
            # 计算并输出结果
            result = find_mode_and_median(arr)
            print(f"众数数组的中位数为: {result}")
    except ValueError:
        print("输入无效,请输入一个以空格分隔的整型数组。")


代码说明:

  1. 输入处理

使用 input() 获取用户输入的数组。

将输入的字符串转换为整数列表。

  1. 众数查找

使用 collections.Counter 统计每个数字的出现次数。

找到出现次数最多的数字(众数)。

  1. 中位数计算

对众数数组进行排序。

根据数组长度的奇偶性计算中位数。

  1. 输出结果

打印众数数组的中位数。

Tags:

最近发表
标签列表