К карте
ОСТРОВ ОБСЕРВАТОРИИ · PYTHON · КВЕСТ 4
Спираль водоворота
0
Прогресс0 / 6
СДЕЛАЙ ПЕРВУЮ КОМАНДУ

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

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

Шаг, который растёт

ЧТО ПРОИСХОДИТ
ЭПИЗОД 4Северный водоворот

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

«Море считает лучше нас, — Сова прищуривается. — Один и тот же поворот, но шаг всё длиннее».

Повтори поворот и каждый раз чуть увеличивай шаг — получишь спираль. Точно такую же.

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

Это анимация исполнения кода: команды идут строка за строкой, и виток за витком линия расходится наружу. Ты напишешь спираль тем же приёмом «шаг растёт», только запишешь его короче — через forward(i * 1.5).

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

Сегодня мы возьмём счётчик цикла и превратим его в художника.

spiral.py — вся спираль в одной строке
1  from turtle import *
2  speed(0)
3  
4  for i in range(120):
5      forward(i * 1.5)   # ДЛИНА ЗАВИСИТ ОТ НОМЕРА КРУГА
6      right(91)       # не 90, а 91 — в этом весь фокус
7  
8  done()

Всё волшебство в строке 5: forward(i * 1.5). Помнишь, что i считает круги — 0, 1, 2, 3? Значит длина шага тоже растёт: 0, 1.5, 3, 4.5... Черепашка расходится наружу по кругу.

Секрет живого узора
1  # почему 91, а не 90?
2  
3  right(90)  → 4 × 90 = 360, квадрат замкнётся ровно
4  right(91)  → каждый круг чуть-чуть промахивается
5               и рисунок медленно проворачивается
6  
7  # крошечная неточность = красивый узор

И вторая хитрость: угол 91 градус вместо 90. Всего один лишний градус — но из-за него каждый виток чуть проворачивается, и вместо скучного квадрата получается закрученный узор. Маленькая неточность делает красоту.

ШАГ 2 ИЗ 6 · ЛАБОРАТОРИЯ УЗОРОВ

Три ползунка — сотни узоров

КОД ТВОЕГО УЗОРА
120
91°
1.5

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

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

Та самая спираль вживую. Девяносто шагов, каждый длиннее предыдущего, поворот 91°. Смотри, как из простого цикла рождается узор — это и есть генеративная графика.

За что отвечает каждый ползунок range(шагов) сколько всего линий — размер узора right(поворот) форма: 91 — квадраты, 121 — треугольники forward(i * рост) насколько быстро спираль расходится Три числа — и больше ничего Так работают все генеративные картинки: мало правил, много вариантов

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

НАШ РЕДАКТОР «PYTHON В КАРМАНЕ» — КУДА НАЖИМАТЬ
ТВОЙ ЭКРАН «PYTHON В КАРМАНЕ» — КУДА НАЖИМАТЬнажми на кружок — покажу место
Окно редактора
  • 1Строки настроек — сюда speed(0)Скорость черепашки. Ноль — это не «стоять», а «быстро, насколько можешь». Без неё сто двадцать витков ты будешь смотреть целую минуту. Готовая кнопка speed(0) есть прямо в палитре внизу, во втором ряду.
  • 2Цикл — тут все три числа узораТри числа решают всё: сколько повторов в range(...), на сколько градусов поворот в right(...) и как быстро растёт шаг в forward(i * ...). Поставь 120 повторов и поворот 91 вместо 90: один лишний градус проворачивает каждый виток, и вместо скучного квадрата выходит вихрь.
  • 3Палитра «Ещё»Там лежит кнопка i — та самая переменная цикла, которая считает витки: 0, 1, 2, 3… Именно её ставят в скобки: forward(i * 1.5), и потому каждый следующий шаг длиннее предыдущего. Знак умножения * — в палитре «Знаки».
  • 4Жёлтая кнопка ▶ ЗапуститьМеняй по одному числу за раз и запускай. Поворот 91 — квадратный вихрь, 121 — треугольный, 144 — звезда. Каждая тройка чисел даёт свой узор, и их тут сотни.
  • 5Холст — тут закрутится спиральСейчас это ровный квадрат: шаг всё время один и тот же. У тебя линия должна расходиться наружу. Не расходится — значит, i не попала в скобки forward, и каждый шаг снова одинаковой длины.
Отмечено:0 из 5

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

ШАГ 3 ИЗ 6 · ЦВЕТ

Спираль в четыре цвета

cvetnaya.py — список цветов по кругу
1  from turtle import *
2  speed(0)
3  bgcolor("black")       # ночное небо
4  
5  colors = ["gold", "orange", "cyan", "white"]
6  
7  for i in range(160):
8      color(colors[i % 4])   # цвета берутся по кругу
9      forward(i * 1.2)
10     right(91)

В строке 5 появилось кое-что новое — список. Это несколько значений в одной коробке, через запятую в квадратных скобках. А строка 8 берёт из него цвет по очереди, снова и снова.

Загадочный значок % — остаток от деления i = 0 → 0 % 4 = 0 → colors[0] = gold i = 1 → 1 % 4 = 1 → colors[1] = orange i = 2 → 2 % 4 = 2 → colors[2] = cyan i = 3 → 3 % 4 = 3 → colors[3] = white i = 4 → 4 % 4 = 0 → снова gold! Остаток никогда не бывает больше 3 — цвета крутятся по кругу вечно

Значок % даёт остаток от деления. Звучит скучно, а работает как карусель: сколько бы кругов ни прошло, номер цвета всегда останется от 0 до 3. Приём используют везде, где что-то должно повторяться по кругу.

Проверка · Чему равно 7 % 4?

1.75
3
28
7 разделить на 4 — это 1 и остаток 3. Нас интересует именно остаток.

Что делает forward(i * 2) внутри цикла?

Всегда идёт на 2 шага
Идёт назад
Каждый круг делает шаг длиннее предыдущего
i растёт на каждом круге: 0, 1, 2, 3… Значит и i * 2 растёт.

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

ЭКСКУРС
КАК ЭТО УСТРОЕНО

Спирали, которые считает природа

Водоворот, раковина улитки, ураган и рукава галактик — это одна и та же форма: поворот плюс постепенное увеличение шага.

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

Поменяй угол на пару градусов — узор станет совершенно другим. Именно так художники в играх делают орнаменты и текстуры.

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

Вместо спирали — кольцо

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

Спирали нет — вместо неё жирный квадрат. Угол верный, кругов достаточно. Найди строку, из-за которой узор не расходится наружу.

Правило спирали что-то должно РАСТИ на каждом круге длина шага · угол поворота · толщина линии Попробуй растить угол вместо длины — узор получится совсем другой

Расти может что угодно. Поставь right(i) вместо right(91) — угол начнёт увеличиваться, и выйдет узор, похожий на морскую раковину. Экспериментировать тут интереснее, чем читать.

ШАГ 5 ИЗ 6 · НА СВОЁМ ЭКРАНЕ

Собери свою галерею

Пять команд для красоты speed(0) рисовать мгновенно, без анимации bgcolor("black") чёрный фон — узор ярче pensize(2) толщина линии hideturtle() спрятать саму черепашку в конце color("cyan") цвет линии — можно менять в цикле speed(0), bgcolor("black") и pensize(2) ставят один раз в начале

С этими пятью командами твои узоры перестанут отличаться от картинок в интернете. Особенно советую bgcolor("black") — на чёрном фоне золото и бирюза выглядят совсем иначе.

Как сохранить узор картинкой Проще всего — скриншот экрана: Windows: Win + Shift + S Mac: Cmd + Shift + 4 Собери 3–4 разных узора — получится твоя галерея Такие картинки не стыдно поставить на обои или распечатать

Сохрани лучшие узоры и покажи взрослым. Обычно первая реакция — «это ты сам нарисовал?». Ответ приятный: не нарисовал, а написал программу, которая нарисовала.

Судовой журнал — отметь сделанное:
Сделал спираль через forward(i * что-то)
Поменял угол с 90 на 91 и увидел разницу
Попробовал треугольную спираль (121°)
Сделал список цветов и раскрасил узор
Поставил чёрный фон через bgcolor
Сохранил 3 разных узора скриншотами
Показал кому-нибудь свою галерею

Вторая галочка — обязательная. Разница между 90 и 91 градусом выглядит как фокус: одно и то же число кругов, а картинка совершенно другая. Это стоит увидеть своими глазами.

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

Созвездие по твоим правилам

Задание: узор, которого ни у кого нет · Возьми спираль и подбери свои три числа · Добавь список из 3–5 цветов, которые тебе нравятся · Попробуй растить не длину, а угол: right(i * 0.1) · Или толщину: pensize(i / 20) · Для смелых: два цикла подряд — узор поверх узора Дай своему узору имя — как настоящему созвездию

Тут нет правильного ответа. Меняй числа, смотри, что вышло, оставляй понравившееся — это и есть работа с генеративной графикой. Назови лучший узор своим именем: «Спираль Ани», «Вихрь Марка».

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

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

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

Спираль закручена!

Четвёртый артефакт: генеративные узоры из трёх чисел. Бейдж «УЗОРЩИК» твой. Дальше — свои функции: имя для куска кода.

Что дальше. Сова наводит трубу и уступает место: «Спроси у неё что-нибудь».

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

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

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

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