Полное руководство по работе с библиотекой turtle в Python
Основные возможности turtle
Библиотека turtle позволяет создавать графические изображения с помощью черепашки, которая перемещается по холсту, оставляя след. Основная цель модуля - обучение программированию через визуализацию. Для начала работы необходимо импортировать модуль и создать окно.
import turtle
window = turtle.Screen()
window.title("Пример turtle")
t = turtle.Turtle()
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
window.mainloop()Python 3d models (3d модели в python)
В этом примере черепашка рисует квадрат со стороной 100 пикселей. Команда forward(100) перемещает черепашку вперёд, left(90) поворачивает её на 90 градусов влево. Окно остаётся открытым благодаря window.mainloop().
Как рисовать цветные линии?
Метод color() задаёт цвет пера. Можно указывать название цвета или RGB-кортеж.
t.color("blue")
t.forward(50)
t.color("red")
t.forward(50)библиотека graphics python (библиотека graphics в python)
Проблема: Ошибка при указании нестандартного цвета. Решение: использовать режим RGB turtle.colormode(255) и передавать кортеж (R, G, B).
Как нарисовать круг или дугу?
Метод circle(radius) рисует окружность заданного радиуса. Для дуги передаётся дополнительный аргумент - угол в градусах.
t.circle(50) # полная окружность радиусом 50
t.circle(50, 180) # полуокружность
какие цвета в python (цвета в python)
Ошибка: Черепашка рисует не в том направлении. Уточнение: по умолчанию окружность рисуется против часовой стрелки для положительного радиуса. Отрицательный радиус даёт поворот по часовой.
Как использовать циклы для построения многоугольников?
Циклы упрощают повторяющиеся действия. Для правильного n-угольника угол поворота равен 360/n.
n = 6
for _ in range(n):
t.forward(100)
t.left(360 / n)Turtle program python (turtle графика в python)
Результат - правильный шестиугольник.
Как закрашивать фигуры?
Используются begin_fill() и end_fill() перед и после контура фигуры. Цвет заливки задаётся fillcolor().
t.fillcolor("green")
t.begin_fill()
for _ in range(4):
t.forward(100)
t.left(90)
t.end_fill()библиотека рисования python (библиотеки для рисования в python)
Как управлять черепашкой с клавиатуры?
Функция onkeypress() привязывает клавишу к функции. Необходимо активировать прослушивание listen().
def move_forward():
t.forward(10)
window.listen()
window.onkeypress(move_forward, "Up")Qr кода python (qr-код на python)
Как анимировать движение?
Метод tracer(0) отключает автоматическое обновление экрана. После всех изменений вызывается update().
turtle.tracer(0)
for i in range(100):
t.forward(1)
t.left(1)
turtle.update()Это создаёт плавную анимацию спирали.
Как сохранить рисунок в файл?
Модуль turtle не имеет встроенной функции сохранения в PNG. Однако можно экспортировать в PostScript с помощью getcanvas().postscript().
canvas = turtle.getscreen().getcanvas()
canvas.postscript(file="my_drawing.eps")Для преобразования в PNG требуется внешняя утилита (например, Ghostscript).
Расширенные примеры
Как нарисовать фрактальное дерево?
Рекурсивный подход: каждый сегмент делится на две ветви меньшего размера.
import turtle
def tree(branch_len, t):
if branch_len < 5:
return
t.forward(branch_len)
t.left(30)
tree(branch_len - 15, t)
t.right(60)
tree(branch_len - 15, t)
t.left(30)
t.backward(branch_len)
t = turtle.Turtle()
t.left(90)
t.up()
t.backward(100)
t.down()
tree(70, t)
window = turtle.Screen()
window.mainloop()Результат: симметричное дерево с уменьшающимися ветвями.
Как создать снежинку Коха?
Кривая Коха строится рекурсивно: отрезок заменяется четырьмя отрезками с углами 60 градусов.
def koch_curve(t, length, depth):
if depth == 0:
t.forward(length)
else:
koch_curve(t, length/3, depth-1)
t.left(60)
koch_curve(t, length/3, depth-1)
t.right(120)
koch_curve(t, length/3, depth-1)
t.left(60)
koch_curve(t, length/3, depth-1)
t = turtle.Turtle()
t.speed(0)
for i in range(3):
koch_curve(t, 300, 3)
t.right(120)После трёх сторон получается снежинка.
Как реализовать игру «Змейка» на turtle?
Упрощённая версия: змейка движется непрерывно, игрок управляет направлением стрелками. Каждый сегмент - черепашка, которая следует за предыдущей.
import turtle
import time
# Настройка экрана и начальной змейки
segments = []
head = turtle.Turtle()
head.shape("square")
head.color("green")
head.penup()
head.goto(0, 0)
head.direction = "stop"
# Функции изменения направления
def go_up():
if head.direction != "down":
head.direction = "up"
def go_down():
if head.direction != "up":
head.direction = "down"
# ... аналогично для left и right
# Основной цикл
while True:
if head.direction == "up":
head.sety(head.ycor() + 20)
# ... обработка других направлений
# Добавление сегмента при съедании еды (упрощённо)
new_segment = turtle.Turtle()
new_segment.shape("square")
new_segment.color("grey")
new_segment.penup()
new_segment.goto(head.pos())
segments.append(new_segment)
time.sleep(0.1)Этот пример требует доработки для полноценной игры, но демонстрирует идею.
Как рисовать спирали с изменяющимся цветом?
Комбинируя цикл и HSV-цвета через turtle.colormode(255) и hsv_to_rgb из модуля colorsys.
import turtle
import colorsys
turtle.colormode(255)
t = turtle.Turtle()
t.speed(0)
for i in range(200):
hue = i / 200.0
r, g, b = colorsys.hsv_to_rgb(hue, 1.0, 1.0)
t.color(int(r*255), int(g*255), int(b*255))
t.forward(i)
t.right(59)
turtle.done()Результат - радужная спираль.
Как управлять несколькими черепашками одновременно?
Создание нескольких экземпляров Turtle и использование разных цветов.
t1 = turtle.Turtle()
t2 = turtle.Turtle()
t1.color("red")
t2.color("blue")
for _ in range(36):
t1.circle(50)
t1.left(10)
t2.circle(30)
t2.right(10)Черепашки рисуют независимые фигуры.
Как рисовать с помощью событий мыши?
Метод onscreenclick() позволяет реагировать на клики мышью и рисовать точки или линии.
def draw_dot(x, y):
t.goto(x, y)
t.dot(5, "red")
window.onscreenclick(draw_dot)
window.mainloop()При каждом клике черепашка перемещается и ставит красную точку.