В Python площадь треугольника можно вычислить несколькими способами, в зависимости от того, какие данные вам известны:
По основанию и высоте По трем сторонам (формула Герона) По координатам вершин
1. Площадь треугольника по основанию и высоте
Самая известная и простая формула: S=21×основание×высота
Python
Def area_base_height(base, height):
"""
Вычисляет площадь треугольника по основанию и высоте.
Args:
base (float or int): Длина основания треугольника.
height (float or int): Длина высоты, опущенной на это основание.
Returns:
float: Площадь треугольника. Возвращает None, если входные данные некорректны.
"""
if base <= 0 or height <= 0:
print("Ошибка: Основание и высота должны быть положительными числами.")
return None
area = 0.5 * base * height
return area
# Примеры использования:
Print("— Площадь по основанию и высоте —")
Print(f"Площадь треугольника с основанием 10 и высотой 5: {area_base_height(10, 5)}") # Ожидаем 25.0
Print(f"Площадь треугольника с основанием 7.5 и высотой 4: {area_base_height(7.5, 4)}") # Ожидаем 15.0
Print(f"Площадь треугольника с основанием -2 и высотой 5: {area_base_height(-2, 5)}") # Ожидаем ошибку
2. Площадь треугольника по трем сторонам (Формула Герона)
Если известны длины всех трех сторон (a, b,c), можно использовать формулу Герона. Сначала вычисляем полупериметр (p=2a+b+c), затем площадь: S=p(p−a)(p−b)(p−c)
Важное условие: Сумма любых двух сторон треугольника должна быть больше третьей стороны (неравенство треугольника). Если это условие не выполняется, треугольник с такими сторонами не существует.
Python
Import math
Def area_heron(a, b, c):
"""
Вычисляет площадь треугольника по трем сторонам, используя формулу Герона.
Args:
a (float or int): Длина первой стороны.
b (float or int): Длина второй стороны.
c (float or int): Длина третьей стороны.
Returns:
float: Площадь треугольника. Возвращает None, если стороны некорректны или треугольник не существует.
"""
if a <= 0 or b <= 0 or c <= 0:
print("Ошибка: Длины сторон должны быть положительными числами.")
return None
# Проверка на существование треугольника (неравенство треугольника)
if not (a + b > c and a + c > b and b + c > a):
print("Ошибка: Треугольник с такими сторонами не существует.")
return None
s = (a + b + c) / 2 # Полупериметр
# Чтобы избежать ошибок с плавающей точкой, убедимся, что аргумент sqrt неотрицательный
# иногда из-за погрешностей s*(s-a)*(s-b)*(s-c) может быть очень маленьким отрицательным числом
arg_sqrt = s * (s — a) * (s — b) * (s — c)
if arg_sqrt < 0:
arg_sqrt = 0 # Или можно вернуть None, в зависимости от того, как хотите обрабатывать такие случаи
area = math. sqrt(arg_sqrt)
return area
# Примеры использования:
Print("\n— Площадь по трем сторонам (Формула Герона) —")
# Прямоугольный треугольник (3, 4, 5)
Print(f"Площадь треугольника со сторонами 3, 4, 5: {area_heron(3, 4, 5)}") # Ожидаем 6.0
# Равносторонний треугольник
Print(f"Площадь равностороннего треугольника со стороной 5: {area_heron(5, 5, 5)}") # Ожидаем 10.825…
# Треугольник, который не существует
Print(f"Площадь треугольника со сторонами 1, 2, 5: {area_heron(1, 2, 5)}") # Ожидаем ошибку
Print(f"Площадь треугольника со сторонами 1, 1, 2: {area_heron(1, 1, 2)}") # Ожидаем ошибку (вырожденный треугольник)
3. Площадь треугольника по координатам вершин
Если известны координаты трех вершин ((x1,y1),(x2,y2),(x3,y3)), можно использовать формулу "башмака" (Shoelace formula) или формулу через определитель.
Формула (удвоенная площадь): 2S=∣x1(y2−y3)+x2(y3−y1)+x3(y1−y2)∣
Python
Def area_coordinates(p1, p2, p3):
"""
Вычисляет площадь треугольника по координатам трех вершин.
Args:
p1 (tuple): Кортеж (x1, y1) — координаты первой вершины.
p2 (tuple): Кортеж (x2, y2) — координаты второй вершины.
p3 (tuple): Кортеж (x3, y3) — координаты третьей вершины.
Returns:
float: Площадь треугольника. Возвращает None, если входные данные некорректны.
"""
# Проверка, что p1, p2, p3 — это кортежи/списки из 2 чисел
if not (isinstance(p1, (tuple, list)) and len(p1) == 2 and
isinstance(p2, (tuple, list)) and len(p2) == 2 and
isinstance(p3, (tuple, list)) and len(p3) == 2):
print("Ошибка: Вершины должны быть кортежами или списками из двух чисел (x, y).")
return None
x1, y1 = p1
x2, y2 = p2
x3, y3 = p3
# Используем формулу "башмака"
area = 0.5 * abs(x1 * (y2 — y3) + x2 * (y3 — y1) + x3 * (y1 — y2))
return area
# Примеры использования:
Print("\n— Площадь по координатам вершин —")
# Треугольник с вершинами (0,0), (0,3), (4,0) — прямоугольный, площадь 0.5 * 4 * 3 = 6
Print(f"Площадь треугольника с вершинами (0,0), (0,3), (4,0): {area_coordinates((0,0), (0,3), (4,0))}") # Ожидаем 6.0
# Произвольный треугольник
Print(f"Площадь треугольника с вершинами (1,1), (5,2), (3,7): {area_coordinates((1,1), (5,2), (3,7))}") # Ожидаем 11.0
# Вырожденный треугольник (точки на одной прямой)
Print(f"Площадь треугольника с вершинами (0,0), (1,1), (2,2): {area_coordinates((0,0), (1,1), (2,2))}") # Ожидаем 0.0
Выбор функции зависит от того, какая информация о треугольнике у вас есть.