diff --git a/__pycache__/more_class.cpython-312.pyc b/__pycache__/more_class.cpython-312.pyc index 4752737..a4f314b 100644 Binary files a/__pycache__/more_class.cpython-312.pyc and b/__pycache__/more_class.cpython-312.pyc differ diff --git a/more_class.py b/more_class.py index 34fe7da..74be591 100644 --- a/more_class.py +++ b/more_class.py @@ -9,17 +9,36 @@ class PointXY(): return sqrt( (point.x - self.x) ** 2 + (point.y - self.y) ** 2) def if_inside(self, r): - if (r.a.x <= self.x <= r.b.x) and (r.a.y <= self.y <= r.b.y): - return 'точка внутри прямоуголника' - return 'точка вне прямоугольника' + return (r.a.x <= self.x <= r.b.x) and (r.a.y <= self.y <= r.b.y) + + 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): self.x = x self.y = y - def __str__(self): - return 'x = ' + str(self.x) + ' y = ' + str(self.y) - class Rect(): def area(self): return self.lenght * self.width @@ -58,4 +77,21 @@ class Rect(): 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) + ')' +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 diff --git a/shopinglist.py b/shopinglist.py new file mode 100644 index 0000000..642ad74 --- /dev/null +++ b/shopinglist.py @@ -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))