这个想法是创建一个类,该类可以检查列表中的所有项目是否都是整数,如果是,则将这些项目的总和计算为平均值。如果列表中的所有项目都不是整数,则将引发ValueError异常。
这是我目前拥有的:
class AvgList(list):
def avg(self):
self.list = []
for items in self:
if not isinstance(items,int):
try:
pass
except ValueError:
print('Invalid item in list. All items need to be an integer.')
for x in []:
return sum(x)/len(list)
def append(self, item):
newList = list.append(self,item)
return newList
def __len__(self):
return len(self.list)
mylist = AvgList()
mylist.append(1)
mylist.append(5)
mylist.append(10)
print(mylist)
print(mylist.avg())
当前,当我运行它时,它返回:
[1, 5, 10]
None
但是,我不知道如何使它返回平均值。我究竟做错了什么?
最佳答案
尝试这个
class AvgList(list):
def avg(self):
for items in self:
if not isinstance(items,int):
raise ValueError('Invalid item in list. All items need to be an integer.')
return sum(self)/len(self)
您不需要重写append和len方法,因为您在这些方法中没有做任何特别的事情。
关于python - 实现一个称为平均值的类作为列表的子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33795535/