Как построить пятиконечную звезду на python?
Ответ нейросети
22 ноября 2025 12:14
Классная задача: пятиконечную звезду можно построить разными способами. Самый простой способ в программах — взять 5 точек на окружности (регулярный пентагон) и соединить их в порядке 0→2→4→1→3→0. Это образует пятиконечную звезду (пентакрис). Ниже два удобных варианта: через matplotlib (для статического изображения) и через turtle (интерактивное рисование).
Что нужно понять заранее
- Берём центр звезды (cx, cy) и радиус R.
- Точки вокруг окружности: для k = 0..4 угол θk = 2πk/5. Координаты: (cx + R cos θk, cy + R sin θk).
- Порядок рисования звезды: [0, 2, 4, 1, 3] и затем возвращаемся в начальную точку.
- Для заливки используйте замкнутый путь: star_points + [star_points[0]].
Вариант 1: matplotlib (статическое изображение)
- Подходит для ноутбуков, сохранения картинок и т.д.
Code (plain text):
import math import matplotlib.pyplot as plt
def pentagram_points(cx=0.0, cy=0.0, R=1.0, start_angle=0.0): # вычисляем 5 вершинRegular pentagon pts = [] for k in range(5): a = start_angle + 2math.pik/5 x = cx + Rmath.cos(a) y = cy + Rmath.sin(a) pts.append((x, y)) # порядок, который даёт звезду order = [0, 2, 4, 1, 3] return [pts[i] for i in order]
def plot_pentagram(cx=0.0, cy=0.0, R=1.0, start_angle=0.0, fill=False, color='black'): star = pentagram_points(cx, cy, R, start_angle) if fill: # замыкаем путь и заполняем xs, ys = zip(*star + [star[0]]) plt.fill(xs, ys, facecolor='gold', edgecolor=color, alpha=0.8) else: xs, ys = zip(*star) # замыкаем контур звезды plt.plot(list(xs) + [xs[0]], list(ys) + [ys[0]], color=color)
plt.axis('equal')
plt.grid(True)
plt.figure(figsize=(4,4)) plot_pentagram(R=1.0, fill=False, color='blue') plt.show()
Как запустить и что увидеть:
- Запустите скрипт — вы увидите контур звезды.
- Чтобы заполнить звезду цветом, вызовите plot_pentagram(..., fill=True).
Вариант 2: turtle (интерактивное рисование)
- Подходит для простых уроков и наглядности в окне графики.
Code (plain text):
import turtle import math
def pentagram_points_turtle(cx=0.0, cy=0.0, R=100.0, start_angle=0.0): pts = [] for k in range(5): a = math.radians(start_angle) + 2math.pik/5 x = cx + Rmath.cos(a) y = cy + Rmath.sin(a) pts.append((x, y)) order = [0, 2, 4, 1, 3] return [pts[i] for i in order]
def draw_pentagram_turtle(R=100.0, start_angle=0.0, fill=False): pts = pentagram_points_turtle(0, 0, R, start_angle) t = turtle.Turtle() t.speed(0)
if fill:
t.penup()
t.goto(pts[0])
t.pendown()
t.begin_fill()
for p in pts[1:] + [pts[0]]:
t.goto(p)
t.end_fill()
else:
t.penup()
t.goto(pts[0])
t.pendown()
for p in pts[1:] + [pts[0]]:
t.goto(p)
turtle.done()
Пример использования:
Чтобы нарисовать пустую звезду:
draw_pentagram_turtle(R=150, start_angle=0, fill=False)
Чтобы заполнить звезду цветом:
draw_pentagram_turtle(R=150, start_angle=0, fill=True)
Замечания и советы
- Величина R задаёт размер звезды; можно изменить центр cx, cy для сдвига на экране.
- Если хотите повернуть звезду, изменяйте start_angle. Например, start_angle = math.pi/10 сдвинёт на небольшой угол.
- Для красивой заливки используйте fill=True в matplotlib; в turtle заливка может выглядеть по-разному из-за самопересечений.
Если скажете, какой инструмент удобнее (matplotlib или turtle) и где вы планируете использовать звезду (скрипт, ноутбук, учебный проект), могу подстроить код под ваш случай и добавить дополнительные варианты (например, заливку цветом по градиенту, анимацию рисования и т. п.).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



