Прямоугольник на Питоне

Hecate1988

Новичок
Пользователь
Фев 7, 2023
5
0
1
36
Харьков
Помогите решить задачу:
Создайте класс «Прямоугольник», у которого необходимо реализовать два поля (ширина и высота) и несколько обязательных методов:

Метод сравнения прямоугольников по площади.
  1. Метод сложения прямоугольников (площадь суммарного прямоугольника должна быть равна сумме площадей прямоугольников, которые вы складываете).
  2. Методы умножения прямоугольника на число n (это должно увеличить площадь базового прямоугольника в n раз).
В классе могут быть созданы и дополнительные (вспомогательные методы)

Несколько уточнений:

1. Методы сложения, умножения, деления и т.д. обязательно должны возвращать новый экземпляр класса Прямоугольник!

2. Для умножения, сложения, сравнения, обязательно нужно переопределять "магичиские" методы. Для умножение есть встроенный метод __mul__

3. Когда в результате мат. действий создаете новый экземпляр класса Прямоугольник, то у этого экземпляра, перемножение сторон, должно давать нужную площадь. Это тоже важно

https://ru.onlinemschool.com/math/formula/rectangle/

class Rectangle:

def __init__(self, width, height):
self.width = width
self.height = height


def get_square(self):
return self.width * self.height

def __eq__(self, other):
pass

def __add__(self, other):
pass

def __mul__(self, n):
pass

def __str__(self):
pass



r1 = Rectangle(2, 4)
r2 = Rectangle(3, 6)
assert r1.get_square() == 8
assert r2.get_square() == 18

r3 = r1 + r2
assert r3.get_square() == 26

r4 = r1 * 4
assert r4.get_square() == 32

Я сделала задачу, но в
r3 = r1 + r2 assert r3.get_square() == 26 r4 = r1 * 4 assert r4.get_square() == 32
выбивает ошибки: AssertionError
Код:
class Rectangle:

    def __init__(self, width, height):
        self.width = width
        self.height = height

    def get_square(self):
        return self.width * self.height

    def __eq__(self, other):
        return self.get_square() == other.get_square()

    def __add__(self, other):
        width = self.width + other.width
        height = self.height + other.height
        return Rectangle(width, height)

    def __mul__(self, n):
        width = self.width * n
        height = self.height * n
        return Rectangle(width, height)

    def __str__(self):
        return f'Rectangle(width={self.width}, height={self.height})'


r1 = Rectangle(2, 4)
r2 = Rectangle(3, 6)
assert r1.get_square() == 8
assert r2.get_square() == 18

r3 = r1 + r2
assert r3.get_square() == 26

r4 = r1 * 4
assert r4.get_square() == 32
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
вопрос то в чем? что у вас не получаться?
 

Hecate1988

Новичок
Пользователь
Фев 7, 2023
5
0
1
36
Харьков
вопрос то в чем? что у вас не получаться?
При проверке
r3 = r1 + r2
assert r3.get_square() == 26

r4 = r1 * 4
assert r4.get_square() == 32 бьет ошибки AssertionError
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
При проверке
r3 = r1 + r2
assert r3.get_square() == 26

r4 = r1 * 4
assert r4.get_square() == 32 бьет ошибки AssertionError
задание странное у вас, при сложении прямоугольников сумма площадей равна не будет - http://www.px-pict.com/7/2/1/3.html
и умножаете не верно - http://www.px-pict.com/7/2/2/3.html

ну и общее - http://www.px-pict.com/7/2.html

upd
прошу прощения, с умножением у вас просто на число, то есть вам нужно площадь просто умножить на число, а не стороны...
а со сложением у вас косяк, ссылки кинул, возможно вам нужно просто сложить площади прямоугольников, не знаю...
задание странное, повторюсь
 
Последнее редактирование:

Форум IT Специалистов