From 0fb5975d00d4dfd65f108162fac28ec532dd843e Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Fri, 1 Nov 2019 10:21:02 +0300 Subject: [PATCH 01/11] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D1=8B=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=BD=D0=B5=D0=B3=D0=BE=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw01_8.py | 6 ++++++ lesson_8/hw02_8.py | 5 +++++ lesson_8/hw03_8.py | 5 +++++ lesson_8/hw04_8.py | 6 ++++++ lesson_8/hw05_8.py | 5 +++++ lesson_8/hw06_8.py | 7 +++++++ lesson_8/hw07_8.py | 6 ++++++ 7 files changed, 40 insertions(+) create mode 100644 lesson_8/hw01_8.py create mode 100644 lesson_8/hw02_8.py create mode 100644 lesson_8/hw03_8.py create mode 100644 lesson_8/hw04_8.py create mode 100644 lesson_8/hw05_8.py create mode 100644 lesson_8/hw06_8.py create mode 100644 lesson_8/hw07_8.py diff --git a/lesson_8/hw01_8.py b/lesson_8/hw01_8.py new file mode 100644 index 0000000..b63d7fc --- /dev/null +++ b/lesson_8/hw01_8.py @@ -0,0 +1,6 @@ +# Реализовать класс «Дата», функция-конструктор которого должна принимать дату в виде строки формата «день-месяц-год». +# В рамках класса реализовать два метода. Первый, с декоратором @classmethod, должен извлекать число, месяц, год +# и преобразовывать их тип к типу «Число». Второй, с декоратором @staticmethod, должен проводить валидацию числа, +# месяца и года (например, месяц — от 1 до 12). Проверить работу полученной структуры на реальных данных. + + diff --git a/lesson_8/hw02_8.py b/lesson_8/hw02_8.py new file mode 100644 index 0000000..5814c1b --- /dev/null +++ b/lesson_8/hw02_8.py @@ -0,0 +1,5 @@ +# Создайте собственный класс-исключение, обрабатывающий ситуацию деления на нуль. Проверьте его работу на данных, +# вводимых пользователем. При вводе пользователем нуля в качестве делителя программа должна корректно обработать +# эту ситуацию и не завершиться с ошибкой. + + diff --git a/lesson_8/hw03_8.py b/lesson_8/hw03_8.py new file mode 100644 index 0000000..ceb8eda --- /dev/null +++ b/lesson_8/hw03_8.py @@ -0,0 +1,5 @@ +# Создайте собственный класс-исключение, который должен проверять содержимое списка на отсутствие элементов типа +# строка и булево. Проверить работу исключения на реальном примере. Необходимо запрашивать у пользователя данные +# и заполнять список. Класс-исключение должен контролировать типы данных элементов списка. + + diff --git a/lesson_8/hw04_8.py b/lesson_8/hw04_8.py new file mode 100644 index 0000000..25f96c5 --- /dev/null +++ b/lesson_8/hw04_8.py @@ -0,0 +1,6 @@ +# Начните работу над проектом «Склад оргтехники». Создайте класс, описывающий склад. А также класс «Оргтехника», +# который будет базовым для классов-наследников. Эти классы — конкретные типы оргтехники (принтер, сканер, ксерокс). +# В базовом классе определить параметры, общие для приведенных типов. В классах-наследниках реализовать параметры, +# уникальные для каждого типа оргтехники. + + diff --git a/lesson_8/hw05_8.py b/lesson_8/hw05_8.py new file mode 100644 index 0000000..0c39625 --- /dev/null +++ b/lesson_8/hw05_8.py @@ -0,0 +1,5 @@ +# Продолжить работу над первым заданием. Разработать методы, отвечающие за приём оргтехники на склад и передачу +# в определенное подразделение компании. Для хранения данных о наименовании и количестве единиц оргтехники, +# а также других данных, можно использовать любую подходящую структуру, например словарь. + + diff --git a/lesson_8/hw06_8.py b/lesson_8/hw06_8.py new file mode 100644 index 0000000..993b965 --- /dev/null +++ b/lesson_8/hw06_8.py @@ -0,0 +1,7 @@ +# Продолжить работу над вторым заданием. Реализуйте механизм валидации вводимых пользователем данных. +# Например, для указания количества принтеров, отправленных на склад, нельзя использовать строковый тип данных. +# Подсказка: постарайтесь по возможности реализовать в проекте «Склад оргтехники» максимум возможностей, +# изученных на уроках по ООП. + + + diff --git a/lesson_8/hw07_8.py b/lesson_8/hw07_8.py new file mode 100644 index 0000000..3064c20 --- /dev/null +++ b/lesson_8/hw07_8.py @@ -0,0 +1,6 @@ +# Реализовать проект «Операции с комплексными числами». Создайте класс «Комплексное число», реализуйте перегрузку +# методов сложения и умножения комплексных чисел. Проверьте работу проекта, создав экземпляры класса +# (комплексные числа) и выполнив сложение и умножение созданных экземпляров. +# Проверьте корректность полученного результата. + + From c082d946f300cbb88b65bd4333800068ebebe43f Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 5 Nov 2019 10:43:40 +0300 Subject: [PATCH 02/11] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw01_8.py | 88 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/lesson_8/hw01_8.py b/lesson_8/hw01_8.py index b63d7fc..8673fea 100644 --- a/lesson_8/hw01_8.py +++ b/lesson_8/hw01_8.py @@ -4,3 +4,91 @@ # месяца и года (например, месяц — от 1 до 12). Проверить работу полученной структуры на реальных данных. +class DateValidationError(Exception): + + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) + + +class MyDate: + __day: int + __month: int + __year: int + + @property + def day(self): + return self.__day + + @day.setter + def day(self, value): + self.__day = value + + @property + def month(self): + return self.__month + + @month.setter + def month(self, value): + self.__month = value + + @property + def year(self): + return self.__year + + @year.setter + def year(self, value): + self.__year = value + + @classmethod + def date_parser(cls, date_string): + date_list = date_string.split('-') + if len(date_list) == 3: + return int(date_list[0]), int(date_list[1]), int(date_list[2]) + + # первый член - число + # второй член - месяц + # третий член - год + @staticmethod + def date_analizer(*args): + if args: + day, month, year = args[0] + else: + raise ValueError(f'Передано значение: {args}') + + day_pass, month_pass, year_pass = False, False, False + + # валидируем день + if 1 >= day / 31 > 0 and isinstance(day, int): + day_pass = True + else: + raise DateValidationError('Проверьте день') + + # валидируем месяц + if 1 >= month / 12 > 0 and isinstance(month, int): + month_pass = True + else: + raise DateValidationError('Проверьте месяц') + + # валидируем год + if 3 >= year / 1000 > 0 and isinstance(month, int): + year_pass = True + else: + raise DateValidationError('Проверьте год') + + return day_pass and month_pass and year_pass + + def __init__(self, date_string): + date_tuple = self.date_parser(date_string) + if MyDate.date_analizer(date_tuple): + self.day = date_tuple[0] + self.month = date_tuple[1] + self.year = date_tuple[2] + + def get_date(self): + return f'{self.day} - {self.month} - {self.year}' + + +mydate = MyDate('11-10-2001') +print(mydate.get_date()) + +mydate1 = MyDate('134-10-2001') \ No newline at end of file From f6f0bafa6d5da78a584cb14a046e1b29266460da Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 5 Nov 2019 10:54:45 +0300 Subject: [PATCH 03/11] =?UTF-8?q?=D0=92=D1=82=D0=BE=D1=80=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw02_8.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lesson_8/hw02_8.py b/lesson_8/hw02_8.py index 5814c1b..014d296 100644 --- a/lesson_8/hw02_8.py +++ b/lesson_8/hw02_8.py @@ -3,3 +3,18 @@ # эту ситуацию и не завершиться с ошибкой. +class CustomZeroDivide(Exception): + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) + + +try: + one = int(input('Введите первое число:\n')) + two = int(input('Введите второе число:\n')) + if two == 0: + raise CustomZeroDivide('Похоже, вы тут делаете то, что нельзя') + three = one / two + print(f'{one} / {two} = {one/two}') +except CustomZeroDivide: + print('Пожалуйста, не делите на ноль. Так нельзя\n') + print(f'{one} / {two} = ...') From 043d454f9ac68c8323254035c5622cfaa3702cca Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 5 Nov 2019 17:05:21 +0300 Subject: [PATCH 04/11] =?UTF-8?q?=D0=A2=D1=80=D0=B5=D1=82=D1=8C=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw03_8.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/lesson_8/hw03_8.py b/lesson_8/hw03_8.py index ceb8eda..dcc4cfc 100644 --- a/lesson_8/hw03_8.py +++ b/lesson_8/hw03_8.py @@ -3,3 +3,36 @@ # и заполнять список. Класс-исключение должен контролировать типы данных элементов списка. +class ListDataError(Exception): + def __init__(self, *args, **kwargs): + Exception.__init__(self, *args, **kwargs) + + +def is_float(value): + try: + float(value) + return True + except ValueError: + return False + + +my_list = [] +buffer = None + +while buffer != '': + print(f'Текущее состояние списка: {my_list}') + buffer = input('Введите новое значение для списка:\n') + try: + if buffer == 'True' or buffer == 'False': + raise ListDataError('Вы пытаетесь записать в список логическое значение') + elif buffer.isalpha() or (buffer.isalnum() and not buffer.isdigit()): + raise ListDataError('Вы пытаетесь записать в список строку') + elif buffer.isdecimal(): + my_list.append(int(buffer)) + elif is_float(buffer): + my_list.append(float(buffer)) + except ListDataError as e: + print(f'Возникли проблемы с элементом списка: {str(e)}') + pass + + From 55bc89697059fa965c98dfebfed6efe2fc93d2fb Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 5 Nov 2019 17:42:05 +0300 Subject: [PATCH 05/11] =?UTF-8?q?=D0=A7=D0=B5=D1=82=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=82=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw04_8.py | 96 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/lesson_8/hw04_8.py b/lesson_8/hw04_8.py index 25f96c5..7276bcd 100644 --- a/lesson_8/hw04_8.py +++ b/lesson_8/hw04_8.py @@ -4,3 +4,99 @@ # уникальные для каждого типа оргтехники. +from abc import ABC + + +class OfficeEquipment(ABC): + __id: int + __price: float + __title: str + __status: str + + @property + def id(self): + return self.__id + + @id.setter + def id(self, value): + pass + + @property + def price(self): + return self.__price + + @price.setter + def price(self, value): + if value > 0: + self.__price = value + + @property + def title(self): + return self.__title + + @title.setter + def id(self, value): + self.__title = value + + @property + def status(self): + return self.__status + + @status.setter + def status(self, value): + self.__status = value + + def __init__(self, id, title, price, status): + self.__id = id + self.__title = title + self.__price = price + self.__status = status + + +class Printer(OfficeEquipment): + __cartridge_status: str + + @property + def cartridge_status(self): + return self.__cartridge_status + + @cartridge_status.setter + def cartridge_status(self, value): + self.__cartridge_status = value + + def __init__(self, id, title, price, status): + super().__init__(id, title, price, status) + + +class ScannerEquipment(OfficeEquipment): + __resource: int + + @property + def resource(self): + return self.__resource + + @resource.setter + def resource(self, value): + self.__resource = value + + def __init__(self, id, title, price, status): + super().__init__(id, title, price, status) + + +class PhotoCopier(OfficeEquipment): + __print_mode: str + + @property + def print_mode(self): + return self.__print_mode + + @print_mode.setter + def print_mode(self, value): + self.__print_mode = value + + def __init__(self, id, title, price, status): + super().__init__(id, title, price, status) + + +class WareHouse: + pass From 6af444a43244ca0596136d638a26f17747e9fa60 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 5 Nov 2019 18:03:24 +0300 Subject: [PATCH 06/11] =?UTF-8?q?=D0=A7=D0=B5=D1=82=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=82=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?.=20=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BE=D1=87=D0=BA?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw04_8.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lesson_8/hw04_8.py b/lesson_8/hw04_8.py index 7276bcd..7bab92c 100644 --- a/lesson_8/hw04_8.py +++ b/lesson_8/hw04_8.py @@ -64,8 +64,9 @@ def cartridge_status(self): def cartridge_status(self, value): self.__cartridge_status = value - def __init__(self, id, title, price, status): + def __init__(self, id, title, price, status, cartridge_status): super().__init__(id, title, price, status) + self.__cartridge_status = cartridge_status class ScannerEquipment(OfficeEquipment): @@ -79,8 +80,9 @@ def resource(self): def resource(self, value): self.__resource = value - def __init__(self, id, title, price, status): + def __init__(self, id, title, price, status, resource): super().__init__(id, title, price, status) + self.__resource = resource class PhotoCopier(OfficeEquipment): @@ -94,8 +96,9 @@ def print_mode(self): def print_mode(self, value): self.__print_mode = value - def __init__(self, id, title, price, status): + def __init__(self, id, title, price, status, print_mode): super().__init__(id, title, price, status) + self.__print_mode = print_mode class WareHouse: From 8bccae081533da8139ba6b2dad74f8cd13e157dd Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 5 Nov 2019 18:35:16 +0300 Subject: [PATCH 07/11] =?UTF-8?q?=D0=A7=D0=B5=D1=82=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=82=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?.=20=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BE=D1=87=D0=BA?= =?UTF-8?q?=D0=B0=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw04_8.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson_8/hw04_8.py b/lesson_8/hw04_8.py index 7bab92c..2d7a601 100644 --- a/lesson_8/hw04_8.py +++ b/lesson_8/hw04_8.py @@ -19,7 +19,7 @@ def id(self): @id.setter def id(self, value): - pass + self.__id = value @property def price(self): @@ -35,7 +35,7 @@ def title(self): return self.__title @title.setter - def id(self, value): + def title(self, value): self.__title = value @property From 0a7024dd44395eebb685f5c01cb26cf8a242d0a6 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 5 Nov 2019 18:35:45 +0300 Subject: [PATCH 08/11] =?UTF-8?q?=D0=9F=D1=8F=D1=82=D0=BE=D0=B5=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __init__.py | 0 lesson_8/hw05_8.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 __init__.py diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lesson_8/hw05_8.py b/lesson_8/hw05_8.py index 0c39625..35310dc 100644 --- a/lesson_8/hw05_8.py +++ b/lesson_8/hw05_8.py @@ -3,3 +3,39 @@ # а также других данных, можно использовать любую подходящую структуру, например словарь. +import hw04_8 as backup +from datetime import datetime + + +class WareHouse: + __counter = 1 + __data_storage = {} + + @property + def data_storage(self): + return self.__data_storage + + def __add__(self, other: backup.OfficeEquipment): + record = {'id': other.id, 'title': other.title, 'price': other.price, 'status': other.status} + if isinstance(other, backup.Printer): + record.update({'cartridge_status': other.cartridge_status}) + elif isinstance(other, backup.PhotoCopier): + record.update({'print_mode': other.print_mode}) + elif isinstance(other, backup.ScannerEquipment): + record.update({'resource': other.resource}) + self.__data_storage.update({self.__counter: record}) + self.__counter += 1 + + +# проверяем, как это все работает +warehouse = WareHouse() +printer = backup.Printer(123, 'Принтер HP', 123, 'new', 'new') +scanner = backup.ScannerEquipment(124, 'Сканер', 10000, 'old', 78854) +photocopier = backup.PhotoCopier(125, 'Ксерокс', 5000, 'too_old', 'color') + +warehouse + printer +warehouse + scanner +warehouse + photocopier + +print(warehouse.data_storage) +print(1) From 3af5a8b0b5a1367a0257dbd4dece223c17881308 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 5 Nov 2019 18:37:37 +0300 Subject: [PATCH 09/11] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=88=D0=BD=D0=B8=D0=B9=20=D0=B8=D0=BC=D0=BF=D0=BE=D1=80?= =?UTF-8?q?=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw05_8.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson_8/hw05_8.py b/lesson_8/hw05_8.py index 35310dc..d1df602 100644 --- a/lesson_8/hw05_8.py +++ b/lesson_8/hw05_8.py @@ -4,7 +4,6 @@ import hw04_8 as backup -from datetime import datetime class WareHouse: From 94c61a257e652e60acdeef84abc084ebf0d049ee Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Thu, 7 Nov 2019 11:10:08 +0300 Subject: [PATCH 10/11] =?UTF-8?q?=D0=A8=D0=B5=D1=81=D1=82=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw05_8.py | 3 +++ lesson_8/hw06_8.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/lesson_8/hw05_8.py b/lesson_8/hw05_8.py index d1df602..fc35f66 100644 --- a/lesson_8/hw05_8.py +++ b/lesson_8/hw05_8.py @@ -25,6 +25,9 @@ def __add__(self, other: backup.OfficeEquipment): self.__data_storage.update({self.__counter: record}) self.__counter += 1 + def __init__(self): + self.data_storage.clear() + # проверяем, как это все работает warehouse = WareHouse() diff --git a/lesson_8/hw06_8.py b/lesson_8/hw06_8.py index 993b965..939b157 100644 --- a/lesson_8/hw06_8.py +++ b/lesson_8/hw06_8.py @@ -4,4 +4,66 @@ # изученных на уроках по ООП. +import hw05_8 as backup5 +import hw04_8 as backup4 + +def validator(message, data_type): + success = False + result = None + while not success: + buffer = input(f'{message}\n') + if data_type == 'int': + try: + result = int(buffer) + success = True + except ValueError: + print('Неверный формат данных, попробуйте еще раз:') + elif data_type == 'float': + try: + result = float(buffer.replace(',', '.')) + success = True + except ValueError: + print('Неверный формат данных, попробуйте еще раз') + return result + + +warehouse_new = backup5.WareHouse() +print(f'Состояние склада на начало:\n{warehouse_new.data_storage}') + +buffer = None +while buffer != '': + try: + buffer = input('Выберите тип оборудования:\nПринтер -- 1\nСканер -- 2\nФотокопир -- 3\n') + creation_mode = int(buffer) + + id = validator('Введите id оборудования', 'int') + title = input('Введите название оборудования\n') + price = validator('Введите цену оборудования', 'float') + status = input('Введите статус оборудования\n') + equipment = None + + if creation_mode == 1: + cartridge_status = input('Введите описание состояния картриджа оборудования\n') + equipment = backup4.Printer(id, title, price, status, cartridge_status) + # print(f'Блок создания принтера, склад: {warehouse.data_storage}') + warehouse_new + equipment + # print(f'Блок создания принтера, склад: {warehouse.data_storage}') + elif creation_mode == 2: + resource = validator('Введите оставшийся ресурс оборудования в листах\n', 'int') + equipment = backup4.ScannerEquipment(id, title, price, status, resource) + warehouse_new + equipment + elif creation_mode == 3: + print_mode = input('Введите описание режима печати оборудования\n') + equipment = backup4.PhotoCopier(id, title, price, status, print_mode) + warehouse_new + equipment + + print(f'Текущее состояние склада:\n{warehouse_new.data_storage}') + buffer = input('Желаете создать еще один экземпляр оборудования? Введите "Да", если желаете. ' + 'Если нет, отправьте пустую строку\n') + except ValueError: + print(f'buffer -- "{buffer}"') + if buffer == '': + print('Программа завершает работу. Хорошего дня!') + else: + print('Проверьте вводимое значение и попробуйте еще разок создать оборудование') \ No newline at end of file From 99df87e7afc8466c0e1f962a9aa129c3e6828bd6 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Thu, 7 Nov 2019 16:18:11 +0300 Subject: [PATCH 11/11] =?UTF-8?q?=D0=A1=D0=B5=D0=B4=D1=8C=D0=BC=D0=BE?= =?UTF-8?q?=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_8/hw07_8.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/lesson_8/hw07_8.py b/lesson_8/hw07_8.py index 3064c20..f9aacda 100644 --- a/lesson_8/hw07_8.py +++ b/lesson_8/hw07_8.py @@ -4,3 +4,60 @@ # Проверьте корректность полученного результата. +class ComplexNumber: + __rez: float + __imz: float + + @property + def rez(self): + return self.__rez + + @rez.setter + def rez(self, value): + self.__rez = value + + @property + def imz(self): + return self.__imz + + @imz.setter + def imz(self, value): + self.__imz = value + + def __init__(self, rez, imz): + self.rez = rez + self.imz = imz + + def __str__(self): + if self.imz > 0 and self.rez != 0: + return f'{self.rez}+{self.imz}i' + elif self.imz < 0 and self.rez != 0: + return f'{self.rez}-{abs(self.imz)}i' + elif self.rez == 0: + return f'{self.imz}i' + else: + return f'{self.rez}' + + def __add__(self, other): + if isinstance(other, ComplexNumber): + return ComplexNumber(self.rez+other.rez, self.imz+other.imz) + else: + raise ValueError('Значение не подходит для сложения с комплексным числом') + + def __mul__(self, other): + if isinstance(other, ComplexNumber): + return ComplexNumber(self.rez*other.rez - self.imz*other.imz, self.imz*other.rez + self.rez*other.imz) + elif isinstance(other, int) or isinstance(other, float): + return ComplexNumber(self.rez * other, self.imz * other) + else: + raise ValueError('Значение не подходит для умножения на комплексное число') + + +# проверка создания объекта +number1 = ComplexNumber(4, 2) +print(number1) +# проверка сложения +print(ComplexNumber(1, 1) + ComplexNumber(2, 2)) +# проверка умножения +print(ComplexNumber(1, 2) * ComplexNumber(2, 3)) +print(ComplexNumber(2, 2) * 2)