Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions HW_8-1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""Реализовать класс «Дата», функция-конструктор которого должна принимать дату в виде
строки формата «день-месяц-год». В рамках класса реализовать два метода. Первый, с декоратором @classmethod.
Он должен извлекать число, месяц, год и преобразовывать их тип
к типу «Число». Второй, с декоратором @staticmethod, должен проводить валидацию числа,
месяца и года (например, месяц — от 1 до 12). Проверить работу полученной структуры на
реальных данных.
"""
class Date:

def __init__(self, date: str):
self.date = date

@classmethod
def int_method(cls, param):
return list(map(int, param.split('-')))

@staticmethod
def valid_method(param):
l_d = list(map(int, param.split('-')))
if l_d[0] > 32 or l_d[0] < 1 or l_d[1] < 0 or l_d[1] > 12 or l_d[2] < 1 or l_d[2] > 2099:
print('Date invalid')
else:
print('Date valid')


dt = Date('10-12-2021')
print(Date.int_method('10-12-2021'))
print(dt.int_method(dt.date))
Date.valid_method('01-12-2099')
Date.valid_method('00-13-2100')


25 changes: 25 additions & 0 deletions HW_8-2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
""" 2. Создайте собственный класс-исключение, обрабатывающий ситуацию деления на ноль.
Проверьте его работу на данных, вводимых пользователем. При вводе нуля в качестве
делителя программа должна корректно обработать эту ситуацию и не завершиться с ошибкой."""


class ZeroErr(Exception):

def __init__(self, txt):
self.txt = txt


try:
x = int(input('Введите 1е число:'))
y = int(input('Введите 2е число:'))
if y == 0:
raise ZeroErr('Делить на ноль нельзя!')
except ValueError:
print('Вы ввели не число')
except ZeroErr as err:
print(err)
else:
print(f'Результат деления: {x / y}')



33 changes: 33 additions & 0 deletions HW_8-3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
"""Создайте собственный класс-исключение, который должен проверять содержимое списка на
наличие только чисел. Проверить работу исключения на реальном примере. Запрашивать у
пользователя данные и заполнять список необходимо только числами. Класс-исключение
должен контролировать типы данных элементов списка.
Примечание: длина списка не фиксирована. Элементы запрашиваются бесконечно, пока
пользователь сам не остановит работу скрипта, введя, например, команду «stop». При этом
скрипт завершается, сформированный список с числами выводится на экран.
Подсказка: для этого задания примем, что пользователь может вводить только числа и строки.
Во время ввода пользователем очередного элемента необходимо реализовать проверку типа
элемента. Вносить его в список, только если введено число. Класс-исключение должен не
позволить пользователю ввести текст (не число) и отобразить соответствующее сообщение.
При этом работа скрипта не должна завершаться."""

class VallInt(Exception):

def __init__(self, text):
self.text = text


my_list = []
while True:
try:
my_insert = input('Введите число: ')
if my_insert.isnumeric():
my_list.append(int(my_insert))
else:
raise VallInt('Вы ввели не число!')
except VallInt as err:
print(err)
if my_insert == 'stop':
print(my_list)
break
print(int('3.4'))
47 changes: 47 additions & 0 deletions HW_8-4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"""Начните работу над проектом «Склад оргтехники». Создайте класс, описывающий склад. А
также класс «Оргтехника», который будет базовым для классов-наследников. Эти классы —
конкретные типы оргтехники (принтер, сканер, ксерокс). В базовом классе определите
параметры, общие для приведённых типов. В классах-наследниках реализуйте параметры,
уникальные для каждого типа оргтехники."""


class Storage:
pass


class OffEquip:

def __init__(self, color: str, input_power: float, brand: str, weight: float):
self.color = color
self.input_power = input_power
self.brand = brand
self.weight = weight


class Printer(OffEquip):

def __init__(self, color: str, input_power: float, brand: str, weight: float, print_speed: float, type_print: str):
super().__init__(self, color, input_power, brand, weight) # Почему он ругается и не видит weight???
# self.weight = weight
self.print_speed = print_speed
self.type_print = type_print


class Scanner(OffEquip):

def __init__(self, color: str, input_power: float, brand: str, weight: float, max_resolution_dpi: str,
deep_color_scan: str):
super().__init__(color, input_power, brand, weight)
self.max_resolution_dpi = max_resolution_dpi
self.deep_color_scan = deep_color_scan


class Xerox(OffEquip):

def __init__(self, color: str, input_power: float, brand: str, weight: float, speed_copy: str):
super().__init__(color, input_power, brand, weight)
self.speed_copy = speed_copy


scan = Scanner('Зеленый', 23.2, 'Canon', 14.5, '4800x4800', 'струйный')
printer = Printer('Зеленый', 23.2, 'Canon', 14.5, 4800, 'струйный')
83 changes: 83 additions & 0 deletions HW_8-5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
"""Продолжить работу над четвертым(видимо) заданием. Разработать методы, отвечающие за приём оргтехники на склад и
передачу в определенное подразделение компании. Для хранения данных о наименовании и количестве единиц оргтехники, а
также других данных, можно использовать любую подходящую структуру, например словарь."""
# my_list_stor = {}
# my_list_office = {}
# my_list_tech = {}

class Storage:

my_list_stor = {}
my_list_office = {}
my_list_tech = {}

@classmethod
def add_stor(cls, amount):
Storage.my_list_stor[cls.__name__] = amount
print(f'Поступило на склад: {Storage.my_list_stor}')

@classmethod
def move_in_subunit(cls, new_location, move_amount):
if new_location == 'office' and Storage.my_list_stor[cls.__name__] != 0:
if Storage.my_list_stor[cls.__name__] >= move_amount:
Storage.my_list_office[cls.__name__] = move_amount
Storage.my_list_stor[cls.__name__] = Storage.my_list_stor[cls.__name__] - move_amount
print(f'Перемещено в офис: {Storage.my_list_office}. Остаток на складе: {Storage.my_list_stor}')
elif Storage.my_list_stor[cls.__name__] < move_amount:
differ_move = move_amount - Storage.my_list_stor[cls.__name__]
Storage.my_list_office[cls.__name__] = Storage.my_list_stor[cls.__name__]
Storage.my_list_stor[cls.__name__] = 0
print(f'Перемещено в офис: {Storage.my_list_office}. Остаток на складе: {Storage.my_list_stor}'
f'Необходимо докупить единиц перемещаемой техники - {differ_move}')
elif new_location == 'tech' and Storage.my_list_stor[cls.__name__] != 0:
if Storage.my_list_stor[cls.__name__] >= move_amount:
Storage.my_list_tech[cls.__name__] = move_amount
Storage.my_list_stor[cls.__name__] = Storage.my_list_stor[cls.__name__] - move_amount
print(f'Перемещено в офис: {Storage.my_list_tech}. Остаток на складе: {Storage.my_list_stor}')
elif Storage.my_list_stor[cls.__name__] < move_amount:
differ_move = move_amount - Storage.my_list_stor[cls.__name__]
Storage.my_list_tech[cls.__name__] = Storage.my_list_stor[cls.__name__]
Storage.my_list_stor[cls.__name__] = 0
print(f'Перемещено в тех.отдел: {Storage.my_list_tech}. Остаток на складе: {Storage.my_list_stor}'
f'Необходимо докупить единиц перемещаемой техники - {differ_move}')
else:
print('Введено некорректное наименование подразделения! Попробуйте еще.')


class OffEquip(Storage):

def __init__(self, color, input_power, brand, weight):
self.color = color
self.input_power = input_power
self.brand = brand
self.weight = weight


class Printer(OffEquip):

def __init__(self, color, input_power, brand, weight, print_speed, type_print):
super().__init__(self, color, input_power, brand)
self.weight = weight
self.print_speed = print_speed
self.type_print = type_print


class Scanner(OffEquip):

def __init__(self, color, input_power, brand, weight, max_resolution_dpi, deep_color_scan):
super().__init__(color, input_power, brand, weight)
self.max_resolution_dpi = max_resolution_dpi
self.deep_color_scan = deep_color_scan


class Xerox(OffEquip):

def __init__(self, color, input_power, brand, weight, speed_copy):
super().__init__(color, input_power, brand, weight)
self.speed_copy = speed_copy


scan = Scanner('Зеленый', 23.2, 'Canon', 14.5, '4800x4800', 'струйный')
printer = Printer('Зеленый', 23.2, 'Canon', 14.5, 4800, 'струйный')
scan.add_stor(5)
scan.move_in_subunit('office', 4)
31 changes: 31 additions & 0 deletions HW_8-7.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
"""Реализовать проект «Операции с комплексными числами». Создайте класс «Комплексное
число». Реализуйте перегрузку методов сложения и умножения комплексных чисел. Проверьте
работу проекта. Для этого создаёте экземпляры класса (комплексные числа), выполните
сложение и умножение созданных экземпляров. Проверьте корректность полученного
результата."""

class Complex_num:

def __init__(self, a, b):
self.a = a
self.b = b

def comp_real(self):
return complex(self.a, self.b)

def __str__(self):
return f'({self.a}+{self.b}j)'

def __add__(self, other):
return Complex_num(self.a + other.a, self.b + other.b)

def __mul__(self, other):
return Complex_num(self.a * other.a - self.b * other.b, self.b * other.a + self.a * other.b )


comp_1 = Complex_num(4, 5)
comp_2 = Complex_num(3, 4)

print(complex(4, 5) * complex(3, 4))
print(comp_1 * comp_2)

1 change: 0 additions & 1 deletion README.md

This file was deleted.