计算平均数,均方差,找中位数

def getNum(): # 接受用户不定长的输入
    nums=[]
    inumstr = input("请输入数字(回车退出):")
    while inumstr != '':
        nums.append(eval(inumstr)) # 解释器到底了度没找到它要找到的东西出现以上错误, unexpected EOF while parsing,上面的是空字符,不是空格。
        inumstr = input("请输入数字(回车退出):")
    return nums
def mean(numbers):
    s=0
    for num in numbers:
        s=s+num
        return s/len(numbers)
def dev (numbers,mean):
    sdev=0
    for num in numbers:
        sdev=sdev+pow((num-mean),2)
    return pow(sdev/len(numbers),0.5) #len(numbers)-1 就是N-1的意思?公示里面没有这个说法呢?

def median (numbers):
    sorted(numbers) #sorted 给序列排序
    size=len(numbers)
    if size%2==0:
        med = (numbers[size//2-1]+numbers[size//2])/2  # //整除的运算符,取整除 - 向下取接近商的整数,5/2=2.5 取值2 舍去后面的小数部分
    else:
        med = numbers[size//2]
    return med
n = getNum()
m = mean(n)
print("平均值:{:.2},方差:{:.2},中位数:{}。".format(m,dev(n,m),median(n))) # 若果其中不输入:则会出现如下代码 AttributeError: 'float' object has no attribute '2'

标识两个错误的代码:

1、while inumstr != '': 这个是空字符的意思,若输入了空格,实际没有空格结束的话,就会在下一行出现下面的信息

# 解释器到底了度没找到它要找到的东西出现以上错误, unexpected EOF while parsing,上面的是空字符,不是空格。

2、print("平均值:{:.2},方差:{:.2},中位数:{}.".format  格式化函数中,若取小数没有在{}里面加上:或者这个冒号是中文状态下的,执行的时候也会报错。

# 若果其中不输入:则会出现如下代码 AttributeError: 'float' object has no attribute '2'

猜你喜欢

转载自blog.csdn.net/charmingmm815/article/details/123978639