提示:这里简述项目相关背景:
python课后练习题
提示:这里描述项目中遇到的问题:
获取以逗号分隔的多个数据输入(输入为一行),计算基本统计值(平均值、标准差、中位数)
提示:这里填写问题的分析:
注意,这里输入的数据还必须包含小数,所以必须对数据要判断输入的数据是小数还是整数:小数取整 != 小数
提示:这里填写该问题的具体解决方案:
# -*- 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))
这里才知道原来列表可以像数组那样传递参数给函数,这里的函数参数必须是不可变数据类型,若是可变数据类型在传参数的时候在前面加一个*,声明这是一个元组
若这道题要偷懒直接可以采用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