/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/python/lab-111-014/main.py
52 строки
2 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
import turtle import math def draw_regular_polygon(n: int, side: float = None, radius: float = None, mode: str = "side", fill: bool = False, color: str = "black"): """ :param n: количество сторон (n ≥ 3) :param side: длина стороны (при mode='side') :param radius: радиус описанной окружности (при mode='radius') :param mode: 'side' или 'radius' — что задано """ if n < 3: raise ValueError("n должно быть ≥ 3") t = turtle.Turtle() t.speed(0) t.color(color) if fill: t.begin_fill() # Вычисление угла поворота и стороны/радиуса angle = 360.0 / n if mode == "radius": if radius is None: raise ValueError("Для mode='radius' требуется параметр radius") side = 2 * radius * math.sin(math.radians(angle / 2)) # Центрирование: переместиться в начальную точку t.penup() t.goto(radius, 0) t.setheading(90 + angle / 2) t.pendown() elif mode == "side": if side is None: raise ValueError("Для mode='side' требуется параметр side") radius = side / (2 * math.sin(math.radians(angle / 2))) t.penup() t.goto(0, -radius) t.setheading(0) t.pendown() else: raise ValueError("mode должен быть 'side' или 'radius'") for _ in range(n): t.forward(side) t.left(angle) if fill: t.end_fill() t.hideturtle() draw_regular_polygon(5, 100, 100) turtle.done()