Гид по технологиям

Рисование геометрических фигур в Python с модулем turtle

5 min read Python Обновлено 03 Jan 2026
Рисование фигур в Python с turtle
Рисование фигур в Python с turtle

Введение

Цветной код Python в текстовом редакторе

Модуль turtle — лёгкий и наглядный способ познакомиться с основами графики и программирования: перемещения, углы, циклы и параметризация. Небольшие программы с turtle удобно использовать в обучении, для прототипов или простых визуализаций.

Что такое turtle (в одну строку): это библиотека для пошагового управления «черепашкой», которая оставляет след пера при движении по координатной плоскости.

Важно: turtle подходит для обучения, прототипов и простых анимаций. Для производительных или профессиональных визуализаций применяют другие библиотеки.

Быстрый старт — создаём shapes.py

  1. Создайте файл shapes.py.
  2. В начале импортируйте модуль:
import turtle
  1. Создайте окно-холст и задайте фон:
window = turtle.Screen()
window.bgcolor("white")
  1. Создайте объект-черепашку и задайте форму и цвет:
turtle_1 = turtle.Turtle()
turtle_1.shape("turtle")
turtle_1.color("red")
  1. В конце программы оставьте окно открытым, чтобы просмотреть результат:
window.exitonclick()
  1. В терминале перейдите в папку с файлом, например в Windows:
cd C:\Users\Sharl\Desktop
  1. Запустите скрипт:
python shapes.py

Холст turtle с черепашкой в начальной позиции

Основы управления черепашкой

Коротко о ключевых методах:

  • forward(distance) — движение вперёд на distance пикселей.
  • backward(distance) — назад.
  • left(angle) / right(angle) — поворот в градусах.
  • penup() / pendown() — поднять/опустить перо (перестать/начать рисовать).
  • goto(x, y) — перейти в координату (x, y).
  • circle(radius) — нарисовать окружность с радиусом radius.

Совет: используйте небольшие пробные значения, чтобы понять направление «черепашки». По умолчанию она смотрит вправо (по положительному X).

Рисуем квадрат и прямоугольник

Принцип прост: четыре стороны и четыре поворота по 90°.

  1. Движение вперёд на 100:
turtle_1.forward(100)
  1. Поворот направо на 90 и ещё 100 пикселей:
turtle_1.right(90)
turtle_1.forward(100)
  1. Повторяем ещё два раза, чтобы замкнуть фигуру.

Для прямоугольника сделайте противоположные стороны разной длины:

turtle_1.forward(100)
turtle_1.right(90)
turtle_1.forward(200)
turtle_1.right(90)
turtle_1.forward(100)
turtle_1.right(90)
turtle_1.forward(200)

Холст turtle рисует прямоугольник

Практическая подсказка: можно инкапсулировать рисование квадрата в функцию:

def draw_square(t, size):
    for _ in range(4):
        t.forward(size)
        t.right(90)

Рисуем треугольник

Обычный равносторонний треугольник можно получить поворотом на 120° три раза.

  1. Создаём новую черепашку:
turtle_2 = turtle.Turtle()
turtle_2.shape("arrow")
turtle_2.color("blue")
  1. Перемещаемся в начало фигуры без рисования:
turtle_2.penup()
turtle_2.goto(-250, 200)
turtle_2.pendown()
  1. Рисуем стороны:
turtle_2.forward(100)
turtle_2.left(120)
turtle_2.forward(100)
turtle_2.left(120)
turtle_2.forward(100)
turtle_2.left(120)

Или компактно через цикл:

for i in range(3):
    turtle_2.forward(100)
    turtle_2.left(120)

Холст turtle рисует треугольник

Совет по расположению: используйте goto(x,y) чтобы не накладывать фигуры друг на друга.

Рисуем окружность

Для окружностей есть функция circle(radius). Радиус указывается в пикселях.

turtle_3 = turtle.Turtle()
turtle_3.shape("circle")
turtle_3.color("green")

turtle_3.penup()
turtle_3.goto(-100, 50)
turtle_3.pendown()

turtle_3.circle(50)

Холст turtle рисует круг

Замечание: circle() рисует круг против часовой стрелки при положительном радиусе.

Рисуем правильные многоугольники (шести-/восьмиугольник и другие)

Шаблон: угол поворота = 360 / количество сторон. Для шестиугольника поворот = 60°.

for i in range(6):
    turtle_4.forward(100)
    turtle_4.right(60)

Для восьмиугольника — поворот 45°:

for i in range(8):
    turtle_4.forward(100)
    turtle_4.right(45)

Пример создания многоугольника через функцию:

def draw_regular_polygon(t, sides, length):
    angle = 360 / sides
    for _ in range(sides):
        t.forward(length)
        t.right(angle)
# Использование
polygon_t = turtle.Turtle()
polygon_t.color("purple")
polygon_t.penup()
polygon_t.goto(150, 200)
polygon_t.pendown()

draw_regular_polygon(polygon_t, 6, 100)  # шестиугольник

Холст turtle рисует восьмиугольник

Полезные приёмы и оптимизации

  • Скорость рисования: t.speed(value) — от 1 (медленно) до 10 (быстро) и special value 0 (максимум, без анимации). Для сложных фигур используйте speed(0).
  • Размер пера: t.pensize(width).
  • Цвета можно задавать именами, RGB-кортежами или шестнадцатеричным кодом: t.color((0.5, 0.2, 0.8)).
  • Скрыть курсор: t.hideturtle(). Это полезно при финальном рендере.
  • Ускорение рисования: прежде чем начать большое число отрисовок, можно выключить обновления экрана методом window.tracer(n, delay) и затем вызвать window.update().

Пример ускорения:

window.tracer(0)  # выключаем автоматические обновления
# много рисования
window.update()   # один раз обновляем экран

Шаблон: методология создания рисунка

  1. Спроектируйте композицию: сколько фигур, где будут центры, нужна ли сетка.
  2. Настройте холст: фон, размер окна, координаты начала.
  3. Напишите вспомогательные функции: draw_square, draw_circle, draw_regular_polygon.
  4. Тестируйте отдельные элементы: запустите с простыми размерами.
  5. Объедините и оптимизируйте: скрывайте черепашек, используйте tracer/update.
  6. Добавьте взаимодействие: кнопки, ввод размеров, рандомизацию цветов.

Контрпримеры — когда turtle не подходит

  • Большие данные и визуализации (> тысячи объектов): производительность плохая.
  • Профессиональный GUI или сложная анимация с физикой: лучше использовать Pygame, PyQt или специализированные движки.
  • Серверный рендеринг без GUI: turtle требует окно, поэтому не подходит для headless-серверов.

Альтернатива для статичных изображений: использовать Pillow (PIL) или matplotlib для сохранения в файл.

Альтернативные подходы

  • Pygame — для интерактивных игр и анимаций.
  • tkinter.Canvas — если нужен GUI с виджетами и более гибким управлением.
  • matplotlib — для графиков и научной визуализации (можно рисовать полигоны и окружности).
  • Pillow — для создания и сохранения изображений (PNG, JPEG).

Практические проверки и критерии приёмки

  • Скрипт запускается и не падает.
  • Окно открывается и остаётся до клика мыши (window.exitonclick()).
  • Рисунок корректно замкнут (для многоугольника первая и последняя точки совпадают визуально).
  • Параметры (размер, цвет, положение) принимают ожидаемые значения при изменении.

Минимальные тесты (acceptance):

  • Запустить shapes.py и убедиться, что видны квадрат, треугольник и окружность.
  • Изменить размер квадрата на 50 и увидеть уменьшение.
  • Для draw_regular_polygon(t, 5, 60) нарисуется пятилучная правильная фигура.

Чеклист для ролей

  • Учитель: подготовить несколько примеров с увеличивающейся сложностью, комментарии и задания для студентов.
  • Ученик/Начинающий: менять значения длины/углов, экспериментировать с цветами и формами.
  • Разработчик: инкапсулировать рисунки в функции, добавить параметры и тесты.

Сниппет — быстрая шпаргалка

# Общие команды
t.forward(100)
t.left(90)
t.penup()
t.pendown()
t.goto(x, y)
t.circle(30)
t.speed(0)
t.hideturtle()

Частые ошибки и как их избегать

  • Ошибка: забыли window.exitonclick() — окно закрывается сразу. Исправление: добавить эту строку последней.
  • Ошибка: неправильный угол для многоугольника. Правило: угол поворота = 360 / n.
  • Ошибка: наложение фигур — используйте penup()/goto() для перемещений без рисования.

Краткая справка: термины (1 строка)

  • Черепашка: объект turtle, рисующий линию; холст: окно Screen; пен: инструмент, оставляющий следы при pendown().

Заключение

Модуль turtle даёт интуитивный способ изучения графики и программирования: вы видите связь между командами движения и результатом на экране. Начните с простых фигур, инкапсулируйте повторяющийся код, затем переходите к параметрическим функциям и композициям. Если требуется производительность или сложная интерактивность, смотрите в сторону Pygame, tkinter или matplotlib.

Важно: используйте speed(0) и tracer/update при отрисовке множества объектов, а penup()/pendown() — при перемещениях, чтобы избежать ненужных линий.

Краткое резюме:

  • Начиная с нескольких строк кода вы можете нарисовать любую правильную фигуру.
  • angle = 360 / sides — основная формула для многоугольников.
  • Для серьёзных задач выбирайте специализированные библиотеки.

Дополнительные идеи для практики: рисовать цветовую палитру, фракталы (например, кривую Коха), простую анимацию или генеративное искусство, где параметры фигур задаются случайным образом.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство