Урок 1.Что такое черепашка
Черепашка (turtle) — это исполнитель, который действует в окне Python. Когда ты даёшь ей команды — она идёт, поворачивается, рисует. Всё, что она прошла, остаётся линией на экране. Получается рисунок, который наглядно показывает, что сделано, а что нет. Это отличный способ увидеть результат своей программы сразу. Не надо думать про числа и переменные — просто говоришь «иди вперёд», и она идёт.
Как её вызвать
Черепашка живёт в отдельном модуле — наборе готовых команд. Чтобы её использовать, нужно сначала импортировать модуль:
import turtle
После этого появляется целый набор команд. Но просто import turtle — это как принести коробку с черепашкой в комнату, но не открыть её. Чтобы начать рисовать, нужно создать саму черепашку:
t = turtle.Turtle()
Здесь t — это имя нашей черепашки. Можно назвать как угодно: bob, turtle1, artist — но t короче и удобнее. В большинстве программ мы будем использовать это краткое t.
Первая линия
Простейшая, но совершенно законченная программа выглядит так:
import turtle
t = turtle.Turtle()
t.forward(100)
turtle.done()
Что происходит:
- Подключаем модуль
turtle. - Создаём черепашку и называем её
t. - Говорим: «иди вперёд на 100 шагов».
turtle.done()— «не закрывай окно, пока я сам его не закрою».
На экране появится окно, а в нём — черепашка (маленькая стрелочка), которая прошла вперёд и оставила за собой линию.
turtle.done() окно закроется мгновенно, и ты ничего не увидишь. Поэтому в конце каждой программы с черепашкой добавляй эту команду.
Движение: forward и backward
t.forward(100)— идти вперёд на 100 шагов.t.backward(50)— идти назад на 50 шагов.
Число в скобках — это сколько шагов пройти. Можно любое: 10, 200, 500.
import turtle
t = turtle.Turtle()
t.forward(100)
t.backward(50)
t.forward(30)
turtle.done()
Каждая команда — новый отрезок линии.
Повороты: right и left
Черепашка умеет поворачиваться не сходя с места:
t.right(90)— повернуться направо на 90 градусов.t.left(45)— повернуться налево на 45 градусов.
Угол измеряется в градусах: 90 — прямой угол (четверть круга), 180 — разворот, 360 — полный оборот.
import turtle
t = turtle.Turtle()
t.forward(100)
t.right(90)
t.forward(100)
turtle.done()
Здесь черепашка прошла вперёд, повернула направо и прошла ещё столько же. Получился прямой угол.
Урок 2.Квадрат и цикл. Перо. Скорость
Квадрат
Соединим движение и повороты — нарисуем квадрат:
import turtle
t = turtle.Turtle()
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
turtle.done()
Четыре стороны, четыре поворота. Работает, но код длинный и повторяется. Обрати внимание: программа выполняет 4 одинаковых действия. Поэтому целесообразно использовать цикл, чтобы свернуть программу:
import turtle
t = turtle.Turtle()
# рисуем квадрат со стороной 60
for _ in range(4):
t.forward(60)
t.right(90)
turtle.done()
Что такое for _ in range(4) — мы разберём подробно в следующих уроках. Пока просто запомни: это «повтори 4 раза то, что внутри». Символ _ — это просто имя переменной, которое нам не нужно.
Перо: поднять и опустить
Черепашка всегда что-то рисует, когда идёт. Но иногда нужно перейти на другое место, не оставляя линии — например, чтобы нарисовать две отдельные фигуры.
Для этого есть две команды:
t.penup()— поднять перо. Черепашка идёт, но не рисует.t.pendown()— опустить перо. Черепашка снова рисует.
По умолчанию перо опущено. То есть черепашка начинает рисовать сразу, как только ты её создал.
import turtle
t = turtle.Turtle()
t.forward(100) # линия
t.penup()
t.forward(50) # черепашка переместилась без линии
t.pendown()
t.forward(100) # снова линия
turtle.done()
Скорость
По умолчанию черепашка двигается небыстро — это сделано, чтобы было видно, как она идёт. Если хочется быстрее:
t.speed(0) # максимальная скорость
t.speed(5) # средняя
t.speed(1) # медленная
Числа от 0 до 10: 0 — мгновенно, 10 — быстро, 1 — очень медленно. Для длинных рисунков ставь speed(0), иначе можно заскучать.
Полная программа
Соберём всё вместе — нарисуем несколько многоугольников в ряд:
import turtle
t = turtle.Turtle()
t.speed(3)
t.penup()
t.forward(250)
t.left(180)
t.pendown()
for i in range(3, 7):
# рисуем многоугольник с i сторонами
for _ in range(i):
t.forward(60)
t.right(360 / i)
t.penup()
t.forward(120)
t.pendown()
turtle.done()
Внешний цикл идёт по числу сторон: 3, 4, 5, 6. Внутренний — рисует сам многоугольник. Угол поворота считается по формуле 360 / i.
Задание 1. Измени программу так, чтобы она рисовала не справа налево, а слева направо.
Задание 2. Расположи треугольник, квадрат, пяти- и шестиугольник по углам окна вывода.
Задание 3. Поэкспериментируй: поставь
t.speed(0) и нарисуй квадрат со стороной 200. Потом поставь t.speed(1) и нарисуй такой же. Почувствуй разницу.
Урок 3.Координаты и черепашка
Как объяснить, где что находится?
Представь, что ты играешь в морской бой. Ты говоришь: «Б5». И соперник сразу понимает, куда стрелять. Почему? Потому что Б — это буква столбца, а 5 — номер строки. Два знака — и место найдено точно. Или представь, что ты в кинотеатре. «Ряд 7, место 12». Опять два числа — и ты точно знаешь, где сидеть.
Вот это и есть координаты — способ точно указать место с помощью чисел. Не «где-то там справа», а «вот здесь, конкретно».
Две оси
Чтобы задать координаты, нужно две линии — оси. Одна идёт слева направо (горизонтальная), вторая — снизу вверх (вертикальная). Они пересекаются в одной точке — начале координат.
Горизонтальная ось называется X (икс). Вертикальная — Y (игрек).
Запомнить легко: X — «вдоль земли», Y — «вверх-вниз».
Координаты пишут в скобках, через запятую: сначала X, потом Y.
(X, Y)
Первое число — насколько далеко вправо или влево. Второе — насколько высоко или низко.
Четыре направления
Центр — это точка (0, 0).
- Вправо — X положительный:
(5, 0). - Влево — X отрицательный:
(-5, 0). - Вверх — Y положительный:
(0, 5). - Вниз — Y отрицательный:
(0, -5).
Если оба числа не ноль, точка уходит в сторону:
(3, 2)— 3 вправо, 2 вверх.(-4, 1)— 4 влево, 1 вверх.(2, -5)— 2 вправо, 5 вниз.(-3, -3)— 3 влево, 3 вниз.
Первое число — по горизонтали, второе — по вертикали. Всегда в этом порядке.
Теперь черепашка
Помнишь черепашку? Она живёт в окне и рисует линии. Оказывается, у этого окна тоже есть координаты — точно такие же, как мы только что разобрали.
Центр окна — это (0, 0). Ось X идёт вправо, ось Y — вверх. Всё как на листе бумаги.
И черепашка знает, где она находится. Когда ты её создаёшь, она стоит ровно в центре — в точке (0, 0) — и смотрит вправо.
Прыжок в точку: goto
До сих пор мы двигали черепашку командами «вперёд» и «повернись». Но теперь, когда мы знаем координаты, можно сказать ей: «прыгни вот сюда».
Для этого есть команда goto(x, y):
import turtle
t = turtle.Turtle()
t.goto(100, 100)
turtle.done()
Черепашка пройдёт из текущего места в точку (100, 100) и нарисует линию. Если перо поднято — просто переместится, без линии.
import turtle
t = turtle.Turtle()
t.penup()
t.goto(-100, 50)
t.pendown()
t.forward(100)
turtle.done()
Так можно расставлять черепашку в нужные места, не думая о поворотах.
Где сейчас черепашка?
Черепашка умеет отвечать на вопрос «ты где?». Для этого есть две команды:
print(t.xcor()) # координата X
print(t.ycor()) # координата Y
import turtle
t = turtle.Turtle()
print("Старт:", t.xcor(), t.ycor())
t.goto(50, 30)
print("После goto:", t.xcor(), t.ycor())
turtle.done()
Рисуем по координатам
Теперь можно нарисовать фигуру, не думая о поворотах, — просто перечисляя точки:
import turtle
t = turtle.Turtle()
t.goto(100, 0)
t.goto(100, 100)
t.goto(0, 100)
t.goto(0, 0)
turtle.done()
Черепашка пройдёт по углам квадрата и вернётся в центр. Ни одного поворота — только точки.
Соединяем со старым
goto отлично работает вместе с penup() и pendown():
import turtle
t = turtle.Turtle()
t.speed(0)
# квадрат
t.goto(50, 50)
t.goto(100, 50)
t.goto(100, 100)
t.goto(50, 100)
t.goto(50, 50)
# перепрыгнули в другое место
t.penup()
t.goto(-100, -50)
t.pendown()
# ещё квадрат
t.goto(-50, -50)
t.goto(-50, 0)
t.goto(-100, 0)
t.goto(-100, -50)
turtle.done()
Два квадрата в разных местах — и ни одного поворота.
Одна тонкость
Когда черепашка идёт через goto, она не поворачивается в сторону движения. Она просто «скользит» в точку, оставаясь смотреть туда же, куда смотрела. Иногда это выглядит забавно — как будто черепашка едет боком.
Если хочется, чтобы она именно повернулась и пошла, — это уже другой подход, через forward и right. Но для рисования фигур по точкам goto удобнее.
Задание 1. Нарисуй с помощью
goto прямоугольник с углами в точках (0, 0), (150, 0), (150, 80), (0, 80).
Задание 2. Нарисуй треугольник с углами
(-50, -50), (50, -50), (0, 50).
Задание 3. Нарисуй две отдельные фигуры: квадрат в левой части окна и треугольник в правой. Используй
penup() и goto(), чтобы перейти между ними.
Задание 4. Нарисуй домик: квадрат-основание и треугольник-крыша сверху.
Задание 5. Проверь, где оказалась черепашка после задания 1. Выведи её координаты через
t.xcor() и t.ycor().
Урок 4.Угол поворота
Откуда отсчитывается угол?
Мы уже знаем, что у окна черепашки есть оси X и Y. Так вот, угол поворота отсчитывается от оси X, то есть от направления вправо. И не по часовой стрелке, а против часовой.
Запомни главное:
- 0° — черепашка смотрит вправо (на восток).
- 90° — вверх (на север).
- 180° — влево (на запад).
- 270° — вниз (на юг).
Это как компас, только 0° — не север, а восток. Непривычно, но так устроена черепашка.
Как узнать, куда смотрит черепашка?
Есть команда heading() — она возвращает текущий угол:
import turtle
t = turtle.Turtle()
print("Старт:", t.heading())
t.right(90)
print("После right(90):", t.heading())
t.left(45)
print("После left(45):", t.heading())
turtle.done()
Обрати внимание: right(90) уменьшает угол (0° → 270°), потому что поворот по часовой стрелке. А left(90) — увеличивает (0° → 90°).
Как установить угол?
Вместо того чтобы поворачиваться на относительный угол, можно сказать черепашке: «смотри ровно туда». Для этого есть команда setheading() (или коротко seth()):
import turtle
t = turtle.Turtle()
t.speed(0)
for angle in [0, 90, 180, 270]:
t.setheading(angle)
t.forward(80)
t.backward(80)
turtle.done()
Это абсолютный угол. Не «повернись на 90° от текущего», а «встань ровно на 90°».
Четыре главных направления
Вот таблица, которая всегда под рукой:
t.setheading(0) # вправо →
t.setheading(90) # вверх ↑
t.setheading(180) # влево ←
t.setheading(270) # вниз ↓
Можно использовать и t.setheading(-90) — это то же самое, что 270°. Минус означает «по часовой стрелке от нуля».
Произвольные углы
Можно ставить любой угол, не только 0, 90, 180, 270:
import turtle
t = turtle.Turtle()
t.speed(0)
for angle in [0, 45, 90, 135, 180, 225, 270, 315]:
t.setheading(angle)
t.forward(100)
t.backward(100)
turtle.done()
Восемь лучей — во все стороны, через каждые 45°. Обрати внимание: backward возвращает черепашку в центр, не меняя угол.
Связь с right() и left()
Важно понять разницу:
right(90)— «повернись на 90° по часовой стрелке от того, где стоишь». Угол меняется относительно.setheading(90)— «встань на угол 90° абсолютно». Неважно, где ты был до этого.
t.setheading(0) # смотрим вправо
t.right(90) # теперь смотрим вниз (270°)
t.setheading(90) # а теперь смотрим вверх (90°)
setheading всегда перезаписывает угол, а right и left — прибавляют или отнимают.
Поворот к точке: towards()
Если черепашка стоит в одном месте, а тебе нужно, чтобы она посмотрела на другую точку, есть команда towards(x, y). Она возвращает угол, под которым находится эта точка:
t.setheading(t.towards(100, 100))
Теперь черепашка смотрит точно на точку (100, 100).
Пример: стрелка
import turtle
t = turtle.Turtle()
t.speed(3)
# рисуем стрелку, которая смотрит вверх
t.setheading(90) # смотрим вверх
t.forward(100) # линия вверх
# теперь рисуем наконечник
t.setheading(-135) # влево-вниз
t.forward(30)
t.penup()
t.goto(0, 100) # возвращаемся к кончику
t.pendown()
t.setheading(-45) # вправо-вниз
t.forward(30)
turtle.done()
Одна тонкость
Если угол больше 360° — ничего страшного. setheading(450) — это то же самое, что setheading(90), потому что 450 − 360 = 90. Черепашка просто сделает полный оборот и встанет на 90°.
И ещё: heading() возвращает угол всегда в диапазоне от 0 до 360. Даже если ты повернул на -90°, она покажет 270°.
Задание 1. Поставь черепашку в центр. Установи угол 90° и пройди 100 шагов. Потом установи 180° и пройди 100 шагов. Потом 270° и 0°. Что получилось?
Задание 2. Напиши программу, которая выводит угол черепашки после каждого поворота. Поверни её на 45° влево, выведи угол через
heading(), поверни ещё на 45° влево, снова выведи. И так далее, пока не сделаешь полный круг.
Задание 3. Нарисуй простую снежинку: шесть лучей через каждые 60°. Подсказка: используй
setheading(0), setheading(60), setheading(120) и так далее.
Задание 4. Нарисуй стрелку, которая смотрит влево. Используй
setheading(180).
Задание 5. Поставь черепашку в точку
(50, 50) через goto. Затем установи угол так, чтобы она смотрела на центр (0, 0). Подсказка: используй t.setheading(t.towards(0, 0)).