-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLesson_5_dz.py
More file actions
158 lines (113 loc) · 5.21 KB
/
Copy pathLesson_5_dz.py
File metadata and controls
158 lines (113 loc) · 5.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
"""
Задание 1.
Реализовать программу работы с органическими клетками, состоящими из ячеек.
Необходимо создать класс Клетка (Cell).
В его конструкторе инициализировать параметр (quantity),
соответствующий количеству ячеек клетки (целое число).
В классе должны быть реализованы методы перегрузки арифметических операторов:
сложение (add()),
вычитание (sub()),
умножение (mul()),
деление (truediv()).
Данные методы должны применяться только к клеткам и выполнять увеличение,
уменьшение, умножение и целочисленное (с округлением до целого) деление клеток, соответственно.
Сложение. Объединение двух клеток.
При этом число ячеек общей клетки должно равняться сумме ячеек исходных двух клеток.
Вычитание. Участвуют две клетки.
Операцию необходимо выполнять только если разность количества ячеек двух клеток больше нуля,
иначе выводить соответствующее сообщение.
Умножение. Создается общая клетка из двух.
Число ячеек общей клетки определяется как произведение количества ячеек этих двух клеток.
Деление. Создается общая клетка из двух.
Число ячеек общей клетки определяется как целочисленное деление количества ячеек этих двух клеток.
------------------------------------------------------------------------------
Пример клиентского кода:
print("Создаем объекты клеток")
cell1 = Cell(30)
cell2 = Cell(25)
cell3 = Cell(10)
cell4 = Cell(15)
print()
print("Складываем")
print(cell1 + cell2)
print()
print("Вычитаем")
print(cell2 - cell1)
print(cell4 - cell3)
print()
print("Умножаем")
print(cell2 * cell1)
print()
print("Делим")
print(cell1 / cell2)
print()
------------------------------------------------------------------------------
Результаты:
Создаем объекты клеток
Складываем
Сумма клеток = (55)
Вычитаем
Разность отрицательна, поэтому операция не выполняется
Разность клеток = (5)
Умножаем
Умножение клеток = (750)
Делим
Деление клеток = (1)
"""
class Cell:
"""
Класс клетки с заданным количеством ячеек.
Перегрузка арифметических операторов для работы только с Cell.
Операции возвращают строку-результат в формате примера.
"""
def __init__(self, quantity: int):
if not isinstance(quantity, int) or quantity < 1:
raise ValueError("Количество ячеек должно быть натуральным числом")
self.quantity = quantity
def __add__(self, other):
if not isinstance(other, Cell):
return NotImplemented
total = self.quantity + other.quantity
return f"Сумма клеток = ({total})"
def __sub__(self, other):
if not isinstance(other, Cell):
return NotImplemented
diff = self.quantity - other.quantity
if diff > 0:
return f"Разность клеток = ({diff})"
return "Разность отрицательна, поэтому операция не выполняется"
def __mul__(self, other):
if not isinstance(other, Cell):
return NotImplemented
prod = self.quantity * other.quantity
return f"Умножение клеток = ({prod})"
def __truediv__(self, other):
if not isinstance(other, Cell):
return NotImplemented
if other.quantity == 0:
return "Деление на клетку с нулевым количеством ячеек невозможно"
div = self.quantity // other.quantity
return f"Деление клеток = ({div})"
def __repr__(self):
return f"Cell({self.quantity})"
# Пример клиентского кода
if __name__ == "__main__":
print("Создаем объекты клеток")
cell1 = Cell(30)
cell2 = Cell(25)
cell3 = Cell(10)
cell4 = Cell(15)
print()
print("Складываем")
print(cell1 + cell2)
print()
print("Вычитаем")
print(cell2 - cell1)
print(cell4 - cell3)
print()
print("Умножаем")
print(cell2 * cell1)
print()
print("Делим")
print(cell1 / cell2)
print()