К карте
ОСТРОВ ОБСЕРВАТОРИИ · PYTHON · КВЕСТ 2
Периметр форта
0
Прогресс0 / 6
СДЕЛАЙ ПЕРВУЮ КОМАНДУ

Нажми — и увидишь, что делает команда

Жми кнопки по очереди — это три настоящие команды.
ПЕРЕД СТАРТОМ
⏱ Сколько займёт
40–60 минут, 6 шагов. Каждый шаг заканчивается результатом на экране.
💻 Что нужно
Телефон или компьютер. Редактор открывается прямо в браузере, ставить ничего не надо.
⏸ Если прервёшься
Ничего не потеряется: прогресс сохраняется на этом устройстве. Вернёшься — продолжишь с того же шага.
🎓 Чему научишься
цикл for · повторение · range()
ШАГ 1 ИЗ 6 · ОСТРОВ ОБСЕРВАТОРИИ · КВЕСТ 2

Лень — двигатель программиста

ЧТО ПРОИСХОДИТ
ЭПИЗОД 2Обсерватория

Сова разворачивает план старого форта: четыре стены, четыре угла, всё одинаковое.

«Ты можешь написать четыре одинаковых приказа. Так делают те, кто не уважает своё время», — он зачёркивает три строчки из четырёх.

Осталась одна и слово повтори. Так короче, и ошибиться негде.

Сова · звездочёт Обсерватории
ЧТО ПОЛУЧИТСЯ
ЗАПИСЬ ИСПОЛНЕНИЯ КОДА
Слева — та самая программа, справа — что она рисует. Четыре одинаковых приказа заменил один цикл.

Это анимация исполнения кода: команды идут строка за строкой, и линия появляется в том же порядке. Тот же код ты напишешь сам — только чтобы второй квадрат начался в другом месте, добавь перед ним penup() и goto(x, y).

КАПИТАН КВЕСТО
Читать текстом
Чертёжник, помнишь свой квадрат? Восемь строк, и четыре из них — просто копии. А теперь представь стоугольник: двести строк одного и того же. Никто в здравом уме такое писать не станет. Поэтому программисты придумали цикл — способ сказать «повтори это столько-то раз». И знаешь, что забавно? Хорошие программисты ленивы в правильном смысле: они не любят делать одно и то же дважды и всегда ищут, как записать короче.

Сегодня твои восемь строк превратятся в четыре — и станут работать для любой фигуры.

kvadrat.py — с циклом
1  from turtle import *
2  
3  for i in range(4):     # повторить 4 раза
4      forward(100)  # отступ! эта строка ВНУТРИ цикла
5      right(90)     # и эта тоже внутри
6  
7  done()               # без отступа = снаружи, выполнится один раз

Читается почти по-русски: for i in range(4) — «для четырёх повторов». Двоеточие в конце говорит «дальше идёт то, что повторяем». А отступ в четыре пробела показывает, какие именно строки внутри.

ШАГ 2 ИЗ 6 · ПОСМОТРИ САМ

Сколько строк экономит цикл

БЕЗ ЦИКЛА — КОПИПАСТА
С ЦИКЛОМ — ВСЕГДА 4 СТРОКИ
4

Тяни ползунок вправо. Слева код растёт и растёт, справа остаётся четырёх строк. Поставь 24 стороны — и увидишь, ради чего вообще придумали циклы.

Зачем короче — не только ради лени · Меньше строк — меньше мест, где можно ошибиться · Поменять фигуру = поменять одно число, а не двадцать · Чужой код становится понятным с одного взгляда Правило: заметил три одинаковые строки — просится цикл

Это правило работает всю жизнь программиста. Три повтора — сигнал. Не обязательно бросаться переписывать, но заметить стоит: почти всегда это место, где код можно сделать вдвое понятнее.

НАШ РЕДАКТОР «PYTHON В КАРМАНЕ» — КУДА НАЖИМАТЬ
ТВОЙ ЭКРАН «PYTHON В КАРМАНЕ» — КУДА НАЖИМАТЬнажми на кружок — покажу место
Окно редактора
  • 1Строки 8–10: цикл целикомfor i in range(4): читается «повторить четыре раза», и двоеточие в конце обязательно. Две строки под ним сдвинуты вправо на четыре пробела — этот сдвиг и говорит «повторяем именно нас». Уберёшь отступ — команда выполнится один раз, и вместо квадрата останется один отрезок.
  • 2Палитра «Циклы и если»Нажми на неё — ряды кнопок внизу сменятся, и первой будет for i in range():. Она вставит заготовку цикла сразу с двоеточием, чтобы ты его не потерял. Там же живут if, else и знак ==.
  • 3Кнопка →| отступТе самые четыре пробела одним нажатием. Отступ в Python — не украшение: он решает, что внутри цикла, а что уже снаружи. Соседняя кнопка «↵ строка» переводит на новую строку, а ⌫ стирает лишнее.
  • 4Жёлтая кнопка ▶ ЗапуститьЧетыре строки вместо восьми — а фигура та же. Теперь поставь в range() число 6, потом 12 и запускай снова: код не вырастет ни на строчку, а фигура каждый раз новая.
  • 5Квадрат — работа двух строкВсе четыре стороны нарисованы одной парой команд, которая повторилась четыре раза. Ради этого циклы и придумали. Запомни правило: заметил три одинаковые строки — просится цикл.
Отмечено:0 из 5

Это наш редактор «Python в кармане» со страницы /kod/ — открой её в соседней вкладке. На кадре он показан дважды: слева вкладка «Код», где ты пишешь, справа вкладка «Результат», куда программа переключится сама после запуска. Нажимай на кружки по порядку: метка покажет место, строка ниже объяснит, зачем оно.

ШАГ 3 ИЗ 6 · ГЛАВНОЕ ПРАВИЛО PYTHON

Отступ решает всё

Две почти одинаковые программы
1  # ПРОГРАММА А — поворот ВНУТРИ цикла
2  for i in range(4):
3      forward(100)
4      right(90)       ← отступ есть: строка ВНУТРИ
5  # → получится КВАДРАТ
6  
7  # ПРОГРАММА Б — поворот СНАРУЖИ цикла
8  for i in range(4):
9      forward(100)
10 right(90)           ← отступа нет: строка СНАРУЖИ
11 # → получится ОДНА ДЛИННАЯ ЛИНИЯ

Разница между программами А и Б — четыре пробела в одной строке. В А поворот внутри цикла: вперёд-поворот, вперёд-поворот — выходит квадрат. В Б он снаружи: черепашка четыре раза идёт вперёд по прямой, а поворачивается один раз в самом конце. Ошибок Python не выдаст ни там, ни там.

Настоящая запись — в нашем редакторе «Python в кармане», том самом, что открывается по кнопке ниже. Тот же код, тот же результат — и ставить ничего не надо

Цикл в работе. Всего шесть строк, а черепашка обходит шестиугольник — по одной стороне на каждый круг цикла. Обрати внимание на отступ в строках 7–8: именно он говорит, что эти команды внутри.

Отступ — это скобки, которых не видно В ДРУГИХ ЯЗЫКАХ for (i=0; i<4; i++) { forward(100); right(90); } границы видны — фигурные скобки В PYTHON for i in range(4): forward(100) right(90) границу задаёт отступ Поэтому в Python код всегда аккуратный — язык не разрешает иначе

В большинстве языков блок кода огораживают фигурными скобками. Python решил иначе: границу показывает отступ. Сначала непривычно, зато потом любой чужой код читается легко — неаккуратного просто не бывает.

Проверка · Что делает range(6)?

Рисует линию длиной 6
Задаёт шесть повторов цикла
Поворачивает на 6 градусов
range — это «диапазон». range(6) значит «шесть раз по кругу».

Строка написана БЕЗ отступа после for. Когда она выполнится?

Столько же раз, сколько цикл
Не выполнится совсем
Один раз, после того как цикл закончится
Без отступа строка находится СНАРУЖИ цикла — значит, дожидается его конца.

Оба верных ответа — +10 дублонов.

ЭКСКУРС
КАК ДЕЛАЮТ ПРОФЕССИОНАЛЫ

Программист ленив — и это правило

Скопировать строку четыре раза может каждый. Профессионал ищет, что здесь повторяется, и пишет это один раз.

Причина не в лени: копий всегда четыре, а исправлений — четыре. Забыл одну — получил ошибку, которую ищут полдня.

У этого правила даже есть имя: DRY — «не повторяй себя». Его пишут на стенах в настоящих студиях.

ШАГ 4 ИЗ 6 · ТРЕНАЖЁР

Вместо квадрата — линия

kvadrat.py — рисует не то
1from turtle import *
2
3for i in range(4):
4 forward(100)
5right(90)
6done()
ЧТО НАРИСОВАЛА ЧЕРЕПАШКА
Одна длинная прямая линия вместо квадрата. Ошибок нет, программа отработала и закрылась спокойно.

Программа работает, ошибок нет — а рисунок неправильный. Это самая частая беда новичка в Python. Найди строку, которая стоит не на своём месте.

Как не воевать с отступами · Всегда 4 пробела — так принято у всех программистов мира · Клавиша Tab обычно ставит их сама · Не мешай Tab и пробелы в одном файле — Python рассердится · IndentationError = «проверь отступы в этой строке» Смотри на код как на лесенку: что глубже — то внутри

Полезная привычка: читая чужой код, смотри сначала на лесенку отступов, а уже потом на слова. Она показывает структуру программы быстрее, чем чтение построчно.

ШАГ 5 ИЗ 6 · ФОКУС С ПЕРЕМЕННОЙ

Что такое i внутри цикла

i считает повторы — и его можно использовать
1  for i in range(5):
2      print(i)      # напечатает 0, 1, 2, 3, 4
3  
4  # а теперь спираль:
5  for i in range(40):
6      forward(i * 4)   # каждый шаг ДЛИННЕЕ предыдущего
7      right(90)

Команда print пишет текст в консоль — узкую полосу под кодом (в IDLE это отдельное окно Shell). Именно там появятся числа из строки 2. Оказывается, i — не просто буква. Это счётчик: на первом круге он равен 0, потом 1, 2 и так далее. И его можно вставлять в команды! Строка forward(i * 4) делает каждый шаг длиннее — получается спираль.

Что происходит на каждом круге круг 1: i = 0 → forward(0) ничего не прошли круг 2: i = 1 → forward(4) короткий шажок круг 3: i = 2 → forward(8) шаг подлиннее круг 40: i = 39 → forward(156) длинный размах Шаги растут — линия закручивается наружу. Вот и вся спираль.

Разбирать программу по кругам — лучший способ понять цикл. Возьми листок и выпиши, чему равно i и что делает черепашка на первых трёх кругах. Дальше станет очевидно.

Судовой журнал — отметь сделанное:
Нарисовал квадрат циклом из 4 строк
Поменял число в range — фигура изменилась
Нарисовал треугольник и шестиугольник
Специально убрал отступ и увидел, что вышло
Напечатал i через print и увидел 0, 1, 2…
Получил спираль через forward(i * 4)
Сохранил файл

Четвёртая галочка — сломай специально. Убери отступ, запусти, посмотри на прямую линию. Такие опыты запоминаются лучше любого объяснения, а разбирать чужие ошибки всегда весело.

ШАГ 6 ИЗ 6 · ФИНАЛ

Цветок из повторов

Цикл внутри цикла — и получается цветок
1  from turtle import *
2  speed(0)              # рисовать быстро
3  
4  for petal in range(12):   # 12 лепестков
5      for side in range(4):  # каждый — квадрат
6          forward(80)
7          right(90)
8      right(30)             # поворот к следующему лепестку
9  
10 done()

Смотри на лесенку: внешний цикл рисует 12 лепестков, внутренний — квадрат для каждого. Строка 8 с одним отступом — она в наружном цикле, поэтому срабатывает раз на лепесток. Такой рисунок вручную занял бы сотню строк.

Как сдать работу: в «Python в кармане» код сохраняется сам — закрыл страницу, вернулся, и он на месте. Кнопки «поделиться» там нет и ссылки на твою работу тоже: покажи экран взрослому или пришли скриншот — этого достаточно. Поле выше нужно, только если ты писал в другом редакторе, который выдаёт ссылку. Собери свой цветок и поиграй числами: 12 лепестков или 20, поворот 30° или 18°, квадраты или треугольники. Каждое сочетание даёт новый узор — тут можно залипнуть надолго.

КАПИТАН КВЕСТО
Читать текстом
Вот теперь ты пишешь как программист. Цикл — это не просто «повторить»: это способ сказать много, написав мало. И заметь, что ты уже понял вещь, которая многих мучает неделями — отступ в Python не для красоты, а для смысла. Дальше будет ещё интереснее: возьмём переменные, чтобы одно число управляло всей фигурой, а потом сделаем спирали и цветные узоры из созвездий.

Жми — Гильдия отметит второй остров Обсерватории.

Цикл освоен!

Второй артефакт: восемь строк превратились в четыре, а отступ перестал быть загадкой. Бейдж «ПОВТОРИТЕЛЬ» твой. Дальше — переменные: одно число управляет всей фигурой.

Что дальше. На потолке купола выложена роза ветров — шестнадцать лучей расходятся от центра.

🏅 Забрать диплом Следующий квест: Роза ветров Вернуться на карту экспедиции
🔒

Этот остров ещё закрыт

Сначала пройди предыдущий квест — хотя бы просмотри все шаги.

⚑ Экспедиционный режим