开始Python打印标准差
问题描述:
我想弄清楚我的代码有什么问题。任何人都可以修复它?开始Python打印标准差
def main():
fname = input("Enter filename:")
infile = open(fname, "r")
SD()
def SD():
b= []
a = 5.0
r = len(b)
for n in range(r-1):
b.append((r[n] -a)**2)
m = (float(b)/r)**0.5
print("The standard deviation is", m)
main()
答
你有错误了一把:
def SD():
# b is empty
b= []
a = 5.0
#this will always be 0
r = len(b)
# range(r-1) == [] because it is range(-1)
# whole loop is skipped
for n in range(r-1):
b.append((r[n] -a)**2)
# float(b) should throw an error, maybe sum(b) ?
m = (float(b)/r)**0.5
print("The standard deviation is", m)
main()
b
是一个列表;你不能将一个列表转换成一个浮点数。
也许你想传递一个数组到SD()
?你应该read()
文件内容,那么也许split()
是到一个数组中,并把它传递给SD()作为参数
+0
谢谢我的代码现在可以工作 – LorrJ 2012-03-19 23:34:19
答
对于一个样本(在这里您可以与他们联系int()
):
def SD(numList):
cntN=len(numList)
sumN=0
for i in numList:
sumN+=i
avgVal=float(sumN)/float(cntN)
sumVar=0.0
for i in range(cntN):
sumVar+=float((numList[i]-avgVal)**2)
return ((float(sumVar)/float((cntN-1)))**0.5)
什么让你觉得有问题? (你得到什么输出,你期望得到什么?) – mfrankli 2012-03-19 04:20:12
我得到了这个错误信息:Traceback(最近调用最后一次): 文件“C:\ Python32 \ new.py”,第14行,在 文件“C:\ Python32 \ new.py”,第12行,在SD 中m =(float(b()) 文件“C:\ Python32 \ new.py”,第4行,主要为 SD() )/ r)** 0.5 TypeError:float()参数必须是字符串或数字 –
LorrJ
2012-03-19 04:22:02
@LorraineJane:'b'是一个列表,不是一个数除以r,其次,len(b)将为0 'as'b = []',请检查您是否打算这么做。 – avasal 2012-03-19 04:26:07