From 8b9e9249ba2506f47a4eaf857a1a0cd63b4ea9b0 Mon Sep 17 00:00:00 2001 From: Lychagina <128722311+Lychagina@users.noreply.github.com> Date: Mon, 3 Apr 2023 18:39:12 +0300 Subject: [PATCH 1/6] tasks --- .../task_1.py" | 9 +++++++++ .../task_2.py" | 4 ++++ .../task_3.py" | 1 + .../task_4.py" | 15 +++++++++++++++ .../task_5.py" | 9 +++++++++ .../task_6.py" | 17 +++++++++++++++++ .../task_7.py" | 9 +++++++++ 7 files changed, 64 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" index 7436f9ccd..1c0a287c2 100644 --- "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" +++ "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" @@ -6,3 +6,12 @@ Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами. """ + +def simple_calc(): + hours = float(input('Введите количество отработанных часов : ')) + rate_e = float(input('Введите суммы оплаты труда за 1 час : ')) + premium = float(input('Укажите размер премии - ')) + pay = hours * rate_e + salary = premium + pay + return pay + salary +print(f'Размер заработной платы составил: {simple_calc() }') \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" index 14cdc7aef..9f7f96355 100644 --- "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" +++ "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" @@ -7,3 +7,7 @@ Реализуйте вариант без и с генераторным выражением """ + +list_first = [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55] +list_result = [k for i, j in enumerate(list_first) for k in list_first[i + 1:i + 2] if k > j] +print(list_result) \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" index 2813c8098..81e70ee47 100644 --- "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" +++ "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" @@ -3,3 +3,4 @@ Необходимо решить задание в одну строку. Подсказка: использовать функцию range() и генераторное выражение. """ +print([i for i in range(20, 241) if i % 20 == 0 or i % 21 == 0]) \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py" "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py" index d8acf9929..0982fceb7 100644 --- "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py" +++ "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py" @@ -6,3 +6,18 @@ Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]. Результат: [23, 1, 3, 10, 4, 11] """ + +def my_counter(lst: list) -> dict: + result = {} + for key, val in enumerate(lst): + if result.get(val) is None: + result[val] = 1 + else: + result[val] += 1 + return result + + +list_src = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] +counter = my_counter(list_src) +list_res = [x for x, n in counter.items() if n == 1] +print(list_res) \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" index 926ae4b07..215efca50 100644 --- "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" +++ "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" @@ -5,3 +5,12 @@ Необходимо получить результат вычисления произведения всех элементов списка. Подсказка: использовать лямбда-функцию и функцию reduce(). """ + +from functools import reduce + +list_1 = [a for a in range(100, 1001)] + +print(list_1) + +results = reduce(lambda num, num2: num * num2, list_1) +print(f"Результат произведения всех элементов списка: {results}") \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" index e172a5cba..6d498843b 100644 --- "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" +++ "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" @@ -12,3 +12,20 @@ Во втором также необходимо предусмотреть условие, при котором повторение элементов списка будет прекращено. """ + +from itertools import count, cycle + +print("Итератор, генерирующий целые числа, начиная с указанного:") +for item in count(3): + if item > 10: + break + else: + print(item) + +print("Итератор, повторяющий элементы некоторого списка, определенного заранее:") +i = 0 +for value in cycle([1, 2, 3]): + if i > 10: + break + print(value) + i += 1 \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" index 28826edcc..4745cfa38 100644 --- "a/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" +++ "b/\320\243\321\200\320\276\320\272 4. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" @@ -10,3 +10,12 @@ Подсказка: факториал числа n — произведение чисел от 1 до n. Например, факториал четырёх 4! = 1 * 2 * 3 * 4 = 24. """ + +def fact(n): + result = 1 + for i in range(1, n + 1): + result *= i + yield result + +for el in fact(4): + print(el) \ No newline at end of file From eb1cf0a28e6a424ef1b9128ff4e12a851d35dec5 Mon Sep 17 00:00:00 2001 From: Lychagina <128722311+Lychagina@users.noreply.github.com> Date: Sat, 12 Aug 2023 21:19:51 +0300 Subject: [PATCH 2/6] tasks8 --- .../task_1.py" | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" index 5b4641e41..2b4c12eb5 100644 --- "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" +++ "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" @@ -12,3 +12,46 @@ Второй, с декоратором @staticmethod, должен проводить валидацию числа, месяца и года (например, месяц — от 1 до 12). Проверить работу полученной структуры на реальных данных. """ + + +class Data: + def __init__(self, day_month_year): + # self.day = day + # self.month = month + # self.year = year + self.day_month_year = str(day_month_year) + + @classmethod + def extract(cls, day_month_year): + my_date = [] + + for i in day_month_year.split(): + if i != '-': my_date.append(i) + + return int(my_date[0]), int(my_date[1]), int(my_date[2]) + + @staticmethod + def valid(day, month, year): + + if 1 <= day <= 31: + if 1 <= month <= 12: + if 2019 >= year >= 0: + return f'All right' + else: + return f'Неправильный год' + else: + return f'Неправильный месяц' + else: + return f'Неправильный день' + + def __str__(self): + return f'Текущая дата {Data.extract(self.day_month_year)}' + + +today = Data('11 - 1 - 2001') +print(today) +print(Data.valid(11, 11, 2022)) +print(today.valid(11, 13, 2011)) +print(Data.extract('11 - 11 - 2011')) +print(today.extract('11 - 11 - 2020')) +print(Data.valid(1, 11, 2000)) From 283c696fa3c2184e35996a8be919ae38b41f1f36 Mon Sep 17 00:00:00 2001 From: Lychagina <128722311+Lychagina@users.noreply.github.com> Date: Sat, 12 Aug 2023 21:20:17 +0300 Subject: [PATCH 3/6] tasks8 --- .../task_2.py" | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" index 12e1c68b3..7021cdc71 100644 --- "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" +++ "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" @@ -5,3 +5,20 @@ Проверьте его работу на данных, вводимых пользователем. При вводе пользователем нуля в качестве делителя программа должна корректно обработать эту ситуацию и не завершиться с ошибкой. """ +class DivisionByNull: + def __init__(self, divider, denominator): + self.divider = divider + self.denominator = denominator + + @staticmethod + def divide_by_null(divider, denominator): + try: + return (divider / denominator) + except: + return (f"Деление на ноль недопустимо") + + +div = DivisionByNull(10, 100) +print(DivisionByNull.divide_by_null(10, 0)) +print(DivisionByNull.divide_by_null(10, 0.1)) +print(div.divide_by_null(100, 0)) \ No newline at end of file From b8768a2879f94bdb045b39b351958229c5f29ed6 Mon Sep 17 00:00:00 2001 From: Lychagina <128722311+Lychagina@users.noreply.github.com> Date: Sat, 12 Aug 2023 21:20:46 +0300 Subject: [PATCH 4/6] tasks8 --- .../task_3.py" | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" index ae100adca..7da5afcf3 100644 --- "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" +++ "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" @@ -9,3 +9,33 @@ Класс-исключение должен контролировать типы данных элементов списка. """ + + +class Error: + def __init__(self, *args): + self.my_list = [] + + def my_input(self): + + # self.my_list = [int(i) for i in input('Введите значения через пробел ').split()] + # val = int(input('Введите значения и нажимайте Enter - ')) + # self.my_list.append(val) + while True: + try: + val = int(input('Введите значения и нажимайте Enter - ')) + self.my_list.append(val) + print(f'Текущий список - {self.my_list} \n ') + except: + print(f"Недопустимое значение - строка и булево") + y_or_n = input(f'Попробовать еще раз? Y/N ') + + if y_or_n == 'Y' or y_or_n == 'y': + print(try_except.my_input()) + elif y_or_n == 'N' or y_or_n == 'n': + return f'Вы вышли' + else: + return f'Вы вышли' + + +try_except = Error(1) +print(try_except.my_input()) \ No newline at end of file From ad4caaef637adebe0efe8207dfdf37502c2322c6 Mon Sep 17 00:00:00 2001 From: Lychagina <128722311+Lychagina@users.noreply.github.com> Date: Sat, 12 Aug 2023 21:21:25 +0300 Subject: [PATCH 5/6] tasks8 --- .../task_4_5_6.py" | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4_5_6.py" "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4_5_6.py" index 29a002d49..ebb5bafe5 100644 --- "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4_5_6.py" +++ "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4_5_6.py" @@ -19,3 +19,66 @@ Подсказка: постарайтесь по возможности реализовать в проекте «Склад оргтехники» максимум возможностей, изученных на уроках по ООП. """ +class StoreMashines: + + def __init__(self, name, price, quantity, number_of_lists, *args): + self.name = name + self.price = price + self.quantity = quantity + self.numb = number_of_lists + self.my_store_full = [] + self.my_store = [] + self.my_unit = {'Модель устройства': self.name, 'Цена за ед': self.price, 'Количество': self.quantity} + + def __str__(self): + return f'{self.name} цена {self.price} количество {self.quantity}' + + # @classmethod + # @staticmethod + def reception(self): + # print(f'Для выхода - Q, продолжение - Enter') + # while True: + try: + unit = input(f'Введите наименование ') + unit_p = int(input(f'Введите цену за ед ')) + unit_q = int(input(f'Введите количество ')) + unique = {'Модель устройства': unit, 'Цена за ед': unit_p, 'Количество': unit_q} + self.my_unit.update(unique) + self.my_store.append(self.my_unit) + print(f'Текущий список -\n {self.my_store}') + except: + return f'Ошибка ввода данных' + + print(f'Для выхода - Q, продолжение - Enter') + q = input(f'---> ') + if q == 'Q' or q == 'q': + self.my_store_full.append(self.my_store) + print(f'Весь склад -\n {self.my_store_full}') + return f'Выход' + else: + return StoreMashines.reception(self) + + +class Printer(StoreMashines): + def to_print(self): + return f'to print smth {self.numb} times' + + +class Scanner(StoreMashines): + def to_scan(self): + return f'to scan smth {self.numb} times' + + +class Copier(StoreMashines): + def to_copier(self): + return f'to copier smth {self.numb} times' + + +unit_1 = Printer('hp', 2000, 5, 10) +unit_2 = Scanner('Canon', 1200, 5, 10) +unit_3 = Copier('Xerox', 1500, 1, 15) +print(unit_1.reception()) +print(unit_2.reception()) +print(unit_3.reception()) +print(unit_1.to_print()) +print(unit_3.to_copier()) \ No newline at end of file From a273e787111e26db88e02e3cadb3090e11233370 Mon Sep 17 00:00:00 2001 From: Lychagina <128722311+Lychagina@users.noreply.github.com> Date: Sat, 12 Aug 2023 21:21:44 +0300 Subject: [PATCH 6/6] tasks8 --- .../task_7.py" | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" index 023fa7dbd..66efbd120 100644 --- "a/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" +++ "b/\320\243\321\200\320\276\320\272 8. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" @@ -6,3 +6,26 @@ создав экземпляры класса (комплексные числа) и выполнив сложение и умножение созданных экземпляров. Проверьте корректность полученного результата. """ +class ComplexNumber: + def __init__(self, a, b, *args): + self.a = a + self.b = b + self.z = 'a + b * i' + + def __add__(self, other): + print(f'Сумма z1 и z2 равна') + return f'z = {self.a + other.a} + {self.b + other.b} * i' + + def __mul__(self, other): + print(f'Произведение z1 и z2 равно') + return f'z = {self.a * other.a - (self.b * other.b)} + {self.b * other.a} * i' + + def __str__(self): + return f'z = {self.a} + {self.b} * i' + + +z_1 = ComplexNumber(1, -2) +z_2 = ComplexNumber(3, 4) +print(z_1) +print(z_1 + z_2) +print(z_1 * z_2) \ No newline at end of file