我试图在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))