diff --git a/README.md b/README.md deleted file mode 100644 index 68abb7b..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# GU_BigData_1795 \ No newline at end of file diff --git a/lesson8/ex1.py b/lesson8/ex1.py new file mode 100644 index 0000000..837a577 --- /dev/null +++ b/lesson8/ex1.py @@ -0,0 +1,35 @@ +from datetime import date + + +class Data: + + def __init__(self, data): + self.data = data + + @classmethod + def transformer(cls, data): + lst = data.split('-') + new_lst = [int(i) for i in lst] + return cls(new_lst) + + @property + def your_data(self): + return print(f'Вы ввели: {self.data}') + + @staticmethod + def validity(month, year): + if 1 <= month <= 12: + pass + else: + print('Неправильный месяц') + if year != date.today().year: + print('Неактуальный год') + + def __del__(self): + print('Деструктор сработал') + + +Data.validity(7, 2025) +b = Data.transformer('12-13-2021') +b.your_data +print(type(b.data)) diff --git a/lesson8/ex2.py b/lesson8/ex2.py new file mode 100644 index 0000000..a7ed059 --- /dev/null +++ b/lesson8/ex2.py @@ -0,0 +1,18 @@ +class MyExcept(Exception): + def __init__(self, txt): + self.txt = txt + + def __del__(self): + pass + + +try: + a = int(input('Числитель: ')) + b = int(input('Знаменатель: ')) + if b == 0: + raise MyExcept('Деление на ноль!') + res = a/b +except MyExcept as error: + print(error) +else: + print(f'Ответ: {res}') diff --git a/lesson8/ex3.py b/lesson8/ex3.py new file mode 100644 index 0000000..dd6fc8d --- /dev/null +++ b/lesson8/ex3.py @@ -0,0 +1,31 @@ +class NumeralException(Exception): + def __init__(self, txt): + self.txt = txt + + def __del__(self): + pass + + +lst = [] +i = input('Введите элемент списка: ') +while i != 'q': + try: + if i.isdigit() is True: + lst.append(int(i)) + else: + """ + Если не число, то проверяю на float + Если одно из "if" не сработает, выпадет исключение + """ + check = i.split('.') + if len(check) == 2: + if check[0].isdigit() and check[1].isdigit(): + lst.append(float(i)) + else: + break + else: + raise(NumeralException('Вы ввели не число!')) + except NumeralException as error: + print(error) + i = input('Введите элемент списка: ') +print(lst) diff --git a/lesson8/ex456.py b/lesson8/ex456.py new file mode 100644 index 0000000..7a2f00a --- /dev/null +++ b/lesson8/ex456.py @@ -0,0 +1,141 @@ +class OfficeEquipment: + + """ + Атрибуты, используемые в методах "warehouse", "transportation" + """ + my_dict = {} + names = [] + quantities = [] + prices = [] + + """ + По сценарию объект класса находится в оффисе, но может быть взят со склада. + В коде программы я заполнил склад и забрал оттуда нужные товары, + попутно выполнив небольшие методы классов-наследников + """ + def __init__(self, name, quantity, price): + self.name = name + self.quantity = quantity + self.price = price + print('Атрибут поступил в оффис') + + def needs(self, staff): + if self.quantity < staff: + spend = self.price * (staff - self.quantity) + print(f'Необходимо закупить {self.name} на сумму {spend} руб') + else: + print('Закупки не требуются') + + """ + Метод для 6-го номера + Он проверяет вводимость числа + Использовал его в методе "warehouse", контролируя данные, вводимые в реестр склада + """ + @staticmethod + def validator(parametr): + if type(parametr) is str: + while parametr.isdigit() is False: + parametr = input('Введите число!') + return int(parametr) + else: + return int(parametr) + + """ + Проверяю являются ли количесвто и цена, введенные пользователем, числами + если нет, предлагаю повторить ввод + Если на складе уже есть товар с таким названием, то список с названиями остается прежним, + а количество обновляется (определяется индекс введенного названия товара в списке, где оно уже есть + и по этому индексу в списке с количествами соответствующих товаров выбирается нужное нам и складывается + с введенным) + Далее формируется словарь (реестр склада) + """ + @classmethod + def warehouse(cls, name, quantity, price): + cls.validator(quantity) + cls.validator(price) + if cls.names.count(name) >= 1: + index = cls.names.index(name) + value = cls.quantities[index] + cls.quantities[index] = value + quantity + else: + cls.names.append(name) + cls.quantities.append(quantity) + cls.prices.append(price) + cls.my_dict = {'Наименование': cls.names, 'Цена': cls.prices, 'Количество': cls.quantities} + print(f"Атрибут '{name}' вписан в реестр склада") + return cls.my_dict + + """ + После пополнения склада методом "warehouse" появляется словарь (реестр) my_dict + Его значения - списки с данными (названия, количество, цена) + В методе "transportation" извлекается ключ-список по соответсвующему значению + затем проверяется, если на складе товар "name". + Если есть, то определяется индекс его названия в списке + и по этому индексу берется соотвествующее нужному товару количество. + Из количества товара на складе вычитается необходимое, + если разность при этом останется больше нуля. + Полученная разность становится в словаре "my_dict" на место прежнего значения количества, + что сопровождается соответствующим сообщением + """ + @classmethod + def transportation(cls, name, quantity): + lst = cls.my_dict.get('Наименование') + if lst.count(name) == 0: + print(f"Атрибут '{name}' отсутсвтует на складе") + else: + index = lst.index(name) + cls.quantities[index] = cls.my_dict.get('Количество')[index] - quantity + if cls.quantities[index] > 0: + cls.my_dict = {'Наименование': cls.names, 'Цена': cls.prices, 'Количество': cls.quantities} + print(f"{quantity} атрибутов '{name}' взято со склада ") + print('Реестр склада обновлен') + return cls.my_dict + else: + print(f"Атрибут {name} закончился") + + def __del__(self): + pass + + +class PC(OfficeEquipment): + def __init__(self, name, quantity, price, os): + super().__init__(name, quantity, price) + self.os = os + + @classmethod + def os_choice(cls): + cls.os = input('Введите название ОС: ') + print('Вы перешли на новую операционную систему') + return cls.os + + +class Printer(OfficeEquipment): + def __init__(self, name, quantity, price, paper): + super().__init__(name, quantity, price) + self.paper = paper + + def condition(self): + if self.paper is False: + print('Нужна бумага') + else: + pass + + +class Cartridge(OfficeEquipment): + @property + def condition(self): + if self.quantity < 20: + print('Нужно больше картриджей') + else: + pass + + +a = OfficeEquipment.warehouse('PC', 325, 526436) +b = OfficeEquipment.warehouse('Принтер', 214, 5264) +c = OfficeEquipment.warehouse('PC', 325, 526436) +print(OfficeEquipment.my_dict) +d = OfficeEquipment.transportation('PC', 20) +e = PC('laptop', 2134, 200000, 'windows') +e = PC.os_choice() +e = PC.warehouse('laptop', 2134, 200000) +e = PC.transportation('laptop', 1) diff --git a/lesson8/ex7.py b/lesson8/ex7.py new file mode 100644 index 0000000..a2c3df1 --- /dev/null +++ b/lesson8/ex7.py @@ -0,0 +1,24 @@ +class ComplexNumber: + def __init__(self, x, y): + self.x = x + self.y = y + + def __str__(self): + return f'{self.x} + {self.y * 1j}' + + def __add__(self, other): + return (self.x + other.x) + (self.y + other.y) * 1j + + def __mul__(self, other): + return (self.x * other.x - self.y * other.y) + (self.x * other.y + other.x * self.y) * 1j + + def __del__(self): + pass + + +num1 = ComplexNumber(5, 6) +print(num1) +num2 = ComplexNumber(6, 7) +print(num2) +print(num1 + num2) +print(num1 * num2)