Python: вычислить площадь многоугольника
Python Basic - 1: Упражнение 59 с решением
Выпуклый многоугольник - это простой многоугольник, в котором ни один отрезок прямой между двумя точками на границе никогда не выходит за пределы многоугольника. Эквивалентно, это простой многоугольник, внутренняя часть которого является выпуклым множеством. В выпуклом многоугольнике все внутренние углы меньше или равны 180 градусам, в то время как в строго выпуклом многоугольнике все внутренние углы строго меньше 180 градусов.
Напишите программу на Python, которая вычисляет площадь многоугольника. Вершины имеют имена вершина 1, вершина 2, вершина 3, ... вершина n в соответствии с порядком соединения ребер.
Однако n равно 3 или более и 20 или менее. Вы также можете использовать следующую формулу для вычисления площади S по длинам a, b и c трех сторон треугольника.
Иллюстрированная презентация:
Входные данные :
Ввод дается в следующем формате.
х1, у1
х2, у2
:
xn, yn
xi, yi - действительные числа, представляющие координаты x и y вершины i соответственно.
Выход:
Область вывода S (действительное число) в одной строке. Вывод может содержать ошибку 0,000001 или менее.
Пример решения :
Код Python:
import sys
from math import sqrt, hypot
def _hypot(x1, x2):
return hypot(x2[0]-x1[0], x2[1]-x1[1])
def parea(x1, x2, x3):
y1, y2, y3 = _hypot(x1, x2), _hypot(x2, x3), _hypot(x1, x3)
z = (y1+y2+y3)/2
return sqrt(z*(z-y1)*(z-y2)*(z-y3))
print("Input the coordinates (ctrl+d to exit):")
a = [tuple(map(float, l.split(","))) for l in sys.stdin]
result = 0
for x1, x2 in zip(a[1:], a[2:]):
result += parea(a[0], x1, x2)
print("Area of the polygon;")
print('{:.8f}'.format(result))
Пример вывода:
Введите координаты (Ctrl + D для выхода): 1,0, 0,0 0,0, 0,0 1,0, 1,0 2.0, 0.0 -1,0, 1,0 Площадь многоугольника; 1.50000000
Блок - схема:
Редактор кода Python:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите программу на Python для восстановления исходной строки, введя сжатую строку с этим правилом. Однако символ # не отображается в восстановленной строке символов.
Далее: Напишите программу на Python, чтобы вырезать слова длиной от 3 до 6 символов из данного предложения не более 1024 символов.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования