Лето 2023 года для пятнадцатилетнего Лео напоминало режим ожидания. Дни, липкие от жары, тянулись бесконечно, а единственным спасением от скуки был гул системного блока и бездонный океан интернета. Лео не был фанатом пляжей или шумных компаний. Его стихией были миры, скрытые за мерцающим экраном монитора. Он обожал копаться в историях видеоигр, изучать сложные сюжетные хитросплетения и читать фанатские теории. Его всегда влекло ощущение, что за видимой простотой скрывается нечто большее, какая-то система, загадка.
Именно эта тяга к загадкам и привела его на «Грань Реальности» — форум, где собирались любители всего таинственного и необъяснимого. Конечно, 90% тем были откровенной ерундой про плоскую Землю и рептилоидов, но иногда, среди всего этого шума, попадались действительно интересные головоломки.
В один из таких вечеров Лео наткнулся на странную тему, созданную пользователем с ником «Архитектор». Название было интригующим: «Тест для тех, кто готов видеть. Нулевой уровень».
Внутри поста не было картинок или длинных текстов. Лишь небольшой блок, который выглядел как какой-то технический код, и короткое пояснение.
Пояснение: Ниже — фрагмент инструкции. Он поврежден. Восстановите его и запустите. Правильный результат — ваш пропуск на первый уровень.
Лео несколько раз перечитал сообщение. Это было не похоже на обычные «шифры», которые он видел раньше. Знаки # в начале строк, слово print... Он где-то это уже видел. Кажется, в статьях о том, как создаются моды для его любимых игр. Это было похоже на... язык программирования.
Под постом уже начали появляться комментарии:
User_Cool: «Что за бред? Ничего не работает».
Skeptic: «Очередная попытка выглядеть умным. Автор, иди учи уроки».
Но один комментарий от пользователя «Проводник» зацепил Лео:
Проводник: «Это не бред, а просто сломанный инструмент. Чтобы его починить, нужен правильный верстак. Змея поможет».
«Змея поможет?» — пробормотал Лео. Это уже было похоже на загадку. Он начал гуглить: «язык программирования змея». И поисковик тут же исправил его запрос на «язык программирования Python».
Бинго! Логотипом языка часто были две змеи, синяя и желтая. «Питон». Вот он, «верстак», о котором говорил Проводник.
Лео никогда раньше не программировал, но азарт взял свое. Это был вызов. Головоломка, для решения которой нужно было освоить новый навык.
Шаг 1: Установка инструментов
Недолго думая, Лео вбил в поиск «установить Python». Первая же ссылка привела его на официальный сайт Он перешел в раздел «Downloads» и скачал последнюю версию для Windows.
Установка была простой: двойной клик по файлу, и открылся инсталлятор. Лео заметил внизу галочку «Add Python to PATH». Он не знал, что это значит, но какая-то интуиция (и небольшая подсказка в описании под галочкой) подсказала ему, что это важно. Он поставил ее и нажал «Install Now».
Через пару минут все было готово. Но... что дальше? На рабочем столе не появилось новых ярлыков. Лео немного растерялся. Он открыл меню «Пуск» и в строке поиска набрал Python. Появилось несколько опций, но две привлекли его внимание:
Он кликнул на первую. Мелькнуло черное окно и тут же закрылось. Он попробовал еще раз — тот же эффект. «Отлично начало», — с иронией подумал Лео.
Тогда он запустил вторую — IDLE. На этот раз открылось белое окно с текстом о версии Питона и тремя стрелочками >>>. За ними мигал курсор. Это уже было похоже на место, где можно что-то писать.
Шаг 2: Первое заклинание — «Привет, мир!»
Итак, у Лео был «верстак» (IDLE) и сломанный «инструмент» (код с форума). Но прежде чем чинить чужое, он решил попробовать создать что-то свое, самое простое. Он снова обратился к поисковику с запросом: «как написать первую программу на python».
Все гайды для новичков начинались с одного и того же: программы «Hello, World!». Это была своего рода традиция, проверка, что все работает.
В одной из статей он увидел пример:
Лео посмотрел на свой мигающий курсор в IDLE и аккуратно, буква в букву, набрал эту команду. Он обратил внимание на каждую деталь: само слово print маленькими буквами, круглые скобки () сразу после него, и текст внутри двойных кавычек "".
Он нажал Enter.
И в следующей строке, почти мгновенно, компьютер ответил:
Hello, World!
Лео улыбнулся. Это было круто! Он написал команду, и машина его поняла. Это было не похоже на нажатие кнопок в игре. Это было прямое указание, которое было выполнено в точности. Он почувствовал себя немного волшебником.
Шаг 3: Разбираемся, как это работает (Функция и Строки)
Теперь ему стало интересно, а что если что-то изменить? Что здесь самое важное?
Он решил разобраться с командой print() по частям.
Эксперимент 1: Кавычки
Что, если использовать другие кавычки? Он где-то видел одинарные.
Сработало! Значит, можно использовать и двойные " и одинарные '. Главное, чтобы они были парными: если начал с двойной, то и закончить нужно двойной.
А что, если вообще убрать кавычки?
Компьютер выдал красную ошибку. NameError: name 'Привет' is not defined. Лео, хоть и не знал английского в совершенстве, понял суть: «Ошибка имени. Имя 'Привет' не определено».
Он задумался. Почему так? Он снова перечитал гайд. И там было объяснение:
Текст, который вы хотите вывести на экран, для Python является строкой. Чтобы интерпретатор понял, где начинается и где заканчивается ваша текстовая строка, ее нужно «обернуть» в кавычки. Кавычки — это как бы границы, контейнер для текста. Без них Python думает, что вы пытаетесь использовать какую-то переменную или команду с именем «Привет», а такой команды он не знает, вот и ругается.
«Ага, — подумал Лео, — значит, кавычки превращают обычные слова в понятный для Питона тип данных — строку».
Эксперимент 2: Скобки
А что насчет скобок? В старых версиях языка, как он прочитал, писали без них.
Снова ошибка, но уже другая. SyntaxError: Missing parentheses.... Синтаксическая ошибка: пропущены скобки. И Питон даже любезно подсказывал: «Вы имели в виду print(...)?».
Вывод был очевиден: print — это функция. А в Python вызов любой функции требует после ее имени ставить круглые скобки (). Внутрь этих скобок мы кладем то, с чем функция должна работать (в нашем случае — строку, которую нужно напечатать).
Итак, Лео вывел для себя два главных правила на сегодня:
Шаг 4: Чиним сломанный инструмент
Вооружившись новыми знаниями, Лео вернулся к загадке Архитектора. Он посмотрел на сломанный код свежим взглядом.
Теперь ошибки были очевидны, как на ладони.
Анализ первой сломанной строки: print Привет, мир!
Как починить: Нужно добавить скобки и кавычки.
Правильный вариант: print("Привет, мир!")
Анализ второй сломанной строки: print(Правило №1: Никогда не копируй слепо)
Как починить: Нужно добавить кавычки внутри скобок.
Правильный вариант: print("Правило №1: Никогда не копируй слепо")
Лео почувствовал прилив уверенности. Он открыл в меню IDLE новый файл (File -> New File), чтобы написать всю программу целиком, а не по одной строчке. В открывшемся редакторе он набрал исправленный код:
code Pythondownloadcontent_copyexpand_less
Затем он сохранил файл под именем test0.py и нажал F5, чтобы его запустить.
В окне IDLE, где он до этого экспериментировал, появился результат:
Это было оно! Правильный результат. Он не просто нашел ответ, он понял, почему исходный код был неправильным, и как его исправить. Это было чувство чистого удовлетворения.
Он скопировал две получившиеся строчки и вернулся на форум. В теме Архитектора он оставил свой комментарий:
Лео:
Привет, мир!
Правило №1: Никогда не копируй слепо
Он нажал «Отправить» и откинулся на спинку кресла, чувствуя приятную усталость. Он не только решил головоломку, но и научился чему-то новому. Он научился говорить с компьютером на его языке.
Не прошло и минуты, как в правом верхнем углу форума загорелся значок нового личного сообщения. Оно было от Архитектора.
Тема: Уровень 0 пройден.
Сообщение:
Отличная работа. Ты не просто нашел ответ, ты понял принцип. Это самое главное.
Правило №1 ты усвоил. Теперь запомни правило №2: «Любая информация — это просто данные в ячейке».
Твое следующее задание ждет тебя. Но чтобы его получить, тебе понадобится создать свои собственные «ячейки». Удачи, новичок.
Лео перечитал сообщение несколько раз. «Ячейки для данных»? Что это могло значить? Он не знал, но был готов выяснить. Приключение только начиналось.