add KR
CI Check / lint-and-check (push) Failing after 8s

This commit is contained in:
Igor
2026-07-14 23:11:34 +03:00
parent da02f5305a
commit 8623d967f0
5 changed files with 115 additions and 75 deletions
-75
View File
@@ -43,78 +43,3 @@
2. Создайте объект читателя, передав ему имя файла.
3. Создайте объекты игрока и вселенной.
4. Создайте объект поэмы и запустите титры.
---
### Задача 5. Библиотека (ООП - Инкапсуляция и Взаимодействие)
**Постановка**
* **Книга:** Имеет название, автора и статус (*"В библиотеке"*, *"Выдана"*). Может менять свой статус на противоположный.
* **Читатель:** Имеет имя и список взятых книг. Может брать и возвращать книги.
* **Библиотека:** Содержит список всех доступных книг. Может выдавать книгу читателю.
**Задание**
**Класс `Book`:**
1. Создайте класс `Book`.
2. В `__init__(self, title, author)` определите свойства `title`, `author` и `status` (по умолчанию *"В библиотеке"*).
3. Создайте метод `change_status(self)`, меняющий статус книги на *"Выдана"*, если она в библиотеке, и обратно.
**Класс `Reader`:**
1. Создайте класс `Reader`.
2. В `__init__(self, name)` сохраните имя и создайте пустой список `borrowed_books`.
3. Создайте метод `take_book(self, book)`, добавляющий переданную книгу в список.
4. Создайте метод `return_book(self, book)`, удаляющий книгу из списка.
**Класс `Library`:**
1. Создайте класс `Library`.
2. В `__init__(self)` создайте список `books` и добавьте туда несколько книг по умолчанию.
3. Создайте метод `lend_book(self, book, reader)`, который проверяет статус книги, меняет его через метод книги на *"Выдана"* и передает читателю в его список.
**Тесты:**
1. Создайте библиотеку.
2. Создайте читателя.
3. Используя библиотеку, выдайте читателю книгу.
---
### Задача 6. Магазин (ООП - Агрегация)
**Постановка**
* **Товар:** Имеет название и цену.
* **Корзина:** Содержит список товаров. Может добавлять товар и считать общую стоимость.
* **Покупатель:** Имеет имя, баланс и корзину. Может оплачивать корзину.
**Задание**
**Класс `Product`:**
1. Создайте класс `Product`.
2. Создайте метод `__init__(self, name, price)`.
**Класс `Cart`:**
1. Создайте класс `Cart`.
2. В `__init__(self)` создайте пустой список `products`.
3. Создайте метод `add_product(self, product)`, добавляющий товар в список.
4. Создайте метод `get_total(self)`, возвращающий сумму цен всех товаров.
**Класс `Customer`:**
1. Создайте класс `Customer`.
2. В `__init__(self, name, balance, cart)` сохраните переданные параметры.
3. Создайте метод `pay(self)`, который проверяет, хватает ли баланса для оплаты корзины. Если хватает — вычитает сумму из баланса и очищает корзину. Если нет — выводит предупреждение.
**Тесты:**
1. Создайте несколько товаров.
2. Создайте корзину и добавьте в нее товары.
3. Создайте покупателя, передав ему корзину и баланс.
4. Заставьте покупателя оплатить товары в корзине.
+45
View File
@@ -0,0 +1,45 @@
import json
class PoemReader():
def __init__(self, filename):
self.filename = filename
def read_poem(self):
with open(self.filename, "r", encoding='utf-8') as file:
return json.load(file)["poem_text"]
class Player:
def __init__(self, name):
self.name = name
def see_words(self):
print(f"{self.name} читает наши мысли так, словно это слова на экране.")
class Universe:
def __init__(self):
self.name = "Вселенная"
def speak(self):
print("И Вселенная говорит тебе: Я люблю тебя.")
class EndPoem:
def __init__(self, reader, player, universe):
self.reader, self.player, self.universe = reader, player, universe
def play_credits(self):
print(self.reader.read_poem())
self.player.see_words()
self.universe.speak()
reader = PoemReader("data\main.json")
player = Player("Дима")
universete = Universe()
poem = EndPoem(reader, player, universete)
poem.play_credits()