8. Найти периметр многоугольника. (в коде есть строки из следующих тем: "функции, библиотеки").
Условие:
Напишите программу для расчета периметра заданного многоугольника.
Начните с запроса у пользователя координат x и y первой точки многоугольника.
Продолжайте запрашивать координаты следующих точек фигуры, пока пользователь не оставит строку ввода координаты по оси x или y пустой.
После ввода каждой пары значений вы должны вычислить длину очередной стороны многоугольника и прибавить полученное значение к будущему ответу.
По окончании ввода необходимо вычислить расстояние от последней введенной точки до первой, чтобы замкнуть фигуру, и вывести итоговый результат.
Код:
import math
def my_function(last_point_x, last_point_y, x, y):
dist = math.sqrt((last_point_x - x) ** 2 + (last_point_y - y) ** 2)
return dist
print("%125s" % "Программа считает периметр многоугольника по введённым точкам в системе координат на плоскости.")
print("%125s" % "Пусть значения координат будут целыми цислами.")
print("%125s" % "Чтобы получился многоугольник, а не прямая координаты не должны лежать на одной линии.")
point = 1
perimetr = 0
while True:
x = input("%126s" % f"Введите координаты {point}-й точки по оси абсцисс: ")
y = input("%126s" % f"Введите координаты {point}-й точки по оси ординат: ")
if x == "" or y == "": # здесь цикл прерывается по условию задачи (совместно со следующим условием прерывания цикла является избыточным)
break
try:
x = int(x)
y = int(y)
except: # здесь цикл прерывается по если введены некорректные данные
print("%125s" % "Введены не числа.")
break
if point == 1: # запомним координаты первой точки
first_x = int(x)
first_y = int(y)
if point > 1:
perimetr += my_function(last_point_x, last_point_y, x, y)
last_point_x = x
last_point_y = y
point += 1 # следующая точка
if point <= 3:
print("%125s" % "Вы ввели всего две точки. Не получилась фигура многоугольника.")
else:
perimetr += my_function(last_point_x, last_point_y, first_x, first_y)
print("%125s" % "Периметр многоугольника", int(perimetr))