代码计算不正确,我找不到我犯错的地方

时间:2018-11-05 02:31:15

标签: python-3.x

我编写了一个程序来计算一组数字的标准偏差。该程序正在运行,没有错误,但是返回了错误的结果。

#standard deviation
import math

def mean(values):
    return sum(values)/len(values)

def stanDev(values):

    length=len(values)
    total_sum = 0
    m = mean(values)
    for i in range(length):
        total_sum += (values[i]-m)**2
        under_root=total_sum/(length-1)
        return math.sqrt(under_root)

x=[1,2,4,1,2,42,12]     
std=stanDev(x)

print(std)

使用当前代码,我得到3.3243075080628843的输出,但是使用在线计算器,对于同一组数据,我得到14.993649449334的结果。

1 个答案:

答案 0 :(得分:1)

您的for循环中是否有正确的缩进?您提供的代码应如下所示:

length=len(values)
total_sum = 0
m = mean(values)
for i in range(length):
    total_sum += (values[i]-m)**2
under_root=total_sum/(length-1) #this line is performed once, after the for loop
return math.sqrt(under_root)