试图在类中创建一个方法来计算python中人员列表的平均年龄
我试图在类中创建一个方法,用python计算列表的平均年龄。 基本上,假设我有一个名为peoplelist的不同人员列表,peoplelist中的每个人都有一个格式(身高、年龄、性别),例如person1=1.77、27、m。我需要得到列表中每个人年龄的总和,然后除以列表的长度并返回结果。 到目前为止,我已经:试图在类中创建一个方法来计算python中人员列表的平均年龄,python,class,methods,mean,Python,Class,Methods,Mean,我试图在类中创建一个方法,用python计算列表的平均年龄。 基本上,假设我有一个名为peoplelist的不同人员列表,peoplelist中的每个人都有一个格式(身高、年龄、性别),例如person1=1.77、27、m。我需要得到列表中每个人年龄的总和,然后除以列表的长度并返回结果。 到目前为止,我已经: def __len__(self): return len(self.peoplelist) def __age__(self): agesum = 0 for
def __len__(self):
return len(self.peoplelist)
def __age__(self):
agesum = 0
for value in self.peoplelist:
agesum = agesum + value.age
print(agesum)
return agesum/len(self.peoplelist)
然而,这似乎不起作用,任何帮助或解释这不起作用的原因都将不胜感激。假设
值。age
返回正确的值,以下内容应该有效
def __age__(self):
agesum = 0
for value in self.peoplelist:
agesum = agesum + value.age
return agesum / len(self.peoplelist)
如果没有,您必须在原始问题中包含如何调用函数的代码。您可以使用sum()
函数:
def age(self):
return sum(p.age for p in self.peoplelist) / float(len(self.peoplelist))
注意float()
;在Python2中,默认情况下,整数的除法为底数除法(向下舍入)。或者,在python代码的顶部添加来自uuu future uuu import division的,以启用浮点除法
注意,我将方法命名为.age()
;如果您的self.peoplelist如下所示,则仅对.使用双下划线名称(“dunder”):
[(1.77, 27, 'm'), ...]
那么,以下几点应该起作用:
def __len__(self):
return len(self.peoplelist)
def __age__(self):
agesum = 0
for value in self.peoplelist:
agesum = agesum + value[1]
print(agesum)
return agesum/len(self.peoplelist)
它以什么方式失败?此外,将其命名为\uuuu age\uuuu
也不是一个好主意(只需age
就可以了)。该格式的双下划线名称保留给python用于特殊用途。既然是这样,阅读类的API的人可能会有点困惑。你能分享一下错误吗?或者您没有得到预期的输出?一个变量depthsum
似乎应该是agesum
。你能检查一下吗?我不认为它存储为元组,当我测试它时,value.age会返回age整数。当我在pythonshell中手动输入for循环时,它就工作了,而当我尝试在程序中执行该方法时,它就不工作了。可能是我执行的方法不对吗?