我试图在python中找到数字的标准偏差。这是入门级编程类,因此我避免尝试使用函数,因为尚未引入它们。

该程序允许我将数字添加到列表中,分析所述列表,然后得出平均值,最小值,最大值,STDev等。我设法成功显示除STDev之外的所有内容,我一直收到的错误是float对象不可迭代。这是相关部分的代码:

elif (menuchoice == 4):
        sum = 0.0
        print("std deviation")
        stdev = 0.0
        for i in range(listcount):
            scorenum4 = eval(scorenum[i])
            scoreaverage2 += scorenum4
        scoreaverage2 /= listcount
        for i in range(listcount):
            stdev = []
            scorenum3 = eval(scorenum[i])
            stdev += (scorenum3 - scoreaverage2)**2
            dev = sqrt((stdev)/listcount-1)
        print(dev)


任何帮助都将是很宝贵的,谢谢。

-自我编辑-我刚刚从for循环中删除了stdev = [],不知道为什么会出现-我现在得到了答案,但是从数学上讲它是关闭的


更改为dev = sqrt((stdev)/ listcount)并修复了我的数学错误,DSM也确认了此修复程序。谢谢
程序现在可以正常运行了! woo谢谢大家的指教。

最佳答案

这是计算标准偏差的漫长方法。这是一种更加Python化的方式,我敢说它也更具可读性。

mean = sum(scorenum, 0.0) / len(scorenum)
d = [ (i - mean) ** 2 for i in scorenum]
std_dev = math.sqrt(sum(d) / len(d))

08-26 09:23