1. Знакомство с Черепашкой: основы синтаксиса и первые команды движения
Знакомство с Черепашкой: основы синтаксиса и первые команды движения
Представьте, что внутри вашего компьютера живет маленький, но очень исполнительный робот-художник. У него есть бесконечный запас чернил и холст, который никогда не заканчивается. Этот робот — Черепашка (Turtle), и он понимает только один язык — Python. Если вы скажете ему «иди вперед», он послушно прочертит линию. Если попросите «повернись», он изменит направление и будет готов рисовать дальше. Самое удивительное здесь то, что через управление этим простым существом мы учимся управлять самой логикой компьютера. Программирование — это не просто набор скучных команд, это искусство отдавать точные инструкции, которые превращают пустой экран в живой мир.
Как компьютер понимает наши команды
Прежде чем мы отдадим первую команду, нужно понять, как Python общается с внешним миром. Сам по себе язык Python — это мощный вычислительный мозг, но он не знает по умолчанию, как рисовать окна или передвигать курсоры. Для этого существуют «библиотеки» или «модули».
Представьте библиотеку как огромный шкаф с инструментами. В одном ящике лежат инструменты для работы с математикой, в другом — для создания интернет-сайтов, а в третьем — наш модуль turtle. Чтобы начать работу, мы должны «достать» этот ящик и поставить его на рабочий стол. В программировании это называется импортом.
Эта строчка — магическое заклинание. Она говорит интерпретатору Python: «Найди все знания о Черепашке и подготовь их к использованию». Без этой строки компьютер просто не поймет, что такое forward или left, и выдаст ошибку, сообщив, что имя не определено.
Создание холста и появление исполнителя
Когда мы импортировали модуль, нам нужно создать саму Черепашку. В Python это делается через создание объекта. Представьте, что turtle — это чертеж или инструкция по сборке робота, а когда мы пишем turtle.Turtle(), мы физически собираем этого робота и даем ему имя.
Здесь t — это имя нашего героя. Мы могли бы назвать его bob, robot или artist, но программисты часто используют короткие имена для удобства. Теперь, когда у нас есть переменная t, мы можем обращаться к ней и просить её что-то сделать.
Важно понимать структуру команды: t.forward(100).
t — это объект (кто выполняет действие).. (точка) — это связка, которая говорит «выполни следующее действие».forward — это метод или команда (что именно нужно сделать).(100) — это аргумент (насколько сильно или долго нужно выполнять действие).Если мы забудем скобки, Python воспримет это не как приказ к действию, а просто как упоминание команды, и ничего не произойдет. Скобки — это «кнопка запуска» действия.
Первые шаги по холсту: линейное движение
Черепашка всегда начинает свой путь в центре экрана, в точке с координатами . Она смотрит строго вправо (на восток). Это её исходное состояние. Чтобы она начала рисовать, нам нужно сдвинуть её с места.
Основная команда движения — forward(distance). В качестве аргумента distance мы передаем количество пикселей. Пиксель — это крошечная точка на экране вашего монитора. Если вы укажете 10, линия будет почти незаметной. Если 100 — Черепашка проползет заметное расстояние.
Но что если мы ошиблись и зашли слишком далеко? У Черепашки есть «задний ход» — команда backward(distance).
> Важный нюанс: команда backward(100) переместит Черепашку назад, но она все еще будет смотреть в ту же сторону, что и раньше. Она просто пятится, не разворачиваясь.
Давайте разберем, как работает логика последовательного выполнения. Python читает ваш код как книгу: сверху вниз, строчка за строчкой.
В этом примере Черепашка пройдет 50 шагов вперед, затем вернется на 100 шагов назад (оказавшись в 50 шагах позади старта) и снова пройдет 50 шагов вперед. В итоге она вернется в начальную точку. Это называется линейным алгоритмом — когда действия выполняются строго друг за другом.
Искусство поворотов: углы и градусы
Чтобы нарисовать что-то сложнее прямой линии, нам нужно научить Черепашку поворачивать. Для этого используются две команды: left(angle) и right(angle).
Здесь в игру вступает математика. Аргумент angle — это градусы. Если вы помните из школьного курса или из жизни, полный оборот вокруг своей оси — это .
Попробуем нарисовать простую «ступеньку»:
Заметьте, что после t.left(90) Черепашка смотрит вверх. Чтобы она снова пошла вправо, нам нужно компенсировать этот поворот командой t.right(90). Если мы этого не сделаем, следующая линия уйдет вертикально.
Частая ошибка новичков — путать поворот головы Черепашки и её движение. Команда t.left(90) не передвигает Черепашку ни на один миллиметр. Она просто заставляет её вращаться на месте. Чтобы увидеть результат поворота, после него обязательно должна идти команда движения.
Рисуем первую фигуру: Квадрат
Квадрат — это идеальный объект для тренировки. У него четыре равные стороны и четыре прямых угла. Чтобы нарисовать квадрат со стороной 100 пикселей, нам нужно повторить комбинацию «вперед и поворот» четыре раза.
Почему в конце мы снова пишем t.left(90)? Технически, квадрат уже нарисован и без этой команды. Однако в программировании считается «хорошим тоном» возвращать исполнителя в исходное состояние. Если Черепашка закончит рисовать квадрат и будет смотреть в ту же сторону, что и в начале, нам будет гораздо проще планировать следующие шаги.
Если мы захотим изменить размер квадрата, нам придется вручную менять каждое число 100 в коде. Это неудобно. В будущем мы узнаем, как использовать переменные и циклы, чтобы делать это одной строчкой, но сейчас важно прочувствовать каждый шаг Черепашки.
Управление пером: когда рисовать, а когда нет
Иногда нам нужно переместить Черепашку в другую часть экрана, не оставляя за собой след. Представьте, что Черепашка держит в лапках фломастер. Команда penup() (поднять перо) заставляет её поднять фломастер над бумагой. Теперь она может двигаться, но линий не будет. Команда pendown() (опустить перо) возвращает фломастер на бумагу.
Это открывает возможности для создания сложных композиций. Например, мы можем нарисовать два отдельных квадрата — «глаза» нашего будущего робота.
Обратите внимание на использование символа #. Это комментарий. Все, что написано после него, Python игнорирует. Это записки для нас самих или для других программистов, чтобы понимать, что происходит в коде. Писать комментарии — привычка профессионала.
Изменение внешнего вида: форма и скорость
По умолчанию Черепашка выглядит как маленькая черная стрелка. Но мы можем сделать её похожей на настоящую черепаху (или круг, или квадрат). Для этого есть команда shape().
Доступные формы: "arrow" (стрелка), "turtle" (черепаха), "circle" (круг), "square" (квадрат), "triangle" (треугольник) и "classic" (стандартный указатель).
Если Черепашка рисует слишком медленно или, наоборот, слишком быстро, мы можем отрегулировать её скорость командой speed(). Аргумент здесь — число от 0 до 10.
1 — самая медленная скорость.6 — нормальная скорость.10 — быстрая скорость.0 — мгновенная отрисовка (Черепашка просто «прыгает» в конечную точку, не показывая процесс движения).Сброс и очистка холста
В процессе экспериментов ваш холст может превратиться в хаос из линий. Чтобы навести порядок, есть три важные команды:
t.clear() — удаляет все нарисованные линии, но оставляет Черепашку там, где она стояла.t.reset() — полная очистка. Удаляет все рисунки и возвращает Черепашку в центр экрана в исходное положение.t.home() — возвращает Черепашку в центр , но не стирает то, что уже нарисовано. Если перо опущено, Черепашка прочертит линию от текущего места до центра.Геометрические нюансы: треугольники и круги
Рисование квадрата интуитивно понятно, но что если мы захотим нарисовать равносторонний треугольник? У него все углы внутри равны . Но если вы прикажете Черепашке повернуться на t.left(60), вы получите не треугольник, а шестиугольник.
Почему так происходит? Черепашка поворачивается не на внутренний угол фигуры, а на внешний. Представьте, что вы идете прямо. Чтобы повернуть так, чтобы внутри остался угол , вам нужно развернуться гораздо сильнее. Существует простое правило: сумма всех внешних поворотов для любой закрытой фигуры (без самопересечений) всегда равна .
Для треугольника: . Значит, поворачивать нужно на .
А как насчет круга? В модуле turtle есть специальная команда circle(radius).
Эта команда заставляет Черепашку описать круг с радиусом 50 пикселей. Черепашка начнет движение из текущей точки, проедет по дуге и вернется в ту же точку. Это гораздо проще, чем высчитывать сотни мелких поворотов вручную.
Ошибки — это часть пути
Когда вы начнете писать свой код в онлайн-среде, вы обязательно столкнетесь с ошибками. Это нормально! Даже профессиональные программисты ошибаются каждый день. Python — очень строгий учитель, он не прощает опечаток.
T.forward вместо t.forward). В Python большая и маленькая буквы — это разные символы.t.jump(100) вместо t.forward(100).Если программа не запускается, внимательно посмотрите на сообщение об ошибке. Обычно Python указывает на строку, где что-то пошло не так.
Практические советы по работе в онлайн-среде
Работа в https://stepindev.com/ru/py-playground имеет свои особенности. Это удобный «песочница», где результат виден сразу. Однако помните:
import turtle.turtle.done(), чтобы окно не закрывалось мгновенно. В онлайн-средах это обычно происходит автоматически, но знать это полезно.t.penup() и t.home(), чтобы вернуть её.За пределами простых линий
Мы научились двигаться вперед и назад, поворачивать, поднимать и опускать перо. Кажется, что это немного, но на самом деле это фундамент всей компьютерной графики. Любое сложное изображение в видеоиграх — это просто огромная последовательность очень маленьких отрезков и точек.
Попробуйте поэкспериментировать. Что будет, если чередовать повороты на разные углы? Что если нарисовать круг, потом сместиться на 10 пикселей и нарисовать круг побольше?
> «Программирование — это не то, что вы знаете, это то, что вы можете выяснить». > > Крис Пайн, автор книг по программированию)
Ваша задача сейчас — почувствовать себя «дирижером» этой маленькой Черепашки. Она не умеет думать, она умеет только исполнять. И если рисунок получается не таким, как вы задумали, это не Черепашка «глупая», это инструкция была неточной. Умение видеть мир как последовательность точных шагов — это и есть мышление программиста.
В следующих главах мы научимся заставлять Черепашку делать повторяющиеся действия автоматически, использовать тысячи цветов и даже реагировать на ваши нажатия клавиш. Но всё это будет опираться на те самые forward и left, которые вы изучили сегодня.