描述
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
获取以逗号分隔的多个数据输入(输入为一行),计算基本统计值(平均值、标准差、中位数)
除中位数外,其他输出保留小数点后两位。
请补充编程模板中代码完成
输入输出示例
输入
输出
示例 1
1,3,6,9,2,5,1
平均值:3.86,标准差:2.97,中位数:3
就光顾着他说和上课一样了。
不然,这里是一行以逗号分隔完成输入,而上课讲的是每次输入一个数:
nums =[]
numstr= input("请输入数字(回车退出):")while numstr != '':
nums.append(eval(numstr))
numstr= input("请输入数字(回车退出):")
所以这里需要这样:
def getNum(): #获取用户不定长度的输入
nums = []
iNumstr = input().split(",")
for i in iNumstr:
nums.append(eval(i))
return nums
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 = sorted(numbers)
size = len(numbers)
if size % 2 == 0:
med = (numbers[size//2]+numbers[size//2-1])/2
else:
med = numbers[size//2]
return med
n = getNum() #主体函数
m = mean(n)
print("平均值:{:.2f},标准差:{:.2f},中位数:{}".format(m,\
dev(n,m),median(n)))
并且这个sorted函数太坏了。
sort()方法语法:
list.sort(cmp=None,key=None,reverse=False)
cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
而还有一个sorted:
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
sorted 语法:
sorted(iterable,key=None,reverse=False)
区别即:
和
所以用sorted时,一定要送佛送到佛归西。
numbers = sorted(numbers)
下面为答案:
#请在...补充一行或多行代码#CalStatisticsV1.py
def getNum(): #获取用户不定长度的输入
nums =[]
iNumstr= input().split(",")for i iniNumstr:
nums.append(eval(i))returnnumsdef mean(numbers): #计算平均值
s = 0.0
for num innumbers:
s+=numreturn s/len(numbers)def dev(numbers, mean): #计算标准差
sdev = 0.0
for num innumbers:
sdev= sdev + (num - mean)**2
return pow(sdev / (len(numbers)-1), 0.5)def median(numbers): #计算中位数
numbers =sorted(numbers)
size=len(numbers)if size % 2 ==0:
med= (numbers[size//2]+numbers[size//2-1])/2
else:
med= numbers[size//2]returnmed
n= getNum() #主体函数
m =mean(n)print("平均值:{:.2f},标准差:{:.2f},中位数:{}".format(m,\
dev(n,m),median(n)))