实例9:基本统计值计算
#计算基本统计值(平均值、标准差、中位数)除中位数外,其他输出保留小数点后两位
def getNum():
nums = []
iNumStr = input("请输入数字(回车退出):")
while iNumStr != "": #死循环判断为空退出,不为空就继续输入并添加到列表里
nums.append(eval(iNumStr))
iNumStr = input("请输入数字(回车退出):")
return nums
#计算平均值,必须先求和,用总和数 除以 总个数等于平均值
def mean (numbers): #例:numbers=1,2,3 共3个数字
s = 0.0 #定义一个结果为0
for num in numbers:
s = s +num #和是1+2+3=6 那么s=6
return s / len(numbers) #6除以3等于平均值2
# 计算方差,需要算出平均值
def dev(numbers,mean): #两参数用户输入列表和平均值
sdev = 0.0 #例:numbers=1,2,3,4 共4个数字 上一步算出平均值2.5
for num in numbers: #(1-2.5)**2==2.25 sdev=2.25
sdev = sdev + (num - mean)**2 #逐一取数减平均值再得出平方,累加到sdev里
return pow(sdev / (len(numbers)-1),0.5) #sdev除(4-1)==0.75的0.5次方==1.299
#计算中位数
def median(numbers):
numbers.sort() #进行原列表排序,使用sorted排序必须有返回值numbers = sorted(numbers)
size = len(numbers) #例:numbers=1,2,3,4 size=4
if size % 2 ==0: #判断为偶数取中间两位数,4//2-1 =1 切片是从0开始所以减1位
med = (numbers[size//2-1] + numbers[size//2])/2 #//为整除,/为浮点数
else: #或为奇数,切片总长度除2,取中间一位
med = numbers[size//2]
return med
n = getNum()
m = mean(n)
print("平均值:{},方差:{:.2},中位数:{}".format(m,dev(n,m),median(n)))
python123练习题:代码大致一样,input输入不同 需转换类型
def getNum(): # 获取用户不定长度的输入 nums = eval(input()) # s = eval(input()) return list(nums) # nums = list(s) return nums #如果不转换列表类型,则下方排序需使用numbers = sorted(numbers)来排序,此方法必须有返回值 def mean(numbers): # 计算平均值 s = 0.0 for num in numbers: 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): # 计算中位数 numbers.sort() #列表排序 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("平均值:{:.2f},标准差:{:.2f},中位数:{}".format(m, dev(n, m), median(n)))