Turtle Python: рисуем разнообразные фигуры
Рисование фигур с помощью turtle в Python
Библиотека turtle предоставляет простой способ создания графических изображений. С её помощью можно рисовать различные геометрические фигуры, управляя перемещением черепашки по холсту.
Как нарисовать квадрат с помощью turtle?
Базовое решение для квадрата повторяет четыре раза движение вперёд и поворот на 90 градусов.
import turtle
t = turtle.Turtle()
for _ in range(4):
t.forward(100)
t.right(90)
turtle.done()Python turtle screen (работа с экраном в модуле turtle python)
Черепашка проходит 100 единиц, поворачивает направо, и так четыре раза. Результат - замкнутый квадрат.
Типичная ошибка:
Если забыть вызвать turtle.done(), окно может закрыться сразу после выполнения кода. Нужно добавлять эту команду в конце программы.
Как нарисовать треугольник?
Для равностороннего треугольника угол поворота равен 120 градусов (360/3).
import turtle
t = turtle.Turtle()
for _ in range(3):
t.forward(120)
t.left(120)
turtle.done()Python turtle codes (коды для turtle в python)
Возможная проблема:
Если направление поворота не совпадает с ожидаемым, треугольник может получиться перевёрнутым. Рекомендуется использовать left() или right() в зависимости от начального положения черепашки.
Как нарисовать круг?
Круг в turtle рисуется методом circle() с указанием радиуса.
import turtle
t = turtle.Turtle()
t.circle(50)
turtle.done()
Turtle python goto (команда goto в модуле turtle python)
По умолчанию круг рисуется против часовой стрелки. Для закрашенного круга используется begin_fill() и end_fill().
Типичная ошибка:
Если радиус отрицательный, круг рисуется в другую сторону. Нужно учитывать направление.
Как нарисовать звезду?
Пятиконечная звезда получается чередованием поворотов на 144 градуса (180-36).
import turtle
t = turtle.Turtle()
for _ in range(5):
t.forward(100)
t.right(144)
turtle.done()графика turtle python (рисование с помощью модуля turtle в python)
Проблема:
Если угол поворота не кратен 36, звезда может не замкнуться. Нужно проверить расчёт угла.
Как нарисовать спираль?
Спираль можно создать, увеличивая длину шага с каждым поворотом.
import turtle
t = turtle.Turtle()
for i in range(100):
t.forward(i * 2)
t.right(20)
turtle.done()Python turtle точки (рисование точек с помощью turtle в python)
Длина шага растёт, а поворот остаётся постоянным - получается архимедова спираль.
Возможная ошибка:
Слишком большой угол поворота приведёт к закручиванию в одну точку. Лучше брать угол меньше 30 градусов.
Как нарисовать случайные фигуры?
Можно комбинировать случайные длины и углы с помощью модуля random.
import turtle, random
t = turtle.Turtle()
for _ in range(50):
t.forward(random.randint(10, 50))
t.right(random.randint(0, 360))
turtle.done()Проблема:
Фигура может выйти за границы окна. Рекомендуется проверять координаты или ограничивать холст.
Расширенные примеры рисования фигур turtle
Как нарисовать фрактальное дерево?
Рекурсивный алгоритм позволяет создавать ветвящиеся структуры.
import turtle
def tree(branch_len, t):
if branch_len > 5:
t.forward(branch_len)
t.right(20)
tree(branch_len - 15, t)
t.left(40)
tree(branch_len - 15, t)
t.right(20)
t.backward(branch_len)
t = turtle.Turtle()
t.left(90)
t.up()
t.backward(100)
t.down()
t.color("green")
tree(75, t)
turtle.done()Результат - дерево с ветвями, длина которых уменьшается с каждым уровнем рекурсии.
Графическое окно с фрактальным деревом.
Как нарисовать снежинку Коха?
Снежинка строится путём замены каждого отрезка ломаной линией.
import turtle
def koch_curve(t, length, depth):
if depth == 0:
t.forward(length)
else:
length /= 3
koch_curve(t, length, depth-1)
t.left(60)
koch_curve(t, length, depth-1)
t.right(120)
koch_curve(t, length, depth-1)
t.left(60)
koch_curve(t, length, depth-1)
t = turtle.Turtle()
t.speed(0)
t.up()
t.goto(-200, 100)
t.down()
for _ in range(3):
koch_curve(t, 400, 3)
t.right(120)
turtle.done()Три стороны снежинки рисуются с глубиной рекурсии 3.
Снежинка Коха с фрактальной структурой.
Как нарисовать закрашенные фигуры с градиентом?
Меняя цвет заливки по шагам, можно получить эффект градиента.
import turtle
t = turtle.Turtle()
t.speed("fastest")
turtle.colormode(255)
for i in range(36):
t.color(0, 0, i * 7)
t.begin_fill()
for _ in range(4):
t.forward(100)
t.right(90)
t.end_fill()
t.right(10)
turtle.done()Каждый квадрат повёрнут на 10 градусов и имеет меняющийся оттенок синего.
Серия закрашенных квадратов с градиентом от чёрного до синего.
Как нарисовать анимированную фигуру?
Метод ontimer позволяет создавать анимацию без остановки окна.
import turtle
t = turtle.Turtle()
t.speed(0)
def animate():
t.clear()
t.circle(50)
t.right(5)
turtle.ontimer(animate, 50)
animate()
turtle.done()Круг будет вращаться вокруг своего центра с обновлением каждые 50 миллисекунд.
Окно с вращающимся кругом.
Как нарисовать многоугольник с произвольным числом сторон?
Обобщённая функция принимает количество сторон и длину стороны.
import turtle
def polygon(t, sides, length):
angle = 360 / sides
for _ in range(sides):
t.forward(length)
t.right(angle)
t = turtle.Turtle()
polygon(t, 8, 70) # Восьмиугольник
turtle.done()Можно строить любой правильный многоугольник, меняя параметр sides.
Правильный восьмиугольник.