0 / 0 / 0
Регистрация: 26.10.2019
Сообщений: 2

Добрый ифрит

02.02.2022, 23:19. Показов 2586. Ответов 5

Студворк — интернет-сервис помощи студентам
Ифрит сложил крылья и встал на колени, но даже на коленях он был высотой с дом, а его лицо, проступавшее сквозь туман, оказалось просто ужаснее некуда.

– Знай же, что я – один из величайших в сонмище Добрых Ифритов и имя моё Хазруэль.

Напишите класс GoodIfrit, экземпляр которого инициализируется с аргументами: высота, имя, доброта.

Класс должен реализовывать функциональность (gi – экземпляр класса):

– change_goodness(value) – менять доброту на указанную величину; не может стать отрицательной, в этом случае становится равной 0;

– к экземпляру класса можно прибавить число: gi1 = gi + number, создается новый экземпляр с высотой, большей на величину number, остальные характеристики те же;

– экземпляр класса можно вызвать с аргументом, возвращается значение: аргумент * доброта // высота

__str__ – возвращает строку вида:

Good Ifrit <имя>, height <высота>, goodness <доброта>

– экземпляры можно сравнивать между собой: сначала по доброте, затем по высоте, затем по имени по алфавиту; для этого нужно реализовать методы сравнения: <, >, <=, >=, ==, !=.

Ввод:
gi = GoodIfrit(80, "Hazrul", 3)
gi.change_goodness(4)
print(gi)
gi1 = gi + 15
print(gi1)
print(gi(31))

Вывод:
Good Ifrit Hazrul, height 80, goodness 7
Good Ifrit Hazrul, height 95, goodness 7
2


Ввод:
gi = GoodIfrit(80, "Hazrul", 3)
gi1 = GoodIfrit(80, "Dalziel", 1)
print(gi < gi1)
gi1.change_goodness(2)
print(gi > gi1)
print(gi, gi1, sep='\n')

Вывод:
False
True
Good Ifrit Hazrul, height 80, goodness 3
Good Ifrit Dalziel, height 80, goodness 3
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.02.2022, 23:19
Ответы с готовыми решениями:

Добрый день!
Вводится строка &quot;Добрый день, ИМЯ&quot; без знаков препинания в конце. Выведите имя человека, которому отправлено приветствие. ФОРМАТ...

Добрый друг
Джиб поглядел в сторону холмов. Там, в лесном краю, жил его добрый друг, Хэл из Дерева-с-дуплом. Каждое утро, если, конечно, на болото не...

Народ добрый вечер, возникла проблема с решением этой задачи на языке python
На депозитный счет вноситься сумма х на количество лет n с годовой ставкой k%. Определить сумму на счете в конце рассчетного периода, при...

5
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
03.02.2022, 14:13
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
34
35
36
37
38
39
40
41
42
43
44
from copy import deepcopy
class GoodIfrit:
    def __init__( self, height, name, goodness ):
        self.height   = height
        self.name     = name
        self.goodness = goodness
    #==========================================================================
    def change_goodness(self, value):
        self.goodness += value
        if self.goodness < 0:
            self.goodness = 0
    # ==========================================================================
    def __add__(self, other):
        new = deepcopy(self)
        new.height += other
        return new
    # ==========================================================================
    def __call__(self, arg):
        return arg * self.goodness // self.height
    # ==========================================================================
    def __str__(self):
        return f'Good Ifrit {self.name}, height {self.height}, goodness {self.goodness}'
    # ==========================================================================
    def __lt__(self, other):
        return (self.goodness, self.height, self.name) < (other.goodness, other.height, other.name)
    # =========================================================================
    def __eq__(self, other):
        return not self < other and not other < self
    # =========================================================================
    def __ne__(self, other):
        return not self == other
    # =========================================================================
    def __ge__(self, other):
        return not self < other
    # =========================================================================
    def __gt__(self, other):
        return other < self
    # =========================================================================
    def __le__(self, other):
        return not self > other
# =============================================================================
a = GoodIfrit(80, "Hazrul", 3)
b = GoodIfrit(80, "Dalziel", 3)
print(a > b)
1
0 / 0 / 0
Регистрация: 30.01.2022
Сообщений: 12
07.02.2022, 19:17
Извини, что спрашиваю так поздно, но код выдает invalid syntax на 22 строчке. С чем может быть связано ?
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
07.02.2022, 19:55
Цитата Сообщение от Art1stown Посмотреть сообщение
код выдает invalid syntax на 22 строчке. С чем может быть связано ?
Начиная с версии 3.6 в Python появился новый тип строк — f-строки

Может у вас версия ниже 3.6?
0
0 / 0 / 0
Регистрация: 30.01.2022
Сообщений: 12
07.02.2022, 20:05
Спасибо, с этим разобрался. Версия действительно была ниже. Но если вам будет не сложно, можете подсказать, что требуется дописать в вашем коде что бы выводило
"Good Ifrit Hazrul, height 80, goodness 7
Good Ifrit Hazrul, height 95, goodness 7" - как в задании. Заранее спасибо.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
07.02.2022, 21:38
Цитата Сообщение от Art1stown Посмотреть сообщение
что бы выводило
"Good Ifrit Hazrul, height 80, goodness 7
Good Ifrit Hazrul, height 95, goodness 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from copy import deepcopy
class GoodIfrit:
    def __init__( self, height, name, goodness ):
        self.height   = height
        self.name     = name
        self.goodness = goodness
    #==========================================================================
    def change_goodness(self, value):
        self.goodness += value
        if self.goodness < 0:
            self.goodness = 0
    # ==========================================================================
    def __add__(self, other):
        new = deepcopy(self)
        new.height += other
        return new
    # ==========================================================================
    def __call__(self, arg):
        return arg * self.goodness // self.height
    # ==========================================================================
    def __str__(self):
        return f'Good Ifrit {self.name}, height {self.height}, goodness {self.goodness}'
    # ==========================================================================
    def __lt__(self, other):
        return (self.goodness, self.height, self.name) < (other.goodness, other.height, other.name)
    # =========================================================================
    def __eq__(self, other):
        return not self < other and not other < self
    # =========================================================================
    def __ne__(self, other):
        return not self == other
    # =========================================================================
    def __ge__(self, other):
        return not self < other
    # =========================================================================
    def __gt__(self, other):
        return other < self
    # =========================================================================
    def __le__(self, other):
        return not self > other
# =============================================================================
gi = GoodIfrit(80, "Hazrul", 3)
gi.change_goodness(4)
print(gi)
gi1 = gi + 15
print(gi1)
print(gi(31))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.02.2022, 21:38
Помогаю со студенческими работами здесь

Злой Ифрит
Решите пожалуйста в течение 50 минут! Напишите класс EvilIfrit, который инициализируется с аргументами: – имя; – рост; – цвет. ...

добрый день, форумчане
Недавно столкнулся с такими неизвестными мне понятиями, как : 'сортировка по элементу tuples', 'lambda', 'enumerate'. Чем они связаны,...

Добрый вечер, распишите пожалуйста!
Для данного вещественного х найти значение следующей функции f , принимающей вещественные значения: f(x)=2*sin(x), если x&gt;0 f(x)=...

Добрый день ! Задача на создание словаря
Нужно в задаче сформировать словарь,позволяющий пользователю добавлять новые слова в словарь,менять слова ,которые есть в словаре та...

Добрый день! Проблема с статус кодами
Добрый день! Проблема со статус кодами. Пытался посылать много запросов до тех пор, пока сайт не упадёт. В консоли выдало статус код 500,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru