描述
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
获取以逗号分隔的多个数据输入(输入为一行),计算基本统计值(平均值、标准差、中位数)
除中位数外,其他输出保留小数点后两位。
请补充编程模板中代码完成
输入输出示例
输入 | 输出 | |
示例 1 |
|
|
就光顾着他说和上课一样了。
不然,这里是一行以逗号分隔完成输入,而上课讲的是每次输入一个数:
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 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)))