-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLesson_5.py
More file actions
73 lines (62 loc) · 2.67 KB
/
Copy pathLesson_5.py
File metadata and controls
73 lines (62 loc) · 2.67 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
"""
Задание 1
📌 Создайте прямоугольник с методами расчета периметра и площади
📌 Добавьте сравнение прямоугольников по площади
📌 Должны работать все шесть операций сравнения
"""
class Rectangle:
"""
Класс прямоугольника с методами расчета периметра и площади,
а также перегрузкой операторов сравнения по площади.
"""
def __init__(self, width: float, height: float):
if width <= 0 or height <= 0:
raise ValueError("Ширина и высота должны быть положительными")
self.width = width
self.height = height
def perimeter(self) -> float:
"""Вычисляет периметр прямоугольника."""
return 2 * (self.width + self.height)
def area(self) -> float:
"""Вычисляет площадь прямоугольника."""
return self.width * self.height
# Операции сравнения по площади
def __eq__(self, other) -> bool:
if not isinstance(other, Rectangle):
return NotImplemented
return self.area() == other.area()
def __ne__(self, other) -> bool:
if not isinstance(other, Rectangle):
return NotImplemented
return self.area() != other.area()
def __lt__(self, other) -> bool:
if not isinstance(other, Rectangle):
return NotImplemented
return self.area() < other.area()
def __le__(self, other) -> bool:
if not isinstance(other, Rectangle):
return NotImplemented
return self.area() <= other.area()
def __gt__(self, other) -> bool:
if not isinstance(other, Rectangle):
return NotImplemented
return self.area() > other.area()
def __ge__(self, other) -> bool:
if not isinstance(other, Rectangle):
return NotImplemented
return self.area() >= other.area()
def __repr__(self) -> str:
return f"Rectangle(width={self.width}, height={self.height})"
# Пример использования
if __name__ == "__main__":
r1 = Rectangle(3, 4)
r2 = Rectangle(2, 6)
r3 = Rectangle(3, 4)
print(f"r1 area: {r1.area()}, perimeter: {r1.perimeter()}")
print(f"r2 area: {r2.area()}, perimeter: {r2.perimeter()}")
print("r1 == r2?", r1 == r2)
print("r1 != r2?", r1 != r2)
print("r1 < r2?", r1 < r2)
print("r1 <= r3?", r1 <= r3)
print("r2 > r1?", r2 > r1)
print("r2 >= r1?", r2 >= r1)