Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/163: Рейтинг темы: голосов - 163, средняя оценка - 4.88
2 / 2 / 0
Регистрация: 11.12.2018
Сообщений: 19
1

Сумматоры-2

14.04.2019, 14:06. Показов 31893. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Реализуйте класс PowerSummator, вычисляющий сумму последовательности натуральных чисел от 1 до N

Как и в классной задаче «Сумматоры», класс PowerSummator должен наследоваться от класса Summator.

Напомним, что класс Summator должен иметь методы transform(n) и sum(N).

Метод transform(n) выполняет преобразование элемента последовательности. Для класса Summator это будет тождественное преобразование, т.е. transform(n) == n. Метод transform(n) должен быть переопределен в классе PowerSummator.
Метод sum(N) должен вычислять сумму значений transform(n) для всех значений n от 1 до N.

Помимо метода transform, для класса PowerSummator также нужно переопределить конструктор. Конструктор класса PowerSummator должен принимать один параметр – степень b, в которую нужно возводить элементы последовательности.

Также отнаследуйте от класса PowerSummator классы SquareSummator и CubeSummator, которые (как и в классной задаче «Сумматоры») должны вычислять суммы квадратов и кубов соответственно. Конструкторы классов SquareSummator и CubeSummator не должны принимать аргументов. В классах SquareSummator и CubeSummator должен быть переопределён только конструктор; переопределять другие методы нельзя.

Прошу помочь с заданием. Мои наработки:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Summator:
    def transform(self, n):
        return n
 
    def sum(self, N):
        x = 0
        for i in range(1, N + 1):
            x += self.transform(i)
        return x
 
 
class PowerSummator(Summator):
    def __init__(self, b):
        pass
 
    def transform(self, b):
        pass
 
 
class SquareSummator(PowerSummator):
    pass
 
 
class CubeSummator(PowerSummator):
    pass
Там, где у меня стоит pass - должны быть определённые строки кода.
Так же есть ещё одна наработка, но она неправильна:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Summator:
    def transform(self, n):
        return n
 
    def sum(self, N):
        x = 0
        for i in range(1, N + 1):
            x += self.transform(i)
        return x
 
 
class PowerSummator(Summator):
    def __init__(self, b):
        pass
 
    def transform(self, n, b):
        super().transform(n, b)
        return n ** b
 
 
class SquareSummator(PowerSummator):
    def transform(self, n):
        return n ** 2
 
 
class CubeSummator(PowerSummator):
    def transform(self, n):
        return n ** 3
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2019, 14:06
Ответы с готовыми решениями:

Сумматоры
Реализуйте несколько классов, вычисляющих суммы следующих последовательностей натуральных чисел от...

Сумматоры
На каких логических элементах можно построить сумматор? Схема, принцип действия.

помогите. сумматоры
Задачи Нарисовать схему одноразрядного сумматора Z=X+Y с учетом переноса Р. Указание: изобразить...

Сумматоры ТТЛ- и ТТЛШ-серий
Добрый день может кто нибудь подсказать серии ИМС одноразрядного полусумматора и неполного...

6
1728 / 968 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
14.04.2019, 22:48 2
Цитата Сообщение от Bigfartyk Посмотреть сообщение
Как и в классной задаче «Сумматоры», класс PowerSummator должен наследоваться от класса Summator
Так как в условии идет ссылка на классную задачу «Сумматоры», про которую ничего не известно, то сделать полноценный анализ нет возможности. Можно только сделать некоторые замечания исходя из имеющегося материала.
Цитата Сообщение от Bigfartyk Посмотреть сообщение
Конструкторы классов SquareSummator и CubeSummator не должны принимать аргументов.
и
Цитата Сообщение от Bigfartyk Посмотреть сообщение
В классах SquareSummator и CubeSummator должен быть переопределён только конструктор
Это значит, что экземпляры классов SquareSummator и CubeSummator не имеют атрибутов, так как они не инициируются этими классами в конструкторах и, так как все таки имеют свои конструкторы, то не могут наследовать атрибуты из суперклассов.
Цитата Сообщение от Bigfartyk Посмотреть сообщение
В классах SquareSummator и CubeSummator должен быть переопределён только конструктор; переопределять другие методы нельзя.
У Вас же во втором коде в классах SquareSummator и CubeSummator отсуствуют конструкторы и наоборот присутствует переопределение метода transform , что противоречит заданию. Видимо для вычисления суммы квадратов и суммы кубов нужно определить методы с другими именами.
В общем Вам в классах SquareSummator и CubeSummator нужно добавить конструкторы только с одним аргументом self
Python
1
def __init__(self)
(как совсем без аргументов не представляю, можно ли так, это нужно разбираться).
И изменить имена у методов вычисляющих сумму квадратов и сумму кубов.
Больше ничего посоветовать не могу, так как не знаю, что в классной задаче «Сумматоры».
1
3 / 2 / 1
Регистрация: 23.03.2019
Сообщений: 6
19.04.2019, 20:39 3
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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 PowerSummator(Summator):
    def __init__(self, b):
        self.b = b
 
    def transform(self, n):
        return n ** self.b
 
 
class SquareSummator(PowerSummator):
    def __init__(self):
        pass
 
    def transform(self, n):
        return n ** 2
 
 
class CubeSummator(PowerSummator):
    def __init__(self):
        pass
 
    def transform(self, n):
        return n ** 3
Добавлено через 14 секунд
как то так
0
4 / 4 / 0
Регистрация: 22.04.2019
Сообщений: 1
22.04.2019, 22:22 4
Вот 100% правильный вариант(у меня сработал):
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Summator:
    def transform(self, n):
        return n
 
    def sum(self, N):
        s = 0
        for i in range(1, N + 1):
            s += self.transform(i)
        return s
 
 
class PowerSummator(Summator):
    def __init__(self, b):
        self.b = b
 
    def transform(self, n):
        return n ** self.b
 
 
class SquareSummator(PowerSummator):
    def __init__(self):
        super().__init__(2)
 
 
class CubeSummator(PowerSummator):
    def __init__(self):
        super().__init__(3)
4
1 / 1 / 0
Регистрация: 03.11.2022
Сообщений: 41
28.04.2023, 19:26 5
у тебя код правильный, но с ошибками pep8, вот исправленный если кому-то еще нужен

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 __init__(self):
        pass
 
    def transform(self, n):
        return n ** 2
 
 
class CubeSummator(Summator):
    def __init__(self):
        pass
 
    def transform(self, n):
        return n ** 3
0
0 / 0 / 0
Регистрация: 31.03.2024
Сообщений: 15
11.04.2024, 20:43 6
Не сомневайся Я.лицей еще идет...)
0
0 / 0 / 0
Регистрация: 31.03.2024
Сообщений: 15
15.04.2024, 21:22 7
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Summator:
    def transform(self, n):
        return n
 
    def sum(self, N):
        return sum(self.transform(n) for n in range(1, N + 1))
 
 
class PowerSummator(Summator):
    def __init__(self, b):
        self.b = b
 
    def transform(self, n):
        return n ** self.b
 
 
class SquareSummator(PowerSummator):
    def __init__(self):
        super().__init__(2)
 
 
class CubeSummator(PowerSummator):
    def __init__(self):
        super().__init__(3)
Перепробовал все варианты, перечисленные выше выше, и все неправильно(

Но мой вариант сработал и прошел проверку)
0
15.04.2024, 21:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2024, 21:22
Помогаю со студенческими работами здесь

Многоразрядные сумматоры с ускоренным переносом
Немного почитал теорию про данный метод Самый простой пример сложение: переменная =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru