Код БарсикОсновы Python
Основы Python›C05 · Теория

Теория · C05

Несколько вариантов и текстовый квест

Разберись в теме, запусти пример и переходи к самостоятельным задачам.

РАЗБИРАЕМ ПО ШАГАМ

От идеи к работающему коду

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

Сразу к запуску примера ↓
Из нескольких маршрутов выбирается первый, условие которого подошло.
Из нескольких маршрутов выбирается первый, условие которого подошло.
  1. 1Нормализовать ввод
  2. 2Проверить if → elif
  3. 3Выбрать маршрут или else

1. Цепочка if / elif / else

elif читается как «иначе, если». Оно проверяется только тогда, когда предыдущие условия в этой цепочке оказались ложными. Веток elif может быть несколько.

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

Python
choice = input()if choice == "1":    print("Библиотека")elif choice == "2":    print("Лаборатория")elif choice == "3":    print("Двор")else:    print("Такого маршрута нет")

2. Порядок проверок меняет результат

Представь уровни доступа по баллам. Если сначала проверить score >= 50, то значение 95 попадёт туда, хотя оно также больше 90. Для высокого уровня не останется шанса.

Начинай с самого строгого порога. Несколько отдельных if работают иначе: каждый проверяется независимо, поэтому сообщений может быть несколько. Выбирай конструкцию по задаче.

Python
score = 95if score >= 90:    print("Высокий уровень")elif score >= 50:    print("Базовый уровень")else:    print("Нужна подготовка")

3. Нормализация текстового ответа

Метод — операция, которую вызывают у конкретного значения через точку. Метод strip() возвращает строку без пробелов по краям, lower() — строку в нижнем регистре.

Так ответы "Да", " ДА " и "да" можно привести к одному виду. Методы возвращают новую строку: сохрани её в переменную или используй цепочку вызовов. Внутренние пробелы strip() не убирает.

Python
answer = input().strip().lower()if answer == "да":    print("Продолжаем")else:    print("Останавливаемся")

4. Вложенная проверка

Иногда в выбранном маршруте есть ещё одно решение: например, для лаборатории нужен код. Тогда второй if размещается внутри первого блока с дополнительным отступом.

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

Python
route = input().strip().lower()if route == "лаборатория":    password = input()    if password == "python":        print("Доступ открыт")    else:        print("Неверный код")else:    print("Этот маршрут без пароля")

Где легко ошибиться

  • Три независимых if могут выполнить три блока. Цепочка if / elif — только один.
  • Общее условие раньше частного может сделать ветку недостижимой.
  • После .lower() сравнивай с текстом в нижнем регистре.
Проверь понимание: Почему score = 95 не попадёт в elif score >= 90 после if score >= 50?

Первое условие уже истинно. После выполнения его блока остальные ветки цепочки пропускаются.

Выбираем дверь

Запусти пример. Затем измени код или входные данные и проверь, как меняется вывод.

Пример входных данных

левая

Ожидаемый вывод

Ты нашёл выход!
main.pyPython · можно менять код

Подготавливаем редактор…

Загрузка Python…

Каждый ответ — с новой строки.

Твой вывод

Здесь появится результат запуска.

Дальше — самостоятельные задачи

  1. По номеру 1–3 выбрать комнату
  2. Сделать секретное слово, открывающее дополнительный путь
  3. Поменять порядок условий и объяснить изменение результата