This commit is contained in:
Slava Rogozhkin 2024-11-20 23:21:39 +03:00
parent 45d8c51946
commit b2b75d4334
3 changed files with 113 additions and 6 deletions

View File

@ -9,17 +9,36 @@ class PointXY():
return sqrt( (point.x - self.x) ** 2 + (point.y - self.y) ** 2) return sqrt( (point.x - self.x) ** 2 + (point.y - self.y) ** 2)
def if_inside(self, r): def if_inside(self, r):
if (r.a.x <= self.x <= r.b.x) and (r.a.y <= self.y <= r.b.y): return (r.a.x <= self.x <= r.b.x) and (r.a.y <= self.y <= r.b.y)
return 'точка внутри прямоуголника'
return 'точка вне прямоугольника' def __str__(self):
return 'x = ' + str(self.x) + ' y = ' + str(self.y)
def __eq__(self, point):
return self.distance_to(point) == 0
def __ne__(self, point):
return self.distance_to(point) != 0
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 __init__(self, x:int, y:int): def __init__(self, x:int, y:int):
self.x = x self.x = x
self.y = y self.y = y
def __str__(self):
return 'x = ' + str(self.x) + ' y = ' + str(self.y)
class Rect(): class Rect():
def area(self): def area(self):
return self.lenght * self.width return self.lenght * self.width
@ -58,4 +77,21 @@ class Rect():
else: else:
return 'x = ' + str(self.lenght) + ' y = ' + str(self.width) + ' a(' + str(self.a.x) + ':' + str(self.a.y) + ')' + ' b(' + str(self.b.x) + ':' + str(self.b.y) + ')' return 'x = ' + str(self.lenght) + ' y = ' + str(self.width) + ' a(' + str(self.a.x) + ':' + str(self.a.y) + ')' + ' b(' + str(self.b.x) + ':' + str(self.b.y) + ')'
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

71
shopinglist.py Normal file
View File

@ -0,0 +1,71 @@
class ShoppingList(dict):
def __init__(self, data):
return super().__init__(data)
def multiply(self, k: float):
new_ingredients = self.copy()
for key,value in new_ingredients.items():
new_ingredients[key] = value * k
return new_ingredients
def add(self, ingredients: dict):
new_ingredients = self.copy()
for key1,value1 in self.items():
for key2,value2 in ingredients.items():
if key1 == key2:
new_ingredients[key1] = value1 + value2
elif key2 not in new_ingredients:
new_ingredients.update({key2: value2})
return new_ingredients
def __add__(self, other):
new_list = self.copy()
for key1,value1 in self.items():
for key2,value2 in other.items():
if key1 == key2:
new_list[key1] = value1 + value2
break
elif key2 not in new_list:
new_list.update({key2: value2})
return new_list
def __mul__(self, other):
new_list = self.copy()
for key1,value1 in self.items():
for key2,value2 in other.items():
if key1 == key2:
new_list[key1] = value1 * value2
break
elif key2 not in new_list:
new_list.update({key2: value2})
return new_list
def multiply_ingredients(ingredients: dict, k: float) -> dict:
new_ingredients = ingredients.copy()
for key,value in new_ingredients.items():
new_ingredients[key] = value * k
return new_ingredients
def add_ingredients(ingredients1: dict, ingredients2: dict) -> dict:
new_ingredients = ingredients1.copy()
for key1,value1 in ingredients1.items():
for key2,value2 in ingredients2.items():
if key1 == key2:
new_ingredients[key1] = value1 + value2
elif key2 not in new_ingredients:
new_ingredients.update({key2: value2})
return new_ingredients
soup = {'onion': 1, 'potato': 2, 'water': 2.5, 'meat': 0.5}
salad = {'potato': 2, 'meat': 0.3, 'mayonaise': 0.1, 'peas': 200}
#soup + 2 * salad # словари так не умеют :(
new_soup = ShoppingList(soup)
new_salad = ShoppingList(salad)
print(new_soup + new_salad)
print(new_soup * new_salad)
print(new_soup.add(new_salad))
print(add_ingredients(soup, salad))