Главная страница » Python площадь треугольника

Python площадь треугольника

В 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

Выбор функции зависит от того, какая информация о треугольнике у вас есть.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх