added files for 2 lession
This commit is contained in:
parent
43cf6c9f91
commit
6c58709dc1
|
|
@ -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()
|
||||
|
|
@ -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()
|
||||
|
|
@ -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()
|
||||
|
|
@ -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()
|
||||
Loading…
Reference in New Issue