这个想法是创建一个类,该类可以检查列表中的所有项目是否都是整数,如果是,则将这些项目的总和计算为平均值。如果列表中的所有项目都不是整数,则将引发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/

10-11 23:03
查看更多