Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 26.10.2019
Сообщений: 2

Добрый ифрит

02.02.2022, 23:19. Показов 2581. Ответов 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,707
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,707
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,707
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru