Compare commits

..

2 Commits

Author SHA1 Message Date
revotuning 03bc15ceb5 Merge pull request 'added files for 2 lession' (#1) from master into main
Reviewed-on: #1
2024-11-17 01:44:36 +03:00
revotuning 6c58709dc1 added files for 2 lession 2024-11-17 01:43:25 +03:00
4 changed files with 153 additions and 0 deletions

39
2lession/Display.py Normal file
View File

@ -0,0 +1,39 @@
from math import sqrt
from Rect import Rect
class Display(Rect):
def __init__(self, diagonal, height: int, width: int):
super().__init__(height, width)
self.diagonal = diagonal
self.dpi = round((sqrt(pow(self.height, 2) + pow(self.width, 2))) / self.diagonal, 2)
def get_dpi(self):
return self.dpi
def get_pixel_num(self):
return super().area()
def area(self):
return round((self.height / self.get_dpi()) * (self.width / self.get_dpi()), 1)
def get_resolution_px(self):
return self.height, self.width
def main():
samsung_mon = Display(19, 1920, 1080) # 19", 1920x1080 пикселей
print(samsung_mon.area()) # площадь в кв. дюймах, либо в кв. м
print(samsung_mon.perimeter())
samsung_mon.rotate()
samsung_mon.rotate()
print(samsung_mon.get_dpi()) # количество точек на дюйм
print(samsung_mon.get_pixel_num()) # сколько мегапикселей у экрана
print(samsung_mon.get_resolution_px()) # разрешение в пикселях в виде кортежа: (1920, 1080)
if __name__ == '__main__':
main()

64
2lession/Point.py Normal file
View File

@ -0,0 +1,64 @@
from math import sqrt
class PointXY:
def __init__(self, x: int, y: int):
self.x = x
self.y = y
def distance_from_zero(self):
return sqrt(pow(self.x, 2) + pow(self.y, 2))
def distance_to(self, p):
return sqrt(pow((self.x - p.x), 2) + pow((self.y - p.y), 2))
def __repr__(self):
return "Точка с координатами (" + str(self.x) + ", " + str(self.y) + ")"
def __eq__(self, point):
if self.distance_to(point) == 0:
result = True
else:
result = False
return result
def __ne__(self, point):
if self.distance_to(point) != 0:
result = True
else:
result = False
return result
def __add__(self, point):
return PointXY(self.x + point.x, self.y + point.y)
def __mul__(self, multiplier):
return PointXY(self.x * multiplier, self.y * multiplier)
def __neg__(self):
return PointXY(-self.x, -self.y)
def __invert__(self):
return PointXY(-self.x, -self.y)
def __abs__(self):
return sqrt(pow(self.x, 2) + pow(self.y, 2))
def main():
p1 = PointXY(4, 3)
p2 = PointXY(9, 6)
p3 = PointXY(5, 3)
print(p1.distance_from_zero())
print(p2.distance_to(p3))
print(p1 == p2)
print(p1 != p2)
p4 = p1 + p2
p5 = p1 * 0.5
p1 = -p2
p1 = ~p2
print(abs(p1))
if __name__ == '__main__':
main()

34
2lession/Rect.py Normal file
View File

@ -0,0 +1,34 @@
class Rect:
def __init__(self, height: int, width: int):
if height < 0 or width < 0:
raise ValueError('Длины сторон не могут быть отрицательными')
self.height = height
self.width = width
def area(self):
return self.height * self.width
def perimeter(self):
return 2 * (self.height + self.width)
def scale(self, multiplier):
self.height *= multiplier
self.width *= multiplier
def rotate(self):
tmp = self.height
self.height = self.width
self.width = tmp
def main():
r1 = Rect(10, 56)
print(r1.area())
print(r1.perimeter())
r1.scale(10)
r1.scale(0.1)
r1.rotate()
if __name__ == '__main__':
main()

16
2lession/Square.py Normal file
View File

@ -0,0 +1,16 @@
from Rect import Rect
class Square(Rect):
def __init__(self, size):
super().__init__(height=size, width=size)
def main():
sq = Square(5)
print(sq.area())
print(sq.perimeter())
if __name__ == '__main__':
main()