Рисование фигур в Python с помощью модуля turtle
Кратко: модуль turtle в Python — простой графический инструмент для обучения и визуализации. В этой статье показано, как настроить холст, создать несколько «черепашек», рисовать квадраты, прямоугольники, треугольники, круги и многоугольники, а также даны приёмы автоматизации, шаблоны кода, чек-листы для преподавателя и учащегося и советы по отладки.

Введение
Модуль turtle входит в стандартную библиотеку Python и предоставляет простой интерфейс для рисования на экране. Он особенно полезен для обучения основам программирования, геометрии и алгоримтики: вы управляете «черепашкой» — курсором, который оставляет след при движении.
Определение: черепашка — объект, представляющий точку/курсор на холсте, которым можно управлять функциями движения и рисования.
Почему это полезно
- Видимый отклик на команды помогает понять управление потоком и циклы.
- Можно иллюстрировать векторы, углы и преобразования в 2D.
- Подходит для быстрых визуальных прототипов небольших графических задач.
Важно: turtle ориентирован на образовательные и простые графические задачи; для производительной графики или сложной анимации лучше рассмотреть Pygame, Matplotlib или OpenGL.
Что потребуется
- Установленный Python 3.x (3.7+ рекомендуется). Модуль turtle входит в стандартную библиотеку, дополнительной установки обычно не требуется.
- Терминал/командная строка для запуска скрипта.
Быстрое начало: минимальный скрипт
Создайте файл shapes.py и вставьте следующий минимальный код, затем запустите python shapes.py:
import turtle
window = turtle.Screen()
window.bgcolor("white")
turtle_1 = turtle.Turtle()
turtle_1.shape("turtle")
turtle_1.color("red")
window.exitonclick()Пояснения к коду:
- turtle.Screen() — создаёт окно-холст.
- Turtle() — создаёт объект-черепашку.
- shape() и color() задают внешний вид курсора и цвет линии.
- exitonclick() держит окно открытым до клика мышью.
Краткая проверка окружения
- В Windows: откройте cmd и перейдите в папку со скриптом: cd C:\Users\ВашеИмя\Desktop
- Запустите: python shapes.py
Как рисовать квадраты и прямоугольники
Основные команды движения:
- forward(n) — двигаться вперёд на n пикселей.
- backward(n) — назад на n пикселей.
- left(angle) / right(angle) — повернуть на угол в градусах.
- penup() / pendown() — поднять/опустить перо, чтобы двигать без рисования.
Пример: квадрат со стороной 100 пикселей
turtle_1.forward(100)
turtle_1.right(90)
turtle_1.forward(100)
turtle_1.right(90)
turtle_1.forward(100)
turtle_1.right(90)
turtle_1.forward(100)Упрощение через цикл:
for _ in range(4):
turtle_1.forward(100)
turtle_1.right(90)Прямоугольник (например, 100×200):
for side in [100, 200, 100, 200]:
turtle_1.forward(side)
turtle_1.right(90)Совет: если вы рисуете несколько фигур, используйте penup() и goto(x, y), чтобы переместить черепашку без линии.
Как рисовать треугольники
Равносторонний треугольник рисуется поворотами на 120° (360/3).
Пример пошагово:
import turtle
turtle_2 = turtle.Turtle()
turtle_2.shape("arrow")
turtle_2.color("blue")
turtle_2.penup()
turtle_2.goto(-250, 200)
turtle_2.pendown()
for _ in range(3):
turtle_2.forward(100)
turtle_2.left(120)Преимущества цикла: легко менять число сторон и длину.
Как рисовать круги
Метод turtle.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) # радиус 50 пикселейСовет: увеличивая аргумент, вы получите больший круг. Чтобы нарисовать дугу, можно передать второй аргумент — угол: turtle_3.circle(50, 180) — полуокружность.
Как рисовать шести- и восьмиугольники и другие правильные многоугольники
Правильный n-угольник можно рисовать циклом: поворот равен 360 / n градусов.
Пример: шестиугольник
turtle_4 = turtle.Turtle()
turtle_4.shape("turtle")
turtle_4.color("purple")
turtle_4.penup()
turtle_4.goto(150, 200)
turtle_4.pendown()
for _ in range(6):
turtle_4.forward(100)
turtle_4.right(60) # 360/6Октагон:
for _ in range(8):
turtle_4.forward(100)
turtle_4.right(45) # 360/8Универсальная функция для правильного многоугольника
def draw_regular_polygon(t, sides, length):
angle = 360 / sides
for _ in range(sides):
t.forward(length)
t.right(angle)Применение:
draw_regular_polygon(turtle_4, 5, 80) # пятиугольникПолезные параметры и методы (шпаргалка)
- speed([0..10]) — скорость черепашки, 0 — мгновенно.
- pensize(n) — толщина линии.
- pencolor(“color”) — цвет линии (строка или RGB через .colormode()).
- fillcolor() / begin_fill() / end_fill() — заливка фигуры.
- heading() — текущий угол направления.
- position() / xcor() / ycor() — координаты.
Пример заливки квадрата:
turtle_1.fillcolor("yellow")
turtle_1.begin_fill()
for _ in range(4):
turtle_1.forward(100)
turtle_1.right(90)
turtle_1.end_fill()Практические рецепты и шаблоны
Полный файл shapes.py, объединяющий примеры (скопируйте и запустите):
import turtle
window = turtle.Screen()
window.bgcolor("white")
# Красная черепашка — квадрат и прямоугольник
red = turtle.Turtle()
red.shape("turtle")
red.color("red")
red.speed(4)
# Рисуем квадрат
red.penup()
red.goto(-200, -50)
red.pendown()
for _ in range(4):
red.forward(100)
red.right(90)
# Синий — треугольник
blue = turtle.Turtle()
blue.shape("arrow")
blue.color("blue")
blue.penup()
blue.goto(-250, 200)
blue.pendown()
for _ in range(3):
blue.forward(100)
blue.left(120)
# Зелёный — круг
green = turtle.Turtle()
green.shape("circle")
green.color("green")
green.penup()
green.goto(-50, 50)
green.pendown()
green.circle(50)
# Фиолетовый — шестиугольник
purple = turtle.Turtle()
purple.shape("turtle")
purple.color("purple")
purple.penup()
purple.goto(150, 200)
purple.pendown()
for _ in range(6):
purple.forward(70)
purple.right(60)
window.exitonclick()Отладка и типичные ошибки
- Ничего не происходит: убедитесь, что вы запускаете правильный файл и что окно не закрыто.
- Программа завершилась сразу: проверьте наличие window.exitonclick() в конце.
- Фигуры «перепутаны» или налезают друг на друга: используйте penup() и goto(x, y) для позиционирования.
- Углы выглядят некорректно: убедитесь, что повороты составляют 360/n градусов для правильного n-угольника.
Важно: иногда при запуске в интегрированных средах (IDE) поведение окна turtle отличается. Для стабильности запускайте скрипт в отдельном процессе python из терминала.
Альтернативы и когда turtle не подходит
Когда использовать другие инструменты:
- Pygame — когда нужна интерактивность и обработка событий в играх.
- Matplotlib — для построения графиков и визуализации данных.
- Tkinter/Canvas — для создание GUI с графическими элементами.
Тurtle отлично подходит для обучения, быстрых визуализаций и демонстраций геометрии.
Мини-методология: как спроектировать новую фигуру
- Определите форму: сколько сторон, есть ли дуги.
- Разбейте на примитивы: прямые, дуги, перемещения без рисования.
- Опишите маршрут в виде последовательности команд forward/turn или использования circle.
- Инкапсулируйте в функцию с аргументами (позиция, размер, цвет).
- Протестируйте на нескольких позициях и размерах.
Критерии приёмки
- Скрипт запускается без ошибок в Python 3.
- Каждая фигура рисуется на отдельной области холста и не перекрывается (если это не требуется).
- Используются функции/циклы для повторяющихся действий.
- Окно остаётся открытым до клика мышью.
Ролевые чек-листы
Для преподавателя:
- Подготовить файл с комментариями и задачами для учеников.
- Убедиться, что в среде установлен Python 3.
- Продемонстрировать базовые команды и цикл for.
Для ученика:
- Скопировать пример и запустить его.
- Изменить параметры: длину стороны, цвет, скорость.
- Попробовать написать функцию draw_regular_polygon() самостоятельно.
Шпаргалка команд (коротко)
- forward(n), backward(n)
- left(angle), right(angle)
- penup(), pendown(), goto(x, y)
- circle(radius[, extent])
- begin_fill(), end_fill(), fillcolor()
- speed(n), pensize(n), pencolor()
Советы по эстетике рисунка
- Используйте разную pensize() для визуальной иерархии.
- Используйте begin_fill()/end_fill() для выделения областей.
- Смешивайте цвета и формы для наглядных упражнений по композиции.
Совместимость и миграция
- Модуль turtle доступен во всех распространённых дистрибутивах Python 3.
- При переходе с Python 2 обратите внимание на синтаксис print и изменения в стандартной библиотеке — лучше использовать Python 3.
Заключение
Модуль turtle — простой, наглядный инструмент для изучения программирования и основ графики. Начните с базовых команд, затем автоматизируйте через функции и циклы. Когда потребности вырастут — рассмотрите специализированные библиотеки для графики и анимации.
Важно: этот подход помогает понять геометрию и управление потоком; для сложных проектов выбирайте более производительные инструменты.
Краткое резюме
- Turtle даёт быстрый визуальный отклик на команды и идеально подходит для обучения.
- Используйте циклы для повторяющихся фигур и функции для переиспользуемости.
- Для интерактивных игр или сложной анимации применяйте другие библиотеки.
Похожие материалы
Как устроить идеальную вечеринку для просмотра ТВ
Как распаковать несколько RAR‑файлов сразу
Приватный просмотр в Linux: как и зачем
Windows 11 не видит iPod — способы исправить
PS5: как настроить игровые пресеты