文章目录

  • 简介
  • 目标分析
  • 代码实现
  • 列表在计算时候的作用


简介

统计是计算科学、管理学、社会学、数学等许多领域中的基本问题。相关的问题、方法以及技术组成的一门学科,即统计学。在本文将以一个计算多数据基本统计值的例子,来解决求解一组不定长数据的基本统计值的问题。在本例中,将利用列表数据结构获得数据的平均值、标准差、中位数。
这个问题的IPO如下描述:
输入:用户输入、文件、网络等途径获取一组数据。
处理:适当的数据结构与算法
输出:这组数据的算术平均值、标准差、中位数

目标分析

由于平均值、标准差、中位数是三个不同的计算目标,因此使用函数编写计算程序。定义getNum()函数获取用户输入的数据,mean()函数计算平均值,dev函数计算标准差,median()函数计算中位数。此处不考虑用户的最大输入数量,因此使用列表存储数据类型。

代码实现

完整代码如下所示:

from math import sqrt

def getNum():
    nums = []
    iNumStr = input("请输入数字(输入回车退出):")
    while iNumStr !="":
        nums.append(eval(iNumStr))
        iNumStr = input("请输入数字(输入回车退出):")
    return nums
def mean(numbers):  #平均值
    s = 0.0
    for num in numbers:
        s = s + num
    return s /len(numbers)
def dev(numbers, mean):  #标准差
    sdev = 0.0
    for num in numbers:
        sdev = sdev + (num - mean)**2
    return sqrt(sdev / (len(numbers)-1))
def median(numbers):  #中位数
    new = sorted(numbers)
    size = len(numbers)
    if size %2 == 0:
        med = (new[size//2-1] + new[size//2])/2
    else:
        med = new[size//2]
    return med
n = getNum()
m = mean(n)
print("平均值:{},标准差:{:.2},中位数:{}".format(m,dev(n,m),median(n)))

python中求平均数 python求平均数标准差中位数_开发语言

程序整体将从28行开始执行,按先后顺序分别调用了getNum(),mean(),dev()以及median()函数,利用模块化设计,能够充分复用代码,并且增加代码的可读性。函数内部的语句并不复杂。
getNum函数循环从控制台获取用户的输入,用户直接摁下回车键时退出循环。所有数据保存在num列表中,列表num初始化的时候定义为空,随后根据输入增加长度。
mean函数用浮点数s记录numbers中求和的结果,其中for语句表示列表中取出每一个元素。将其加到s变量中,直到列表的最后一个元素。最后通过return语句返回平均值,len用于计算长度。
因为计算标准差需要获取平均值,因此可以将mean函数中的均值作为参数输入到标准差函数中。
根据中位数的定义,首先使用python内置的sorted函数对列表进行排序,然后根据中位数定义进行计算。

列表在计算时候的作用

列表的作用体现在以下三个方面:
1.列表是一个动态长度的数据结构,可以根据需求增加或者减少元素。
2.列表的方法以及操作符提供了简单的元素计算手段。
3.列表中有着访问列表内元素以及遍历所有元素的方法。