From 8623d967f05a0cdd84878ac5abd581623856b02b Mon Sep 17 00:00:00 2001 From: Igor Date: Tue, 14 Jul 2026 23:11:34 +0300 Subject: [PATCH] add KR --- OOP/task/1/Otvet.py | 25 +++++++++++++++ OOP/task/2/kr.py | 22 +++++++++++++ OOP/task/3/kr.py | 23 ++++++++++++++ OOP/task/4/TASK.md | 75 --------------------------------------------- OOP/task/4/kr.py | 45 +++++++++++++++++++++++++++ 5 files changed, 115 insertions(+), 75 deletions(-) create mode 100644 OOP/task/1/Otvet.py create mode 100644 OOP/task/2/kr.py create mode 100644 OOP/task/3/kr.py create mode 100644 OOP/task/4/kr.py diff --git a/OOP/task/1/Otvet.py b/OOP/task/1/Otvet.py new file mode 100644 index 0000000..f9564d3 --- /dev/null +++ b/OOP/task/1/Otvet.py @@ -0,0 +1,25 @@ +def check_number(item): + return isinstance(item, (int, float)) + + + +def calculate_total_sum(nested_list): + new_summ = 0 + for i in nested_list: + if isinstance(i, (list, tuple)): + new_summ += calculate_total_sum(i) + elif check_number(i): + new_summ += i + return new_summ + + +def process_data(data, limit): + if calculate_total_sum(data) <= limit: + return True + else: + print("Превышен лимит") + return False + + +print(check_number("u")) +print(process_data(data = (3,4,6,6,7,(1000,300)), limit = 100)) diff --git a/OOP/task/2/kr.py b/OOP/task/2/kr.py new file mode 100644 index 0000000..4bd7103 --- /dev/null +++ b/OOP/task/2/kr.py @@ -0,0 +1,22 @@ +def safe_input(): + while True: + try: + text = input("Введите строку") + if not text.strip(): + raise ValueError + return text + except ValueError: + print("Строка не может быть пустой") + + +def count_chars(text): + my_list = {} + for char in text.replace(" ", ""): + my_list[char] = my_list.get(char, 0) + 1 + return my_list + + +def get_top_tuples(my_list): + return sorted(my_list.items(), key=lambda x: x[1], reverse=True) + +print(get_top_tuples(count_chars(safe_input()))) diff --git a/OOP/task/3/kr.py b/OOP/task/3/kr.py new file mode 100644 index 0000000..aaaf40c --- /dev/null +++ b/OOP/task/3/kr.py @@ -0,0 +1,23 @@ +def clean_word(word): + words = word.lower() + wordss = words.replace(" ", "") + return wordss + + +def is_palindrome(word): + wolds = clean_word(word) + if wolds == wolds[::-1]: + return True + + +def filter_palindromes(words_list): + my_list = [] + for words in words_list: + if is_palindrome(words) is True: + my_list.append(words) + else: + continue + return my_list + + +print(filter_palindromes(["gfdfhfhdh", "fsadfdagfadg", "asa"])) diff --git a/OOP/task/4/TASK.md b/OOP/task/4/TASK.md index 31006da..774ee34 100644 --- a/OOP/task/4/TASK.md +++ b/OOP/task/4/TASK.md @@ -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. Заставьте покупателя оплатить товары в корзине. - diff --git a/OOP/task/4/kr.py b/OOP/task/4/kr.py new file mode 100644 index 0000000..5b7c4a7 --- /dev/null +++ b/OOP/task/4/kr.py @@ -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()