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
34 changes: 34 additions & 0 deletions T11_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
class Date:
def __init__(self, date):
self.date = date

@classmethod
def num_date(cls, obj):
my_date = obj.date.split('-')
print(f'number = {int(my_date[0])}, month = {int(my_date[1])}, year = {int(my_date[2])}')

@staticmethod
def correct_date(obj):
my_date = obj.date.split('-')
list_31 = [1, 3, 5, 7, 8, 10, 12]
d = int(my_date[0])
m = int(my_date[1])
y = int(my_date[2])
if m == 2 and y % 4 == 0 and d > 29:
print('There are only 29 days in February of a leap year')
elif m == 2 and y % 4 != 0 and d > 28:
print('There are only 28 days in February of a common year')
elif m in list_31 and 1 <= d <= 31 and y > 0:
print('The date is correct')
elif m not in list_31 and 1 <= d <= 30 and y > 0:
print(f'The date is correct')
else:
print('The date is not correct')


a = Date('35-03-2021')
b = Date('01-04-2015')
Date.num_date(a)
Date.correct_date(a)
Date.num_date(b)
Date.correct_date(b)
15 changes: 15 additions & 0 deletions T11_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class DelError(Exception):
def __init__(self, txt):
self.txt = txt


a, b = list(map(int, input('Enter dividend and divisor ').split()))

try:
if b == 0:
raise DelError('Cannot be divided by zero!')
except (ZeroDivisionError, DelError) as err:
print(err)
print(1)
else:
print(round(a / b, 2))
28 changes: 28 additions & 0 deletions T11_3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
class NumError(Exception):
def __init__(self, txt):
self.txt = txt


my_list = []

while True:
a = input('Enter numbers, for exit - stop ').split()
stop_det = 0
for el in a:
if el.title() == 'Stop':
stop_det = 1

else:
try:
for j in range(len(el)):
if ord(el[j]) < 48 or ord(el[j]) > 57:
raise NumError('You only need to enter numbers')

except NumError as err:
print(err)
break
my_list.append(el)
if stop_det == 1:
break

print(my_list)
102 changes: 102 additions & 0 deletions T11_4_5_6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
from abc import ABC, abstractmethod


class Hardware(ABC):
def __init__(self, name, port):
self.name = name
self.port = port

@abstractmethod
def __str__(self):
pass


class Printer(Hardware):
def __init__(self, name, port, color):
super().__init__(name, port)
self.color = color

@property
def color(self):
return self.__color

@color.setter
def color(self, bool):
if bool in ['True', 'true', 'Yes', 'yes', 'y', 'Y', 'да', 'Да', '+', 'color', 'Color', True]:
self.__color = True
else:
self.__color = False

def __str__(self):
if self.__color:
return 'Color printer ' + str(self.name) + ' on a tcp port ' + str(self.port)
else:
return 'Black&White printer ' + str(self.name) + ' on a tcp port ' + str(self.port)


class Monitor(Hardware):
def __init__(self, name, port, w, h):
super().__init__(name, port)
self.resolution = str(w) + 'x' + str(h)

def __str__(self):
return 'Monitor ' + str(self.name) + ' on a ' + str(self.port) + ' port ' + self.resolution


class Scanner(Hardware):
def __init__(self, name, port):
super().__init__(name, port)

def __str__(self):
return 'Scanner ' + str(self.name) + ' on a ' + str(self.port) + ' port'


class Warehouse:
def __init__(self):
self.hw_list = []
self.count = 0

def get_count(self):
return self.count

def add_hardware(self, my_hardware: Hardware, qtty):
try:
for i in range(qtty):
self.hw_list.append(my_hardware)
self.count += qtty
except TypeError:
print('Quantity shall be an integer number')

def move(self, other, ordnum):
if len(self.hw_list) >= ordnum:
other.add_hardware(self.hw_list[ordnum], 1)
print(f'{self.hw_list[ordnum]} is moved successfully')
del self.hw_list[ordnum]
self.count -= 1
else:
print('Hardware index is out of range')

def __str__(self):
my_string = ''
for el in self.hw_list:
my_string += str(el) + '\n'
my_string = my_string + 'Total amount of hardware on central warehouse: ' + str(self.count)
return my_string


central_wh = Warehouse()
central_wh.add_hardware(Printer('LSB-20', 'usb', 'Да'), 'two')
central_wh.add_hardware(Monitor('Viewsonic', 'pci-e', 640, 480), 5)
central_wh.add_hardware(Scanner('HP', 'usb'), 3)
IT = Warehouse()
Accounting = Warehouse()

central_wh.move(IT, 4)
central_wh.move(Accounting, 9)

print('IT:')
print(IT)
print('Accounting:')
print(Accounting)
print('Whs:')
print(central_wh)
28 changes: 28 additions & 0 deletions T11_7.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
class Complex:
def __init__(self, re, im):
self.re = re
self.im = im

def __add__(self, other):
return Complex(self.re + other.re, self.im + other.im)

def __mul__(self, other):
return Complex(self.re * other.re - self.im * other.im, self.re * other.im + other.re * self.im)

def __str__(self):
if self.im > 0:
return str(self.re) + '+' + str(self.im) + 'i'
elif self.im < 0:
return str(self.re) + str(self.im) + 'i'
else:
return str(self.re)


z = Complex(5, 0)
z1 = Complex(5, 4)
z2 = Complex(5, -3)
print(z)
print(z1)
print(z2)
print(z1 + z2)
print(z1 * z2)