本文主要是介绍919: 我们被平均了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
算术平均数的定义如下:
x=(x1+x2+x3+...+xn)/n
表达的是一个由数字构成的集合中的平均值,如一个班的平均成绩、一个群体的平均收入等,常常用来衡量一个群体的平均水平,如一个班的平均分反应了该班的成绩水平。
但平均数常常会欺骗人,如一个单位只有5个人,每月的工资收入分别为12000,10000,4000,3500,3000,平均工资是6500,但是大部分人的工资低于平均值,不具有代表性,大部分人感觉被平均了。
能真正具有代表性的数称为中位数,定义如下:
假设有n个数据,将它们从小到大一次排列为:x1,x2,...,xn,则,如果n为奇数,则第(n+1)/2位即为中位数,如果n为偶数,则第n/2和n/2+1的算术平均数为中位数。
如上面的收入数据中,中位数为4000,很能代表大部分人的收入水平。
你的任务是将给定数据中的中位数找出来。
输入
两行,第一行是数据的个数N(N<=500),第二行有N个浮点数,用空格隔开。
输出
中位数,保留两位小数。
样例输入复制
4 9.6 8.4 9.4 9.9
样例输出复制
9.50
n=int(input())
nums=[0]*n
s=input().split(" ")
for i in range(0,n):nums[i]=float(s[i])
nums1=sorted(nums)
if n%2==0:print(format((nums1[n // 2 - 1] + nums1[n // 2]) / 2, ".2f"))
else:print(format(nums1[n // 2],".2f"))
或者
n = int(input())
data = list(map(float, input().split()))data.sort()if n % 2 == 0:median = (data[n // 2 - 1] + data[n // 2]) / 2
else:median = data[n // 2]print("{:.2f}".format(median))
这段代码首先将输入的浮点数列表转换为浮点数类型,并按升序排序。然后根据数据集的长度,选择正确的中位数计算方式。如果数据集长度为偶数,中位数是中间两个数的平均值;如果数据集长度为奇数,中位数就是中间的数。最后将中位数输出,保留两位小数。
这篇关于919: 我们被平均了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!