С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/26: Рейтинг темы: голосов - 26, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 17.04.2019
Сообщений: 42

Задача "Шкаф"

06.05.2022, 17:15. Показов 6962. Ответов 22

Студворк — интернет-сервис помощи студентам
Помогите с классами. Вообще с ними не особо дружу, но задача ОЧЕНЬ нужна!!!

Напишите базовый класс Wardrobe (Шкаф) и два производных от него класса: JustWardrobe (Просто Шкаф) и MagicWardrobe (Волшебный Шкаф).
При инициализации экземпляры всех классов принимают произвольное количество аргументов: у простого шкафа это вещи, которые в нём хранятся, а у волшебного – список стран, в которые из него можно попасть.

Базовый класс умеет возвращать строку из аргументов через пробел (метод __str__).

У каждого из производных классов переопределите методы, возвращающие содержимое: у простого шкафа в том же порядке через запятую и пробел, в конце точка, первое слово с большой буквы; у волшебного все страны записываются с прописной буквы, остальные маленькие, через запятую и пробел в алфавитном порядке, в конце точка.

Экземпляры классов можно сравнивать: волшебный всегда больше простого; шкафы одного типа сравниваются по количеству вещей (или стран).

Пример 1
Ввод
wa = Wardrobe("socks", "jacket", "hat")
jw = JustWardrobe("trousers", "blouse")
mw = MagicWardrobe("Narnia", "Wonderland", "Dreamland")
print(*[wa, jw, mw], sep='\n')

Вывод
socks jacket hat
Trousers, blouse.
Dreamland, Narnia, Wonderland.

Пример 2
Ввод
jw1 = JustWardrobe("socks", "jacket", "hat")
jw2 = JustWardrobe("trousers", "blouse")
mw1 = MagicWardrobe("Narnia", "Wonderland", "Dreamland")
mw2 = MagicWardrobe("Kingdom", "Mordor", "Middle Earth")
print(jw1 > jw2)
print(jw1 == mw1)
print(jw2 <= mw2)
print(mw1 != mw2)

Вывод
True
False
True
False
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.05.2022, 17:15
Ответы с готовыми решениями:

Описать класс шкаф
Описать класс шкаф, который задается длиной, шириной и высотой шкафа. Перегрузить операции сравнения (больше, меньше, ровно) двух...

Можно ли шкаф пронести через двери
Задано размеры прямоугольных дверей a, b и размеры шкафа, имеет форму прямоугольного параллелепипеда x, y, z. Проверить, можно ли шкаф...

Проверить, можно ли шкаф пронести через дверь
34.Дано размеры прямоугольныx дверей a, b и размеры шкафа, имеет форму прямоугольного параллелепипеда x, y, z. Проверить, можно ли шкаф...

22
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
06.05.2022, 17:55
Цитата Сообщение от cheerful-29 Посмотреть сообщение
Вообще с ними не особо дружу
10 минут внимательного чтения и вы друзья будут вопросы с кодом, спрашивайте.
0
0 / 0 / 0
Регистрация: 07.05.2022
Сообщений: 23
08.05.2022, 19:02
плиз )

Добавлено через 18 секунд
cheerful-29, удалось написать код?
0
08.05.2022, 19:06

Не по теме:

volegova-nv, сириус?

0
0 / 0 / 0
Регистрация: 01.05.2023
Сообщений: 1
01.05.2023, 10:07
class Wardrobe:
def __init__(self, *v):
self.v = v
self.lenn = len(v)

def __str__(self):
s = ''
for i in self.v:
s += i + ' '
return s

def __lt__(self, y):
if self.__class__.__name__ == y.__class__.__name__:
x1 = self.lenn
y1 = y.lenn
return x1 < y1
elif self.__class__.__name__ == "MagicWardrobe":
return False
else:
return True

def __le__(self, y):
if self.__class__.__name__ == y.__class__.__name__:
x1 = self.lenn
y1 = y.lenn
return x1 <= y1
elif self.__class__.__name__ == "MagicWardrobe":
return False
else:
return True

def __eq__(self, y):
if self.__class__.__name__ == y.__class__.__name__:
x1 = self.lenn
y1 = y.lenn
return x1 == y1
return False

def __ne__(self, y):
if self.__class__.__name__ == y.__class__.__name__:
x1 = self.lenn
y1 = y.lenn
return x1 != y1
return True

def __gt__(self, y):
if self.__class__.__name__ == y.__class__.__name__:
x1 = self.lenn
y1 = y.lenn
return x1 > y1
elif self.__class__.__name__ == "MagicWardrobe":
return True
else:
return False

def __ge__(self, y):
if self.__class__.__name__ == y.__class__.__name__:
x1 = self.lenn
y1 = y.lenn
return x1 >= y1
elif self.__class__.__name__ == "MagicWardrobe":
return True
else:
return False


class JustWardrobe(Wardrobe):
def __init__(self, *v):
self.v = v
self.lenn = len(v)

def __str__(self):
s = ''
for i in range(len(self.v)):
if i == 0:
w = self.v[i][0].upper() + self.v[i][1:]
s += w
else:
s += ', ' + self.v[i]
s += '.'
return s


class MagicWardrobe(Wardrobe):
def __init__(self, *v):
self.v = v
self.lenn = len(v)

def __str__(self):
s = ''
self.v = sorted(self.v)
for i in range(len(self.v)):
if i == 0:
w = self.v[i][0].upper() + self.v[i][1:]
s += w
else:
s += ', '
w = self.v[i][0].upper() + self.v[i][1:]
s += w
s += '.'
return s
0
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
01.05.2023, 22:17
cheerful-29, помогли вам?
0
0 / 0 / 0
Регистрация: 08.03.2023
Сообщений: 5
18.09.2023, 16:28
попытался привести код в "читаемое" состояние, но работает он не так, как должен, мб я где-то неправильно что-то сделал

Добавлено через 12 минут
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
class Wardrobe:
    def __init__(self, *v):
        self.v = v
        self.lenn = len(v)
 
    def __str__(self):
        s = ''
        for i in self.v:
            s += i + ' '
        return s
 
    def __lt__(self, y):
        if self.__class__.__name__ == y.__class__.__name__:
            x1 = self.lenn
            y1 = y.lenn
            return x1 < y1
        elif self.__class__.__name__ == "MagicWardrobe":
            return False
        else:
            return True
 
    def __le__(self, y):
        if self.__class__.__name__ == y.__class__.__name__:
            x1 = self.lenn
            y1 = y.lenn
            return x1 <= y1
        elif self.__class__.__name__ == "MagicWardrobe":
            return False
        else:
            return True
 
    def __eq__(self, y):
        if self.__class__.__name__ == y.__class__.__name__:
            x1 = self.lenn
            y1 = y.lenn
            return x1 == y1
        return False
 
    def __ne__(self, y):
        if self.__class__.__name__ == y.__class__.__name__:
            x1 = self.lenn
            y1 = y.lenn
            return x1 != y1
        return True
 
    def __gt__(self, y):
        if self.__class__.__name__ == y.__class__.__name__:
            x1 = self.lenn
            y1 = y.lenn
            return x1 > y1
        elif self.__class__.__name__ == "MagicWardrobe":
            return True
        else:
            return False
 
    def __ge__(self, y):
        if self.__class__.__name__ == y.__class__.__name__:
            x1 = self.lenn
            y1 = y.lenn
            return x1 >= y1
        elif self.__class__.__name__ == "MagicWardrobe":
            return True
        else:
            return False
 
 
class JustWardrobe(Wardrobe):
    def __init__(self, *v):
        self.v = v
        self.lenn = len(v)
 
    def __str__(self):
        s = ''
        for i in range(len(self.v)):
            if i == 0:
                w = self.v[i][0].upper() + self.v[i][1:]
                s += w
            else:
                s += ', ' + self.v[i]
                s += '.'
        return s
 
 
class MagicWardrobe(Wardrobe):
    def __init__(self, *v):
        self.v = v
        self.lenn = len(v)
 
    def __str__(self):
        s = ''
        self.v = sorted(self.v)
        for i in range(len(self.v)):
            if i == 0:
                w = self.v[i][0].upper() + self.v[i][1:]
                s += w
            else:
                s += ', '
                w = self.v[i][0].upper() + self.v[i][1:]
                s += w
                s += '.'
        return s

код должен выводить:
socks jacket hat
Trousers, blouse.
Dreamland, Narnia, Wonderland.

но выводит:
socks jacket hat
Trousers, blouse.
Dreamland, Narnia., Wonderland.

после нарнии стоит точка, как это фиксить?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.09.2023, 16:53
Цитата Сообщение от ssxxcckk Посмотреть сообщение
как это фиксить?
80 и 100 строку влево на два таба сдвинь
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
18.09.2023, 19:27
Вот так правильнее будет:
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
48
49
50
51
52
53
54
55
56
57
class Wardrobe:
    def __init__(self, *things):
        self.things = things
 
    def __str__(self):
        return ' '.join(self.things)
 
    def __lt__(self, other):
        return len(self.__str__()) < len(other.__str__())
 
    def __eq__(self, other):
        return len(self.__str__()) == len(other.__str__())
 
    def __le__(self, other):
        return self < other or self == other
 
class JustWardrobe(Wardrobe):
    def __init__(self, *things):
        super().__init__(*things)
 
    def __str__(self):
        res = ', '.join(self.things) + '.'
        return res[0].upper() + res[1:]
 
class MagicWardrobe(Wardrobe):
    def __init__(self, *things):
        super().__init__(*things)
 
    def __str__(self):
        return (', '.join(sorted(self.things)) + '.').title()
 
    def __lt__(self, other):
        if isinstance(other, MagicWardrobe):
            return self < other
        else:
            return False
 
wa = Wardrobe("socks", "jacket", "hat")
jw = JustWardrobe("trousers", "blouse")
mw = MagicWardrobe("Narnia", "Wonderland", "Dreamland")
print(*[wa, jw, mw], sep='\n')
# socks jacket hat
# Trousers, blouse.
# Dreamland, Narnia, Wonderland.
 
jw1 = JustWardrobe("socks", "jacket", "hat")
jw2 = JustWardrobe("trousers", "blouse")
mw1 = MagicWardrobe("Narnia", "Wonderland", "Dreamland")
mw2 = MagicWardrobe("Kingdom", "Mordor", "Middle Earth")
print(jw1 > jw2)
print(jw1 == mw1)
print(jw2 <= mw2)
print(mw1 != mw2)
# True
# False
# True
# False
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
19.09.2023, 06:50
idealist, у вас какое-то свое сравнение. Не по ТЗ.

Python
1
2
3
jw1 = JustWardrobe("s", "j", "h")
jw2 = JustWardrobe("trousers", "blouse")
print(jw1 > jw2)
Добавлено через 34 минуты
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
class Wardrobe:
    def __init__(self, *things):
        self.things = things
        
    def _volume(self):
        return 0, len(self.things)
 
    def __str__(self):
        return ' '.join(self.things)
 
    def __lt__(self, other):
        return self._volume() < other._volume()
 
    def __eq__(self, other):
        return self._volume() == other._volume()
 
    def __le__(self, other):
        return self._volume() <= other._volume()
 
class JustWardrobe(Wardrobe):
    def __init__(self, *things):
        super().__init__(*things)
 
    def __str__(self):
         return (', '.join(self.things) + '.').capitalize()
 
class MagicWardrobe(Wardrobe):
    def __init__(self, *things):
        super().__init__(*things)
 
    def __str__(self):
        return (', '.join(sorted(self.things)) + '.').title()
    
    def _volume(self):
        return 1, len(self.things)
2
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
19.09.2023, 08:39
Цитата Сообщение от Red white socks Посмотреть сообщение
у вас какое-то свое сравнение. Не по ТЗ.
Пардон, бес попутал. Слушайте, я уже голову сломал как реализовать сравнение на меньше с магическим классом, а у вас все элементарно просто.

М-да, по сравнению с плюсами ООП в питоне - это жалкая пародия на ООП. Приходится извращаться и делать все через задницу...
0
19.09.2023, 08:41

Не по теме:

idealist, у вас же аллергия на плюсы))

0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
19.09.2023, 08:47
Цитата Сообщение от Red white socks Посмотреть сообщение
у вас же аллергия на плюсы))
Ну да, минусов там много, но плюсовое ООП - это сплошной плюс! Мне кажется, что оно там идеально реализовано. Если бы не дурацкие фигурные скобки - неплохой бы был язык. Надо его с питоном скрестить!
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
19.09.2023, 09:08
Цитата Сообщение от idealist Посмотреть сообщение
Ну да, минусов там много, но плюсовое ООП - это сплошной плюс! Мне кажется, что оно там идеально реализовано. Если бы не дурацкие фигурные скобки - неплохой бы был язык. Надо его с питоном скрестить!
Я не столь категоричен. ООП изучал во время освоения java и этот язык считаю каноном.
ООП на питоне кажется устроено более наивно, упрощенно, по-детски, но в этом и своя особая прелесть. Конечно, я не программист и копаю не столь глубоко. Мне наплевать на безопасность, без проблем расстался с интерфейсами, ну и так далее.
По большому счету мне не хватало только дженериков, но и здесь вроде 3.12 обещает навести порядок.
А в остальном меня все устраивает.
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
19.09.2023, 12:41
Цитата Сообщение от Red white socks Посмотреть сообщение
java и этот язык считаю каноном
Не, мне он после плюсов тоже не зашел. Очень много там странностей. Кстати, там нет множественного наследования.
Цитата Сообщение от Red white socks Посмотреть сообщение
ООП на питоне кажется устроено более наивно, упрощенно, по-детски
Ну да, оно просто неполно. Элементарные вещи, как в обсуждаемой задаче, без костылей реализовать невозможно. Вообще, судя по книгам и результату, Страуструп классный спец по ООП, а вот Гвидо видимо им совсем не интересовался и реализовал чисто "на отвяжись", лишь бы было, как говорится.

Цитата Сообщение от Red white socks Посмотреть сообщение
По большому счету мне не хватало только дженериков
А что это? Это аналог степановских шаблонов из STL что ли?
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
19.09.2023, 13:41
Цитата Сообщение от idealist Посмотреть сообщение
А что это?
Грубо говоря, это параметризованный тип. Хотя в питоне с его динамической типизацией, потребность в них не так чтобы и очень нужна. Но, повторюсь, я не программист и не пишу приложений, поэтому адекватно оценить преимущества и недостатки того или иного языка мне затруднительно.
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.09.2023, 15:32
Цитата Сообщение от idealist Посмотреть сообщение
Кстати, там нет множественного наследования
Интерфейсы же
Цитата Сообщение от idealist Посмотреть сообщение
Очень много там странностей
В плюсах их куда больше
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
19.09.2023, 20:17
Цитата Сообщение от iSmokeJC Посмотреть сообщение
В плюсах их куда больше
И много ли для вас неприемлемых? Можете перечислить?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.09.2023, 20:41
Цитата Сообщение от idealist Посмотреть сообщение
И много ли для вас неприемлемых?
Что значит неприемлимых? Я все приемлю
Цитата Сообщение от idealist Посмотреть сообщение
странностей
Френдли например
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
19.09.2023, 20:47
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Я все приемлю
Тогда переформулирую вопрос. Мне просто интересно что там странного именно с вашей точки зрения.
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Френдли например
Не, этим-то вы можете не пользоваться, если не хотите. Речь была именно о навязываемых вещах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2023, 20:47
Помогаю со студенческими работами здесь

Духовой шкаф Горенье Gorenje шкаф дисплей
Духовой шкаф Горенье Gorenje дисплей новый С него слит дамп код модуля 0230574 процR5F21256SY Кому нужен дамп или в архив до...

Задача: переставить мебель так, чтобы шкаф и кресло поменялись местами
Здравствуйте! Пытаюсь решить такую задачу: Площадь комнаты разделена на шесть прямоугольников, пять из них заняты мебелью, шестой -...

Духовой шкаф Kaiser с Logic control, Невключается Духовой шкаф Kaiser
Два раза использовали Духовой шкаф Kaiser .Потом стоял без дела два месяца.Сегодня включили светоиндикаторы все загорелись и погасли как...

Коммутационный шкаф
Здравствуйте! Подскажите пожалуйста переделал щит монтажный(Щит монтажный 250х300х150 IP31) в сетевой шкаф разместил 2 коммутатора. Может...

серверный шкаф
здравствуйте, посоветуйте серверный шкаф для 2 серверов, 1 tower ш230 х д380 х в450 и HP 2)ш380 х д340х в100 фото серваков прикрепил,


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru