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

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

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

Число, у которого есть имя

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

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

«Не рисуй по одному лучу, — Сова стучит пальцем по столу. — Спроси себя: сколько лучей? И пусть число само решит, какой получится фигура».

Поменял число — поменялась форма. Это и есть настоящая карта: одна формула, тысяча ветров.

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

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

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

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

Как приходится жить без переменных
1  # ТАК ПРИХОДИТСЯ ПРАВИТЬ БЕЗ ПЕРЕМЕННОЙ:
2  for i in range(6):      ← поменять тут
3      forward(90)
4      right(60)       ← и не забыть тут!
5  
6  # забыл второе — фигура не замкнётся

Два числа связаны между собой: 6 сторон требуют поворота на 60°. Меняешь одно — обязан поменять и другое, иначе фигура разъедется. Компьютер об этой связи не знает, помнить приходится тебе.

mnogougolnik.py — с переменными
1  from turtle import *
2  
3  sides = 6              # ЗАПОМНИЛИ число под именем
4  angle = 360 / sides      # посчитали угол сами (angle)
5  
6  for i in range(sides):
7      forward(90)
8      right(angle)
9  
10 done()

Теперь смотри: sides = 6 — это как подписать коробку и положить туда число. А строка 4 считает угол сама из этого числа. Меняешь одну шестёрку на любое другое — и всё пересчитывается автоматически.

ШАГ 2 ИЗ 6 · КАК ЭТО УСТРОЕНО

Коробка с подписью

Переменная = имя + значение sides 6 подпись на коробке и что внутри angle 60 посчиталась сама: 360 / sides Поменял «sides» на 8 — «angle» сам станет 45 Одно изменение вместо двух. В больших программах — вместо двадцати.

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

Как называть переменные sides, angle, size, speed ← понятно с первого взгляда a, b, x1, qq, temp2 ← через неделю не вспомнишь На компьютере можно называть и по-русски, в браузере — латиницей. Имя переменной — это записка себе будущему. Пиши так, чтобы понять.

Хорошее имя экономит время. Через месяц откроешь свой код и не вспомнишь, что такое «a». А «скорость_рыбки» поймёшь мгновенно — и даже другой человек поймёт.

Проверка · Что напечатает эта программа?
n = 5 · n = n + 3 · print(n)

5
8
n + 3
Сначала в коробке 5. Потом туда кладут «то, что было, плюс 3». Стало 8.

Зачем считать угол как 360 / sides?

Так короче писать
Python не умеет большие числа
Чтобы при смене числа сторон угол пересчитался сам
Если угол посчитан из «sides», он всегда будет ему соответствовать. Забыть уже невозможно.

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

⚠ ЛОВУШКА БРАУЗЕРНОГО РЕДАКТОРА сторон = 8 SyntaxError: bad token — в браузере так нельзя В БРАУЗЕРЕ ИМЕНА — ЛАТИНИЦЕЙ sides = 8 angle = 360 / sides А на компьютере (IDLE) русские имена работают отлично

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

НАШ РЕДАКТОР «PYTHON В КАРМАНЕ» — КУДА НАЖИМАТЬ
ТВОЙ ЭКРАН «PYTHON В КАРМАНЕ» — КУДА НАЖИМАТЬнажми на кружок — покажу место
Окно редактора
  • 1Верхние строки — место для коробок с подписямиСейчас тут настройки пера. Ты допишешь рядом две свои строки: sides = 8 — имя для числа сторон, и angle = 360 / sides — угол, который считается сам. Имена только латиницей: русское «сторон» браузерный редактор не понимает и падает с SyntaxError: bad token.
  • 2Цикл внизу — сюда подставишь именаВместо range(4) станет range(sides), вместо right(90) — right(angle). Числа уходят из цикла, остаются имена — и вся фигура меняется одной цифрой наверху, а не в трёх местах сразу.
  • 3Палитра «Знаки»Тут лежат = и / — из них собирается формула angle = 360 / sides. Само число 360 бери в соседней палитре «Числа», оно там есть готовой кнопкой вместе с 45, 90, 120 и 144.
  • 4Жёлтая кнопка ▶ ЗапуститьПоменял восьмёрку на 3, на 5, на 12 — и жми. Пересчитается всё разом: и количество сторон, и угол поворота. Забыть про второе число уже невозможно — в этом весь смысл переменной.
  • 5Холст — считай стороныСейчас тут квадрат, четыре стороны. Поставишь sides = 8 — станет восьмиугольник, поставишь 30 — фигура почти сольётся в круг. Не замкнулась — значит, угол посчитан не из sides.
Отмечено:0 из 5

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

ШАГ 3 ИЗ 6 · ПОПРОБУЙ САМ

Одно число — вся фигура

КОД С ПЕРЕМЕННЫМИ
6
60°

Верхний ползунок — это переменная sides. Двигаешь её — код слева переписывается сам. Именно так и работает программа с переменными: правишь одно место, меняется всё.

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

Запись из настоящего редактора. Смотри на строки 6–7: одно число sides задаёт и количество повторов, и угол. Поменяешь восьмёрку — фигура перестроится целиком.

Растущие фигуры — переменная меняется прямо в цикле
1  sides = 3
2  
3  while sides <= 9:          # пока sides не больше 9
4      angle = 360 / sides
5      for i in range(sides):
6          forward(60)
7          right(angle)
8      sides = sides + 1   # следующая фигура на 1 сторону больше
9  
10 done()

Вот фокус посильнее — новое слово while. Читается «пока»: пока условие в строке 3 верно, Python снова и снова выполняет то, что с отступом ниже, и каждый раз проверяет условие заново. Здесь переменная меняется на каждом круге (строка 8): сначала треугольник, потом квадрат, пятиугольник — и так до девятиугольника. Все они нарисуются друг за другом одной программой в десять строк. Не забудь строку 8: без неё sides никогда не вырастет и цикл не кончится.

ЭКСКУРС
КАК В НАСТОЯЩИХ ИГРАХ

Одна формула вместо тысячи рисунков

Когда художник рисует сто разных снежинок — это сто рисунков. Когда программист пишет формулу с числом — это бесконечно много снежинок.

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

В Roblox-хите Tower of Hell башню каждый раунд собирают заново из набора готовых секций — поэтому её нельзя выучить наизусть.

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

Вместо восьмиугольника — шестиугольник

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

Ровно та беда, ради которой и придумали переменные: число поменяли в одном месте, а во втором забыли. Найди начало тела цикла — ошибка живёт там.

Правило связанных чисел Если одно число зависит от другого — не пиши его руками, а посчитай в коде angle = 360 / sides вместо right(45) Тогда ошибиться просто не получится — код посчитает сам

Этот приём взрослые программисты называют «единственный источник правды». Звучит важно, а смысл простой: каждое число живёт в одном месте, а всё остальное считается из него.

ШАГ 5 ИЗ 6 · КРАСОТА ИЗ ЧИСЕЛ

Розетка

rozetka.py — узор из повёрнутых фигур
1  from turtle import *
2  speed(0)
3  
4  sides = 5
5  repeats = 18          # сколько раз обернуть узор
6  angle = 360 / sides
7  
8  for n in range(repeats):
9      for i in range(sides):
10         forward(70)
11         right(angle)
12     right(360 / repeats)   # чуть повернуть и повторить
13 
14 done()

Три переменные сверху — и вся программа управляется ими. Поставь sides = 3 — получится звёздчатый узор из треугольников. sides = 20 — почти цветок из кругов. Меняй только верхние строки, ниже трогать нечего.

Что попробовать поменять sides = 3, repeats = 24 колючая звезда sides = 4, repeats = 12 классическая розетка sides = 20, repeats = 8 цветок из кругов forward(70) → forward(n * 6) узор-воронка Это уже не учёба, а игра с числами. Найди свой любимый узор.

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

Судовой журнал — отметь сделанное:
Завёл переменную sides
Угол считается как 360 / sides
Поменял одно число — фигура изменилась целиком
Нарисовал фигуру с 12 сторонами
Сделал растущие фигуры через while
Собрал розетку и поиграл числами
Сохранил файл с понятным именем

Третья галочка — суть острова. Если одно изменённое число перестраивает всю картинку, значит переменные ты понял по-настоящему, а не просто переписал код.

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

Панель управления узором

Задание: сделай свою панель управления · Вынеси ВСЕ числа программы в переменные наверх · Дай им понятные имена: sides, length, repeats, width · Ниже — код, где вместо чисел только имена · Проверь: узор целиком меняется правкой верхних строк · Добавь pensize(width) и color("gold") Так устроены настоящие программы: настройки сверху, работа ниже

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

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

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

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

Переменные освоены!

Третий артефакт: одно число управляет целой фигурой, а угол считается сам. Бейдж «ХРАНИТЕЛЬ ЧИСЕЛ» твой. Дальше — спираль водоворота, а за ней цветные узоры созвездий.

Что дальше. Ночью купол раскрывается. Сова смотрит вверх и вдруг говорит: «Звёзды разного цвета. Заметил?»

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

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

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

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