Загрузка данных


class WinDoor:
    """Класс для окон и дверей"""
    def __init__(self, width, height):
        self.width = width
        self.height = height

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


class Room:
    """Класс комнаты, включающий в себя объекты проемов (композиция)"""
    def __init__(self, length, width, height):
        self.length = length
        self.width = width
        self.height = height
        self.openings = []  # Композиция: список объектов WinDoor

    def add_opening(self, width, height):
        """Добавление окна или двери"""
        self.openings.append(WinDoor(width, height))

    def full_wall_area(self):
        """Полная площадь 4-х стен без вычета окон и дверей"""
        return 2 * (self.length + self.width) * self.height

    def wallpaper_area(self):
        """Итоговая площадь под оклейку обоями"""
        total_openings_area = sum(op.area() for op in self.openings)
        return self.full_wall_area() - total_openings_area


# Пример использования:
# Комната: длина 6 м, ширина 4 м, высота 2.7 м
my_room = Room(length=6, width=4, height=2.7)

# Добавляем одно окно (1.5 x 1.4 м) и одну дверь (0.9 x 2.0 м)
my_room.add_opening(1.5, 1.4)
my_room.add_opening(0.9, 2.0)

print(f"Полная площадь стен: {my_room.full_wall_area()} кв. м")
print(f"Площадь для оклейки обоями: {my_room.wallpaper_area()} кв. м")