Реализуйте несколько классов, вычисляющих суммы следующих последовательностей натуральных чисел от 1 до N:
1+2+3...+n
1^2+2^2+3^2...+n^2
1^3+2^3+3^3...+n^3
Сделайте это с наследования.
Базовым классом будет Summator, который реализует методы transform(n) и sum(N).
Метод transform(n) выполняет преобразование элемента последовательности. Для класса Summator это будет тождественное преобразование, т.е. transform(n) == n. Метод transform(n) будет переопределяться в производных классах.
Метод sum(N) должен вычислять сумму значений transform(n) для всех значений n от 1 до N.
Производные классы должны переопределять метод transform(n):
SquareSummator: transform(n) == n ** 2
CubeSummator: transform(n) == n ** 3
Метод sum(N) переопределять не нужно.
Мой код:
class Summator:
def transform(self, n):
return n
def sum(self, N):
count = 0
for i in range(N + 1):
count += self.transform(int(i))
return count
class SquareSummator(Summator):
def transform(self, n):
return n ** 2
class CubeSummator(Summator):
def transform(self, n):
return n ** 3