基本统计值计算

项目场景:

提示:这里简述项目相关背景:

python课后练习题


问题描述:

提示:这里描述项目中遇到的问题:

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

除中位数外,其他输出保留小数点后两位。
基本统计值计算_第1张图片


原因分析:

提示:这里填写问题的分析:

注意,这里输入的数据还必须包含小数,所以必须对数据要判断输入的数据是小数还是整数:小数取整 != 小数

标准差的求法,也可以用numpy内置函数直接算标准差
基本统计值计算_第2张图片


解决方案:

提示:这里填写该问题的具体解决方案:

# -*- codeing = utf-8 -*-
# @Time : 2021/10/19 20:30
# @Author : chao
# @File : 基本统计值计算.py
# @Software : PyCharm
# 请在...补充一行或多行代码

import numpy
import math
def getNum():  # 获取用户不定长度的输入
    num = list(input().split(','))
    nums =[]
    # 判断小数
    for i in num:
        if int(float(i)) == float(i):
            nums.append(int(float(i)))
        else:
            nums.append((float(i)))
    return nums


def mean(numbers):  # 计算平均值
    return sum(numbers) / len(numbers)

def dev(numbers, mean):  # 计算标准差
    return numpy.std(numbers, ddof=1)
    # sum = 0
    # for i in numbers:
    #     item = math.pow(i-mean, 2)
    #     sum += item
    # return math.sqrt(sum/(len(numbers)-1))


def median(numbers):  # 计算中位数
    numbers.sort()
    size = len(numbers)
    if size % 2 == 1:
        return numbers[(size-1)//2]
    else:
        return (numbers[(size//2)]+numbers[(size//2)-1]) / 2


n = getNum()  # 主体函数

m = mean(n)

a = dev(n, m)

b = median(n)
print("Average:{:.2f},Standard Deviation:{:.2f},Median:{}".format(m, a, b))

这里才知道原来列表可以像数组那样传递参数给函数,这里的函数参数必须是不可变数据类型,若是可变数据类型在传参数的时候在前面加一个*,声明这是一个元组

以元组传参:
基本统计值计算_第3张图片

以列表传参:
基本统计值计算_第4张图片

若这道题要偷懒直接可以采用umpy自带一些函数接口,可以用来很方便的计算一组数据的均值(mean),方差(variance)和标准差(standard deviation)

import numpy as np 
 
arr = [1,2,3,4,5,6]
#求均值
arr_mean = np.mean(arr)
#求方差
arr_var = np.var(arr)
#求标准差
arr_std = np.std(arr,ddof=1)

# 参数ddof = 0 分母除n
# 参数ddof = 1 分母除n-1

你可能感兴趣的:(#,python,python)