РАЗБИРАЕМ ПО ШАГАМ
От идеи к работающему коду
Когда вариантов больше двух, программа проверяет условия по порядку. Разберём меню с несколькими маршрутами и научимся учитывать случайные пробелы и регистр букв во вводе.
Сразу к запуску примера ↓
- 1Нормализовать ввод
- 2Проверить if → elif
- 3Выбрать маршрут или else
1. Цепочка if / elif / else
elif читается как «иначе, если». Оно проверяется только тогда, когда предыдущие условия в этой цепочке оказались ложными. Веток elif может быть несколько.
Как только условие подошло, его блок выполняется, а остальные ветки этой цепочки пропускаются. else обрабатывает случай, когда не подошло ничего. Это удобно для неизвестного пункта меню.
choice = input()if choice == "1": print("Библиотека")elif choice == "2": print("Лаборатория")elif choice == "3": print("Двор")else: print("Такого маршрута нет")2. Порядок проверок меняет результат
Представь уровни доступа по баллам. Если сначала проверить score >= 50, то значение 95 попадёт туда, хотя оно также больше 90. Для высокого уровня не останется шанса.
Начинай с самого строгого порога. Несколько отдельных if работают иначе: каждый проверяется независимо, поэтому сообщений может быть несколько. Выбирай конструкцию по задаче.
score = 95if score >= 90: print("Высокий уровень")elif score >= 50: print("Базовый уровень")else: print("Нужна подготовка")3. Нормализация текстового ответа
Метод — операция, которую вызывают у конкретного значения через точку. Метод strip() возвращает строку без пробелов по краям, lower() — строку в нижнем регистре.
Так ответы "Да", " ДА " и "да" можно привести к одному виду. Методы возвращают новую строку: сохрани её в переменную или используй цепочку вызовов. Внутренние пробелы strip() не убирает.
answer = input().strip().lower()if answer == "да": print("Продолжаем")else: print("Останавливаемся")4. Вложенная проверка
Иногда в выбранном маршруте есть ещё одно решение: например, для лаборатории нужен код. Тогда второй if размещается внутри первого блока с дополнительным отступом.
Каждый уровень вложенности добавляет четыре пробела. Не усложняй дерево без необходимости: сначала выбери маршрут, затем проверь только его особое правило.
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?
Первое условие уже истинно. После выполнения его блока остальные ветки цепочки пропускаются.
