题目:
在python中statistics模块实现常用的统计公式,允许使用python的各种数值类型(int,float,Decimal和Fraction)来完成高效计算。
本题为了加强同学们对列表、类设计,不采用直接调用statistics模块相应方法来完成输入一组数据的基本统计值统计值。
要求:定义一个类计算统计值类CalStatisticsValue,类中方法有:构造方法(用来初始化成员变量)、计算平均值CauMean、计算标准差CauDev、计算中位数CauMedian;成员变量有:Datas(列表类型,用来存储数据)、Mean(平均值)、Dev(标准差)、Median(中位数)。
获取以逗号分隔的多个数据输入(输入为一行),计算基本统计值(平均值、标准差、中位数)
除中位数外,其他输出保留小数点后两位。
请编写算统计值类CalStatisticsValue,以补充完整代码,使得程序可以得到正确运行。
函数接口定义:
#python
#CalStatisticsValue.py
'''请 完整定义并实现类class CalStatisticsValue:*'''
'''你的代码将嵌入到这里'''
####裁判测试程序样例:
if __name__ == "__main__":
Sdata = CalStatisticsValue()
Sdata.GetData() #获取用户不定长度Datas的输入
print("原数据序列:",end='')
print(Sdata.Datas)
print("平均值:{:.2f},标准差:{:.2f},中位数:{}".format(Sdata.CauMean(),Sdata.CauDev(),Sdata.CauMedian()))
### 输入样例:
在这里给出一组输入。例如:
```in
1,3,6,9,2,5,1
输出样例:
在这里给出相应的输出。例如:
原数据序列:[1,3,6,9,2,5,1]
平均值:3.86,标准差:2.97,中位数:3
代码展示:
from math import *
class CalStatisticsValue:
def __init__(self):
self.Datas=[]
self.Mean=0.0
self.Dev=0.0
self.Median=0
def GetData(self):
s=input()
self.Datas=list(eval(s))
def CauMean(self):
self.Mean=0.0
for i in self.Datas:
self.Mean+=i
self.Mean=self.Mean/(len(self.Datas))
return self.Mean
def CauDev(self):
self.Dev=0.0
for i in self.Datas:
self.Dev+=(i-self.CauMean())**2
self.Dev=sqrt(self.Dev/(len(self.Datas)-1))
return self.Dev
def CauMedian(self):
self.Datas.sort()
self.Median=len(self.Datas)
if(self.Median % 2 ==0):
self.Median=(self.Datas[self.Median//2-1]+self.Datas[self.Median//2])/2
else:
self.Median=self.Datas[self.Median//2]
return self.Median