Домашнее задание. Площадь региона
15 октября 2018
Вычислить площадь региона, заданного непересекающимися геометрическими фигурами. Необходимо реализовать типы различных фигур в виде пользовательских типов данных (классов).
Задача
Дан список геометрических фигур (исходные данные). Эти фигуры не пересекают друг друга. Требуется ответить на два вопроса:
- Какова суммарная площадь этих фигур?
- Какие пять фигур имеют наибольшую площадь?
Фигуры, которые нужно реализовать:
- Круг (класс
Circle
). Параметр круга — одно число (радиус). - Прямоугольник (класс
Rect
). Параметры прямоугольника — два числа (ширина и высота). - Треугольник (класс
Triangle
). Параметры треугольника — три числа (длины трёх его сторон).
Пожелания по решению
Удобно будет реализовать классы геометрических фигур, реализующие протокол вычисления площади.
Пусть класс, реализующий протокл вычисления площади, содержит следующие методы:
area()
— возвращает вещественное число (float), равное площади фигуры.
Кроме того, все нужные параметры фигура должна получать при создании, как параметры конструктора класса.
Так же необходимо реализовать метод __str__()
, чтобы фигуру можно было вывести на экран при помощи функции print()
.
Исходные данные
Список фигур, из которых состоит регион, скрипт должен прочитать из текстового файла figures.txt
. Скачайте его по ссылке: https://anhel.in/files/figures.txt.
Каждая строка файла описывает одну фигуру и имеет следующий формат:
название-класса-фигуры,параметр1,параметр2
Элементы строки разделены запятыми. Количество параметров в строке зависит от типа фигуры (у круга один, у прямоугольника два, у треугольника три).
Название класса фигуры может быть:
Circle
— кругRect
— прямоугольникTriangle
— треугольник
Результат выводится на экран.
Пример класса Circle
import math
class Circle:
def __init__(self, r):
self.r = r
def area(self):
return math.pi * (self.r ** 2)
def __str__(self):
return "Circle(r={})".format(self.r)
Остальные классы фигур реализуйте аналогично.
Замечания по реализации
- Формулы вычисления площади соответствующих фигур посмотрите в интернете.
- Площадь треугольника по трём известным сторонам можно вычислить по формуле Герона
- Квадратный корень из числа считает функция
math.sqrt(x)
(нужно импортировать модуль math). - Чтобы вывести пять фигур с наибольшей площадью, проще всего отсортировать список фигур по площади и сделать срез первых пяти элементов этого списка.