作者:大鱼 | 来源:互联网 | 2023-09-15 10:00
问题描述:以最简单的统计问题为例,求解一组不定长数据的基本统计值,即平均值、标准差、中位数。
一组数据表示为S=s0, s1, …, sn-1,其算术平均值、标准差分别表示为:
由于平均数、标准差和中位数是三个不同的计算目标,使用函数方式编写计算程序。
- getNum()函数从用户输入获得数据;
- mean()函数计算平均值;
- dev()函数计算标准差;
- median()函数计算中位数
# text36.py
from math import sqrtdef getNum(): # 获取用户输入nums = []iNumStr = input("请输入数字(直接输入回车退出): ")while iNumStr != "":nums.append(eval(iNumStr))iNumStr = input("请输入数字(直接输入回车退出): ")return numsdef mean(numbers): # 计算平均值s = 0.0for num in numbers:s = s + numreturn s / len(numbers)def dev(numbers, mean): # 计算方差sdev = 0.0for num in numbers:sdev = sdev + (num - mean)**2return sqrt(sdev / (len(numbers)-1))def median(numbers): # 计算中位数sorted(numbers)size = len(numbers)if size % 2 == 0:med = (numbers[size//2-1] + numbers[size//2])/2else:med = numbers[size//2]return medn = getNum() # 主体函数
m = mean(n)
print("平均值:{},方差:{:.2},中位数:{}.".format(m, dev(n, m), median(n)))
程序先后调用getNum()、mean()、dev()和median()函数。利用函数的模块化设计能够复用代码并增加代码的可读性。每个函数内部都采用了简单的语句。
列表在实现基本数据统计时发挥了重要作用,表现在:
- 列表是一个动态长度的数据结构,可以根据需求增减少元素;
- 列表的一系列方法或操作符为计算提供了简单的元素运算手段;
- 列表提供了对每个元素的简单访问方式及所有元素的遍历方式。