这是我第一次尝试使用python3.6编写一个使用类和对象的函数程序。我要做的是以数字列表的形式获取输入,并返回项数、总和、平均值和方差。以下是我目前的代码:
>>> class stats:
aList2 = []
def __init__(self, aList):
self.aList = aList
def n(self):
return len(self.aList)
def total(self):
return sum(self.aList)
def average(self):
return sum(self.aList)/len(self.aList)
def sqr_diff(self):
for i in range(0, len(self.aList)):
self.sqr_diff = (self.average() -
self.aList[i])**2
stats.aList2.append(self.sqr_diff)
return sum(self.aList2)
def variance(self):
return (self.sqr_diff()/(self.n() - 1))
在我得到方差函数之前,这非常有效:
>>> s = stats([5.0,7.0,10.0,12.0])
>>> s.n()
4
>>> s.total()
34.0
>>> s.average()
8.5
>>> s.sqr_diff()
29.0
>>> s.variance()
Traceback (most recent call last):
File "<pyshell#250>", line 1, in <module>
s.variance()
File "<pyshell#244>", line 17, in variance
return (self.sqr_diff()/(self.n() - 1))
TypeError: 'float' object is not callable
>>>
我所做的是使sqr\u diff模块返回一个float by
return float(sum(self.aList2))
这似乎根本没有改变错误信息。我不知道会是什么
这是因为您有一个名为
sqr_diff
的变量和方法。在variance
方法中,sqr_diff()
被方法中定义的浮点变量覆盖为了防止将来发生这种情况,您可以采用一种命名约定,例如:
CamelCase
对于类,mixedCase
方法和函数,以及下划线分隔的变量名更改其中一个方法或变量名以解决此问题。
似乎当您再次调用self.sqr\u diff()函数时,返回值无法读取。 可能GLP阻止了这个值,抱歉我不知道原因。但我修改了你的代码,它就行了
相关问题 更多 >
编程相关推荐