我试图在python中找到数字的标准偏差。这是一个入门级编程类,所以我避免尝试使用函数,因为它们还没有被引入。在
这个程序允许我在列表中添加数字,分析列表,然后得出平均值、最小值、最大值、标准偏差等。我成功地显示了除STDev之外的所有内容,我一直得到的错误是float object not iterable。以下是相关部件的代码:
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)
任何帮助都会很好,谢谢。在
-Self-edit-我刚刚从for循环中删除了stdev=[],不知道为什么会有它-我现在得到了一个答案,但它在数学上是关闭的
另一个答案提出了一种更为Python式的方法,但我建议在这里进行更正。 虽然效率不高,但对于初学者来说,经典算法更容易理解。在
假设scorenum是一个数组,存储您需要的数据和STD
评论: -你可以迭代任何类型的数组 -必须导入数学库 -像+=和/=这样的运算符是用来表示幻想的。它们相当于sum=sum+ii,average=average/。。。。在
这是一种计算标准差的冗长方法。这是一种更像Python的方式,我敢说它也更具可读性。在
代码中的数学错误如下:
您想要},这取决于您的d.o.f.偏好。在我解决了这个问题之后,你的(修改的)代码似乎可以工作了。在
dev = sqrt(stdev/listcount)
或{相关问题 更多 >
编程相关推荐