Python基本统计值计算

描述

这是"实例"题,与课上讲解实例相同,请作答检验学习效果。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

获取以逗号分隔的多个数据输入(输入为一行),计算基本统计值(平均值、标准差、中位数)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

除中位数外,其他输出保留小数点后两位。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

请补充编程模板中代码完成‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

输入输出示例

  输入 输出
示例 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 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)))

 

 

 
posted @ 2020-08-05 12:31  北迁怀南  阅读(1286)  评论(0编辑  收藏  举报