Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3511680
А
Аноним
22 ноября 2025 12:14 · публичный вопрос
А
Аноним

как построить пятиконечную звезду на 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) и где вы планируете использовать звезду (скрипт, ноутбук, учебный проект), могу подстроить код под ваш случай и добавить дополнительные варианты (например, заливку цветом по градиенту, анимацию рисования и т. п.).