input: Write a class to find the median of an unsorted list of numbers. The class should have an add method to add numbers to the list and a find_median method to return the median of the numbers added so far. If the list is empty, find_median should return None.
  
  class MedianFinder:
   def __init__(self):
       self._data = []
   
   def add(self, num):
       self._data.append(num)
   
   def find_median(self):
       if not self._data:
           return None
       data = sorted(self._data)
       n = len(data)
       return (data[(n-1)//2] + data[n//2])/2
  
  assert MedianFinder().find_median()==None
  mf = MedianFinder()
  mf.add(3)
  mf.add(5)
  mf.add(2)
  mf.add(1)
  assert mf.find_median()==2.5
  mf.add(4)
  assert mf.find_median()==3
output: 
  class MedianFinder:
   def __init__(self):
       self._data = []
   
   def add(self, num):
       self._data.append(num)
   
   def find_median(self):
       if not self._data:
           return None
       data = sorted(self._data)
       n = len(data)
       return (data[(n-1)//2] + data[n//2])/2
  