Фигуры и их характеристики Разработайте иерархию классов для расчета периметров и площадей геометрических фигур. 1. Создайте базовый класс Shape. Определите в нём методы calculate_perimeter() и calculate_area(), которые будут возвращать периметр и площадь фигуры соответственно (сейчас возвращают 0). 2. Создайте классы-потомки Shape, описывающие следующие геометрические фигуры: 2.1. Circle (Круг): Определите метод __init__(self, radius), который принимает радиус круга и сохраняет его как атрибут. Переопределите методы calculate_perimeter() и calculate_area() для вычисления периметра и площади круга. 2.2. Rectangle (Прямоугольник): Определите метод __init__(self, width, height), который принимает ширину и высоту прямоугольника и сохраняет их как атрибуты. Переопределите методы calculate_perimeter() и calculate_area() для вычисления периметра и площади прямоугольника. 2.3. Triangle (Треугольник): Определите метод __init__(self, side1, side2, side3), который принимает длины трех сторон треугольника и сохраняет их как атрибуты. Переопределите методы calculate_perimeter() и calculate_area() для вычисления периметра и площади треугольника. 3. Создайте класс Square (Квадрат), наследующий от Rectangle. Переопределите его конструктор и методы calculate_perimeter() и calculate_area(), чтобы они работали только с одной стороной (так как у квадрата все стороны равны). 4. Создайте класс RightTriangle (прямоугольный треугольник), наследующий от Triangle. Переопределите его конструктор и методы calculate_perimeter() и calculate_area(), чтобы они работали только с длинами катетов. 5. Создайте класс ShapeList, хранящий список фигур. Определите метод __init__(self), создающий атрибут shape_list, содержащий пустой список. Определите метод add_shape(self, shape), добавляющий в список shape_list фигуру shape. Определите методы calculate_perimeters() и calculate_areas() возвращающие кортежи периметров и площадей всех фигур, хранящихся в списке shape_list. Тесты: 1. Создайте объект класса ShapeList 2. Заполните его случайным количеством (от 2 до 10) произвольных фигур. 3. Выведите результаты работы методов calculate_perimeters() и calculate_areas() для этого объекта​

Ответы

Ответ дал: UkranianCoder
0

Відповідь:

import math

class Shape:

   def calculate_perimeter(self):

       return 0

   def calculate_area(self):

       return 0

class Circle(Shape):

   def __init__(self, radius):

       self.radius = radius

   def calculate_perimeter(self):

       return 2 * math.pi * self.radius

   def calculate_area(self):

       return math.pi * (self.radius ** 2)

class Rectangle(Shape):

   def __init__(self, width, height):

       self.width = width

       self.height = height

   def calculate_perimeter(self):

       return 2 * (self.width + self.height)

   def calculate_area(self):

       return self.width * self.height

class Triangle(Shape):

   def __init__(self, side1, side2, side3):

       self.side1 = side1

       self.side2 = side2

       self.side3 = side3

   def calculate_perimeter(self):

       return self.side1 + self.side2 + self.side3

   def calculate_area(self):

       s = (self.side1 + self.side2 + self.side3) / 2

       return math.sqrt(s * (s - self.side1) * (s - self.side2) * (s - self.side3))

class Square(Rectangle):

   def __init__(self, side):

       super().__init__(side, side)

class RightTriangle(Triangle):

   def __init__(self, cathetus1, cathetus2):

       super().__init__(cathetus1, cathetus2, math.sqrt(cathetus1**2 + cathetus2**2))

   def calculate_area(self):

       return 0.5 * self.side1 * self.side2

class ShapeList:

   def __init__(self):

       self.shape_list = []

   def add_shape(self, shape):

       if isinstance(shape, Shape):

           self.shape_list.append(shape)

   def calculate_perimeters(self):

       return tuple(shape.calculate_perimeter() for shape in self.shape_list)

   def calculate_areas(self):

       return tuple(shape.calculate_area() for shape in self.shape_list)

Пояснення:
Цей код створює класи для різних геометричних фігур і визначає методи для розрахунку їхніх периметрів і площ.

Вас заинтересует