Простая и расширяемая библиотека на Python для вычисления площади геометрических фигур, с текущей поддержкой круга и треугольника. Позволяет вычислять площадь по радиусу (круг) и по трем сторонам (треугольник) с проверкой условий существования треугольника и определением, является ли треугольник прямоугольным.
Проект реализован с учетом чистой архитектуры, позволяющей легко добавлять новые фигуры, а также вычислять площадь фигуры без знания ее типа во время компиляции.
- Вычисление площади круга.
- Вычисление площади треугольника по формуле Герона.
- Проверка, является ли треугольник прямоугольным.
- Абстрактный базовый класс для легкого добавления новых фигур.
- Универсальная функция для вычисления площади любой фигуры.
- Валидация входных данных по сторонам и радиусу.
- Юнит-тесты, покрывающие основные сценарии использования и ошибки.
geometry_lib/
│
├── shapes.py # Определение классов фигур (Circle, Triangle, Shape)
├── utils.py # Утилиты (например, функция calculate_area)
└── tests/
└── test_shapes.py # Юнит-тесты для классов и функций библиотеки
- Клонировать репозиторий или скопировать папку
geometry_libв проект. - Подключать необходимые классы и функции:
from geometry_lib.shapes import Circle, Triangle
from geometry_lib.utils import calculate_area
circle = Circle(5)
triangle = Triangle(3, 4, 5)
print(f"Площадь круга: {calculate_area(circle)}")
print(f"Площадь треугольника: {calculate_area(triangle)}")
print(f"Является ли треугольник прямоугольным? {triangle.is_right_angle()}")Для запуска юнит-тестов из корня проекта используйте:
python -m unittest geometry_lib.tests.test_shapesДля успешного запуска убедитесь, что в папках geometry_lib и geometry_lib/tests есть файл __init__.py.
Добавление новой фигуры заключается в:
- Создании нового класса, наследующего
Shape. - Реализации метода
area. - При необходимости добавлении специфичных методов для фигуры.
- Добавлении тестов в
test_shapes.py.
- Python 3.8+
- Модули: стандартная библиотека (math, abc, unittest)
Если есть вопросы или предложения — открывайте issues в репозитории или пишите на почту: stansibirtsev@yandex.ru
Эта библиотека создана для учебных целей и может быть расширена под любые нужды работы с геометрическими вычислениями.