# -*- coding: utf-8 -*-
"""
Created on Thu Dec 16 10:25:31 2021

@author: Sim
"""
class MyStats:
    
  def __init__(self, xx):
      self.xx = xx.sort()
      self.xx = xx
      self.n = len(xx)
         
  def sum2p(self, p):
     res = 0
     for x in self.xx:
        res = res + x ** p
     return res

  def iseven(self):
     if self.n % 2 == 0: return True
     else: return False

  def mymed(self):
     n = self.n
     if self.iseven():
       median = ( self.xx[int(n/2-1)] + self.xx[int(n/2)] ) /2
     else:
       median = self.xx[int((n-1)/2)]
     return median
   
class MySummary(MyStats):
    def __init__(self, data):
      super().__init__(data)
      self.min = data[0]
      self.max = data[self.n-1]
      
    def ave(self):
      mm = super().sum2p(1)/self.n
      return mm
  
    def var(self):
      vv = super().sum2p(2) - self.n*self.ave()**2 
      return vv/(self.n-1)
  
    def mymed(self):
      md = super().mymed()
      return md

if __name__ == '__main__':        
   x1 = list(range(2,21,2))
   x1 = list(range(3, 100, 3))
   x1 = [1,3,4,2,2,4,5,6,10,11,32,22,9,8,7,20,30,25,15]

   b = MySummary(x1)

   min = b.min
   max = b.max
   mm = b.ave()
   vv = b.var()
   md = b.mymed()

   print(b.n, mm, vv, md, b.iseven(), min, max)

