diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 000000000..105ce2da2
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 000000000..dc9ea4906
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 000000000..35eb1ddfb
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 000000000..7418caf37
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1689620632789
+
+
+ 1689620632789
+
+
+
+
+
+
+
\ No newline at end of file
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..0c27cbcd7 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,40 @@
Второй, с декоратором @staticmethod, должен проводить валидацию числа, месяца
и года (например, месяц — от 1 до 12). Проверить работу полученной структуры на реальных данных.
"""
+
+
+class OwnDate:
+ def __init__(self, day_month_year):
+ self.day_month_year = str(day_month_year)
+
+ @classmethod
+ def extract(cls, day_month_year):
+ date = []
+
+ for i in day_month_year.split():
+ if i != '-':
+ date.append(i)
+
+ return int(date[0]), int(date[1]), int(date[2])
+
+ @staticmethod
+ def valid(day, month, year):
+
+ if day not in range(1, 32):
+ return f'День указан некорретно'
+ if month not in range(1, 13):
+ return f'Месяц укaзан некорретно'
+ if year not in range(0, 2100):
+ return f'Год указан некорретно'
+ return f'Данные укaзаны корректно'
+
+ def __str__(self):
+ return f'Дата на сегодня {OwnDate.extract(self.day_month_year)}'
+
+
+today = OwnDate('22 - 6 - 2023')
+print(today)
+print(OwnDate.valid(31, 11, 2022))
+print(today.valid(15, 18, 1990))
+print(OwnDate.extract('31 - 9 - 2021'))
+print(today.extract('22 - 6 - 2023'))
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..7e09bab76 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,22 @@
Проверьте его работу на данных, вводимых пользователем. При вводе пользователем нуля
в качестве делителя программа должна корректно обработать эту ситуацию и не завершиться с ошибкой.
"""
+
+
+class MyException(Exception):
+ txt = "Error"
+
+ def __str__(self):
+ return self.txt
+
+
+number = int(input('Please enter number '))
+devider = int(input('Please enter devider '))
+
+try:
+ if devider == 0:
+ raise MyException
+except MyException as err:
+ print(err)
+else:
+ print(f'result of devision is {number / devider:.2f}')
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..63414a07d 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,27 @@
Класс-исключение должен контролировать типы данных элементов списка.
"""
+
+
+class MyException(Exception):
+ txt = "Error! Value can't be converted to int"
+
+ def __str__(self):
+ return self.txt
+
+
+final_list = []
+while True:
+ val = input("Please enter number or 'stop' for finish ")
+ if val == 'stop':
+ break
+ else:
+ try:
+ if val.isnumeric():
+ final_list.append(int(val))
+ else:
+ raise MyException
+ except MyException as err:
+ print(err)
+
+print(final_list)
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..6d4d9c5d7 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,65 @@
Подсказка: постарайтесь по возможности реализовать в проекте
«Склад оргтехники» максимум возможностей, изученных на уроках по ООП.
"""
+
+
+class Warehouse:
+
+ 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_warehouse_full = []
+ self.my_warehouse = []
+ self.my_unit = {'Модель устройства': self.name, 'Цена за ед. товара': self.price, 'Количество': self.quantity}
+
+ def __str__(self):
+ return f'{self.name} цена {self.price} количество {self.quantity}'
+
+ def reception(self):
+ try:
+ unit = input(f'Ввод модели устройства: ')
+ price = int(input(f'Ввод цены цены устройства за единицу в рублях: '))
+ qty = int(input(f'Ввод количества товара: '))
+ unique = {'Модель устройства': unit, 'Цена за ед.товара': price, 'Количество': qty}
+ self.my_unit.update(unique)
+ self.my_warehouse.append(self.my_unit)
+ print(f'Текущий список: \n {self.my_warehouse}')
+ except:
+ return f'Ошибка ввода данных'
+
+ print(f'Для выхода ввести ex, для продолжения нажать Enter ')
+ q = input()
+ if q == 'ex':
+ self.my_warehouse_full.append(self.my_warehouse)
+ print(f'Весь склад: \n {self.my_warehouse_full}')
+ return f'Выход '
+ else:
+ return Warehouse.reception(self)
+
+
+class Printer(Warehouse):
+ def to_print(self):
+ return f'напечатать стр.{self.numb} раз'
+
+
+class Scanner(Warehouse):
+ def to_scan(self):
+ return f'отсканировать лист {self.numb} раз'
+
+
+class Copier(Warehouse):
+ def to_copier(self):
+ return f'копировать лист {self.numb} раз'
+
+
+unit_1 = Printer('Samsung', 8500, 10, 30)
+unit_2 = Scanner('HP', 6550, 7, 25)
+unit_3 = Copier('Xerox', 4600, 3, 33)
+print(unit_1.reception())
+print(unit_2.reception())
+print(unit_3.reception())
+print(unit_1.to_print())
+print(unit_2.to_scan())
+print(unit_3.to_copier())
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..6989540ce 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,24 @@
создав экземпляры класса (комплексные числа) и выполнив сложение и умножение созданных экземпляров.
Проверьте корректность полученного результата.
"""
+
+
+class ComplexNumber:
+ def __init__(self, a, b):
+ self.a = a
+ self.b = b
+
+ def __add__(self, other):
+ return f'Сумма: {self.a + other.a} + {self.b + other.b}i'
+
+ def __mul__(self, other):
+ return f'Произведение: {(self.a * other.a) - (self.b * other.b)} {self.b * other.a}i'
+
+ def __str__(self):
+ return f'{self.a}{"+" if self.b > 0 else ""}{self.b}i'
+
+
+first_numbers = ComplexNumber(8, 6)
+second_numbers = ComplexNumber(-98, 7)
+print(first_numbers + second_numbers)
+print(first_numbers * second_numbers)