基本统计值的计算
1、需要获得多个数据:不知道具体由多少数据,需要定义函数获取。
def getnum():
#获取不定长的数字
nums=[]
inumstr=input("请输入数字(回车退出):")
while inumstr !="":
nums.append(eval(inumstr))
inumstr=input("请输入数字(回车退出):")
return nums
如果输入不是空,则将字符变为数字后加入再nums列表的后面,形成新的列表,直到输入的为空字符串或者回车,则程序不再循环,然后返回nums,如此便可获取不定长的序列。
2、计算平均值
def mean(numbers):
#计算平均值
s=0.0
for num in numbers:
s=s+num
return s/len(numbers)
这里直接累加求和,最后求出其总和,最后列表长度即为数字个数,以总和除以列表长度即可得出平均值。
3、计算方差
def dev(numbers,mean):
#计算方差
sdev=0.0
for num in numbers:
sdev=sdev+(num-mean)**2
return pow(sdev/(len(numbers)-1),0.5)
用for…in…的形式逐一取出元素得到差的方,最终求得方差。
4、中位数计算
def median(numbers):
#计算平均数
sorted(numbers)
size=len(numbers)
if size%2==0:
med=(numbers[size//2-1]+numbers[size//2])/2
else:
med=numbers[size//2]
return med
其中sorted()函数为对列表内的元素进行排序,排序以后就可以利用中位数的定义求出中位数。
5、完整程序
#基本统计值计算
def getnum():
#获取不定长的数字
nums=[]
inumstr=input("请输入数字(回车退出):")
while inumstr !="":
nums.append(eval(inumstr))
inumstr=input("请输入数字(回车退出):")
return nums
def mean(numbers):
#计算平均值
s=0.0
for num in numbers:
s=s+num
return s/len(numbers)
def dev(numbers,mean):
#计算方差
sdev=0.0
for num in numbers:
sdev=sdev+(num-mean)**2
return pow(sdev/(len(numbers)-1),0.5)
def median(numbers):
#计算平均数
sorted(numbers)
size=len(numbers)
if size%2==0:
med=(numbers[size//2-1]+numbers[size//2])/2
else:
med=numbers[size//2]
return med
n=getnum()
m=mean(n)
print("平均值:{},方差:{:.2},中位数:{}。".format(m,dev(n,m),median(n)))
我取了两组数据,得出的结果为:
我们实现了不确定长度数字串的基本量的计算。