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

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

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

Программа задаёт вопрос

ЧТО ПРОИСХОДИТ
ЭПИЗОД 7Купол Обсерватории

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

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

Спросил имя — ответила по имени. Ответил неправильно — сказала, что неправильно. Так рождается диалог.

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

Это анимация исполнения кода: программа шла строка за строкой, и вопросы с ответами появлялись в окне вывода в реальном времени. Черепашки на этом острове нет — только текст. Тот же код ты напишешь сам. В ролике Капитан по старой памяти отвечает «Верно, штурман!» — в Обсерватории это звание звучит как «звездочёт».

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

Из этих двух команд когда-то выросли все компьютерные приключения.

input.py — как программа слушает
1  name = input("Как тебя зовут? ")
2  print("Привет, " + name + "!")
3  
4  # input ЖДЁТ, пока человек напечатает и нажмёт Enter
5  # то, что он ввёл, попадает в переменную
6  
7  # ВАЖНО: input всегда даёт ТЕКСТ, даже если ввели число
8  age = int(input("Сколько тебе лет? "))   ← int() превращает в число

Строка 1 останавливает программу и ждёт человека. Что напечатали — попало в переменную. И сразу важная ловушка из строки 8: input всегда даёт текст. Если нужно число, оберни в int(), иначе арифметика не сработает.

if / elif / else — развилка
1  answer = input("Пойдёшь налево или направо? ")
2  
3  if answer == "налево":
4      print("Ты нашёл пещеру.")
5  elif answer == "направо":      # «иначе если»
6      print("Ты вышел к морю.")
7  else:                          # на все остальные случаи
8      print("Я тебя не понял.")

Читается почти по-русски: если ответ равен «налево» — одно, иначе если «направо» — другое, иначе — на все прочие случаи. Обрати внимание на двойное равно: одно = кладёт значение, двойное == сравнивает.

ШАГ 2 ИЗ 6 · СЫГРАЙ

Приключение в три вопроса

ОКНО ПРОГРАММЫ
КОД ЭТОГО ШАГА

Отвечай в поле и жми Enter. Справа видно код, который сейчас работает. Попробуй пройти дважды: сначала «налево» и «возьму», потом «направо» и «мимо» — история пойдёт по-разному.

Развилка: одна программа — разные истории input(...) if == "налево" пещера elif == "направо" море else «не понял» else нужен всегда: человек напечатает что угодно, и это надо предусмотреть

Про else забывают, а он важнее всего. Игрок обязательно напишет «влево», «Налево» с большой буквы или вообще «привет». Без else программа просто промолчит, и человек решит, что она сломалась.

НАШ РЕДАКТОР «PYTHON В КАРМАНЕ» — КУДА НАЖИМАТЬ
ТВОЙ ЭКРАН «PYTHON В КАРМАНЕ» — КУДА НАЖИМАТЬнажми на кружок — покажу место
Окно редактора
  • 1Кнопка «Стереть» — начни с чистого листаУбирает весь код разом, но сначала переспросит — точно ли. В этом квесте она нужна первой: рисование тут ни к чему, у тебя будет разговор, а не картинка.
  • 2Поле кода — сюда твой разговорЧерепашка не нужна. Первой строкой пиши name = input("Как тебя зовут? ") — готовая кнопка input("") лежит в палитре «Ещё». Ловушка на весь квест: input всегда отдаёт ТЕКСТ, поэтому число оборачивают в int() — эта кнопка там же, рядом.
  • 3Палитра «Циклы и если»Тут кнопки if :, elif :, else: и знак ==. Из них и собирается развилка. Помни про двойное равно: одно = кладёт значение в коробку, а сравнивает именно ==. И строки внутри if сдвигают отступом, как в цикле.
  • 4Жёлтая кнопка ▶ ЗапуститьПройди свою историю дважды: сначала отвечай «налево», потом «направо». Если оба ответа ведут в одно и то же место — развилки не получилось. И обязательно попробуй ответить ерундой: сработает ли else.
  • 5Блок «ЧТО НАПЕЧАТАЛА ПРОГРАММА»Вот здесь пойдёт весь разговор. Сейчас тут написано «программа ничего не напечатала» — потому что на кадре программа молча рисует. У тебя тут появится твой вопрос, а под ним поле и кнопка «Ответить»: печатаешь ответ, жмёшь — и программа идёт дальше. Белый холст сверху останется пустым, и это правильно.
Отмечено:0 из 5

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

ШАГ 3 ИЗ 6 · ЧТОБЫ НЕ БЕСИЛО

Понимать игрока по-человечески

Приводим ответ в порядок
1  # ПРИНИМАЕМ ЛЮБОЕ НАПИСАНИЕ
2  answer = input("Куда пойдёшь? ").lower().strip()
3  
4      .lower() — все буквы маленькие: «НАЛЕВО» → «налево»
5      .strip() — убирает лишние пробелы по краям
6  
7  if "лев" in answer:            # достаточно куска слова!
8      print("Ты нашёл пещеру.")
9  
10 # сработает и на «налево», и на «влево», и на «лево»

Три приёма разом. .lower() делает буквы маленькими, .strip() убирает лишние пробелы, а «лев» in ответ проверяет кусок слова — сработает и на «налево», и на «влево», и просто на «лево».

igra.py — игра с жизнями и монетами
1  hp = 3
2  coins = 0
3  
4  while hp > 0:          # играем, пока живы
5      move = input("Что делаешь? ").lower()
6  
7      if "иду" in move:
8          coins += 5            # += значит «прибавить к тому, что было»
9          print("Нашёл 5 монет. Всего: ", coins)
10     elif "дерусь" in move:
11         hp -= 1
12         print("Ой! Здоровья осталось: ", hp)
13     elif "выход" in move:
14         break              # выйти из цикла и закончить игру
15     else:
16         print("Не понял. Попробуй: иду / дерусь / выход")
17 
18 print("Игра окончена. Монет собрано:", coins)

Теперь всё вместе: while крутит игру, пока есть здоровье, input спрашивает ход, if/elif/else решает, что случилось. Восемнадцать строк — и получается настоящая текстовая игра, в которую играют часами. Ветка «выход» со словом break нужна обязательно: без неё игрок, который всё время идёт, никогда не выйдет из цикла.

Проверка · Игрок ввёл «НАЛЕВО». Сработает ли if answer == "налево"?

Да, Python не различает регистр
Нет — «НАЛЕВО» и «налево» для Python разные строки
Будет ошибка
Именно поэтому и нужен .lower() — он приводит всё к маленьким буквам.

Что делает int() вокруг input()?

Проверяет, что ввели без ошибок
Округляет число
Превращает введённый текст в число, чтобы с ним считать
input всегда возвращает текст. «5» + «5» дало бы «55», а не 10.

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

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

Ввод, которому нельзя доверять

Как только программа начинает спрашивать человека, появляется вечная проблема: человек напишет что угодно. Букву вместо числа, пустую строку, смайлик.

Поэтому профессионалы всегда проверяют ввод. Это правило родилось не в играх, а в безопасности: половина взломов сайтов — это ввод, который никто не проверил.

Хорошая программа не падает от странного ответа. Она вежливо просит повторить.

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

Программа считает неправильно

vozrast.py — считает возраст через 5 лет
1name = input("Как тебя зовут? ")
2age = input("Сколько тебе лет? ")
3print("Привет, " + name)
4print("Через 5 лет тебе будет", age + 5)
ЧТО ПИШЕТ PYTHON
TypeError: can only concatenate str (not "int") to str
Строка 4 — «текст можно склеивать только с текстом»

Обрати внимание: Python ругается на строку 4, а виновата другая. Так бывает часто — место ошибки и место причины не совпадают. Найди, где переменная получает неправильное значение.

Текст и число — разные вещи "5" + "5" = "55" склеились как слова 5 + 5 = 10 сложились как числа int("5") + 5 = 10 int превратил текст в число Нужно считать — оборачивай input в int(). Нужно показать — не надо.

Запомни картинку. «5» — это символ, 5 — это количество. Компьютер не догадывается, что ты имел в виду, и складывает текст как слова. Отсюда и знаменитое «55» вместо десяти.

ШАГ 5 ИЗ 6 · СБОРКА ИГРЫ

Комнаты, которые зовут друг друга

kvest.py — каждая сцена в своей функции
1  # КАЖДАЯ КОМНАТА — СВОЯ ФУНКЦИЯ (помнишь остров 6?)
2  def cave():
3      print("Темно. Пахнет сыростью.")
4      move = input("Зажечь факел или уйти? ").lower()
5      if "факел" in move:
6          print("Ты видишь сундук!")
7          chest()          # одна комната зовёт другую
8      else:
9          shore()
10 
11 # игра = набор комнат, которые вызывают друг друга

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

Карта твоего приключения — нарисуй ДО кода развилка cave() shore() сундук() trap() ship()

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

Судовой журнал — отметь сделанное:
Программа спрашивает имя через input
Есть развилка if / elif / else
Ответ обрабатывается через .lower()
Есть ветка else на непонятный ответ
Где-то считается число через int(input(...))
Каждая сцена — отдельная функция
Прошёл игру двумя РАЗНЫМИ путями

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

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

Своё приключение

Задание: текстовый квест на пять комнат · Нарисуй карту: пять комнат и стрелки между ними · Каждая комната — функция с описанием и вопросом · Два разных финала: хороший и не очень · Переменная «монеты» или «здоровье», которая меняется · Для смелых: спрятанный секрет за необычным ответом Это твоя история — про космос, школу, лес, что угодно

Про секрет: спрячь ветку на неочевидное слово вроде «танцевать» или «спеть». Тот, кто найдёт, будет в восторге — пасхалки в играх делают ровно так, одной лишней веткой if.

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

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

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

Диалог работает!

Седьмой артефакт: программа, которая спрашивает и слушает. Бейдж «СОБЕСЕДНИК» твой. Остался финал — своя программа и звание Звездочёта.

Что дальше. На полке стоят одинаковые склянки, и на каждой один и тот же рецепт, переписанный от руки.

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

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

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

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