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("输入无效,请输入一个以空格分隔的整型数组。")
- 输入处理:
使用 input() 获取用户输入的数组。
将输入的字符串转换为整数列表。
- 众数查找:
使用 collections.Counter 统计每个数字的出现次数。
找到出现次数最多的数字(众数)。
- 中位数计算:
对众数数组进行排序。
根据数组长度的奇偶性计算中位数。
- 输出结果:
打印众数数组的中位数。
,