У меня есть задача:
Напишите классы MinValue, MaxValue, MeanValue, MedianValue, которые вычисляют минимальное, максимальное, среднее арифметическое значение и медиану последовательности целых чисел.
Экземпляры классов создаются без аргументов. Напишите метод add, который должен добавлять в последовательность число, которое будет учтено при вычислении результата методом get_result. Для MinValue и MaxValue get_result должен возвращать целое число, для MeanValue и MedianValue — число типа float.
Если в последовательности нет чисел, метод get_result должен возвращать None.
Данная задача решается без применения принципа наследования классов. На проверку отправляется код с классом.
Я написал код и отправляю его на проверку, но один из тестов не проходит и я не понимаю, что я забыл учесть...
Вот мой код:
class MinValue:
def __init__(self):
self.data = []
def add(self, number):
self.data.append(number)
def get_result(self):
if self.data:
return min(self.data)
return None
class MaxValue:
def __init__(self):
self.data = []
def add(self, number):
self.data.append(number)
def get_result(self):
if self.data:
return max(self.data)
return None
class MeanValue:
def __init__(self):
self.data = []
def add(self, number):
self.data.append(number)
def get_result(self):
if self.data:
return sum(self.data) / len(self.data)
return None
class MedianValue:
def __init__(self):
self.data = []
def add(self, number):
self.data.append(number)
def get_result(self):
if self.data:
if len(self.data) == 1:
return float(self.data[0])
elif len(self.data) % 2 != 0 and len(self.data) > 1:
return float(self.data[len(self.data) // 2 + 1])
else:
if len(self.data) > 2:
return float((self.data[len(self.data) // 2 + 1] + self.data[len(self.data) // 2]) / 2)
else:
return float((self.data[0] + self.data[1]) / 2)
return None