Условная инструкция if и else
Уроки курсаУсловная инструкция if и else
В предыдущих уроках вы уже работали с логическими выражениями и операторами сравнения — теперь эти знания пойдут в дело. Чтобы написать первую условную инструкцию, нужно сначала разобраться с тем, как Python вообще понимает, где заканчивается одна команда и начинается группа команд, которая должна выполниться вместе.
Блок кода и отступы в Python
В большинстве языков программирования группы инструкций обозначаются фигурными скобками {}. Python устроен иначе: вместо скобок он использует отступы — пробелы в начале строки.
Группа инструкций, объединённых под одной управляющей конструкцией, называется блоком кода. Блок начинается строго после двоеточия в конце заголовочной строки и продолжается до тех пор, пока строки идут с одинаковым углублением. Как только отступ возвращается на предыдущий уровень — блок заканчивается.
Стандарт Python — 4 пробела на каждый уровень вложенности. Технически интерпретатор примет и 2 пробела, и даже один, но в реальных проектах отступ в 4 пробела — это договорённость всего сообщества, и отступать от неё не стоит.
Вот как это выглядит схематично:
заголовок_конструкции: # двоеточие обязательно
инструкция_1 # 4 пробела — это блок
инструкция_2 # тот же отступ — тот же блок
инструкция_вне_блока # отступ вернулся — блок закончился
Почему это важно понять до знакомства с if? Потому что Python буквально определяет структуру программы по отступам. Если отступ нарушен или непоследователен, интерпретатор выбросит IndentationError и не запустит код вообще. Самая распространённая причина такой ошибки — смешивание пробелов и символов табуляции в одном файле: визуально они выглядят одинаково, но для Python это разные символы.
# Правильно: все отступы — пробелы, 4 штуки
заголовок:
инструкция_1
инструкция_2
# Ошибка: первая строка — таб, вторая — пробелы
заголовок:
инструкция_1 # символ табуляции
инструкция_2 # 4 пробела
# IndentationError: inconsistent use of tabs and spaces
Практический совет: сразу настройте редактор так, чтобы клавиша Tab автоматически вставляла 4 пробела — тогда этот класс ошибок исчезнет сам по себе.
Концепция блока кода и отступов универсальна для всего Python: она работает одинаково в if, else, циклах for и while, определениях функций. Освоив этот механизм сейчас, вы сможете применять его во всех последующих конструкциях Python — циклах, функциях и других — без дополнительных объяснений.
