日常生活中我们经常需要统计,如学生成绩,实验数据等,涉及总数,平均值,中位数,方差等。如何快速获得想要的结果呢?下面请 Python 来帮忙。
print('请依次输入需统计的数值,完毕回车:')
def getNum(): #获取用户不定长度的输入
nums=[]
NumStr=input('')
while NumStr !='':
nums.append(eval(NumStr))
NumStr=input('')
return nums
def mean(nums): #计算平均值
s=0.0
for num in nums:
s+=num
return s/len(nums)
def dev(nums,mean): #计算标准差
s=0.0
for num in nums:
s+=(num-mean)**2
return pow(s/(len(nums)-1),0.5)
def median(nums): #计算中位数
nums.sort() #sorted(nums)亦可,但需赋值并调用
num=len(nums)
if num%2==0:
med=(nums[num//2-1]+nums[num//2])/2
else:
med=nums[num//2]
return med
n=getNum() #主体函数
m=mean(n)
print('所求平均值:{:.2f};方差:{:.2f};中位数:{:.2f}。'.format(m,dev(n,m),median(n)))
示例:A 组成员 10 人,本次测验成绩如下:99,97,99,93,89,22,68,87,63,92,请计算其平均成绩,方差和中位数。
或者利用列表的特点:
print('请依次输入需统计的数值,以逗号隔开,完毕回车:')
def getNum():
ls=list(eval(input()))
return ls
def mean(nums):
s=0.0
for num in nums:
s+=num
return s/len(nums)
def dev(nums,mean):
s=0.0
for num in nums:
s+=(num-mean)**2
return pow(s/(len(nums)-1),0.5)
def median(nums):
nums.sort()
num=len(nums)
if num%2==0:
med=(nums[num//2-1]+nums[num//2])/2
else:
med=nums[num//2]
return med
n=getNum()
m=mean(n)
print('所求平均值:{:.2f};方差:{:.2f};中位数:{:.2f}。'.format(m,dev(n,m),median(n)))
图例:
需要注意的是,计算中位数时需要对对象排序,可以使用列表的操作函数sort()或内置函数sorted(),二者有所区别,具体参见 Python序列。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/106975.html