Python для новичковУправление ходом программыУсловная инструкция if и else

Условная инструкция if и else

Уроки курсаУсловная инструкция if и else

Типичные ошибки при написании if/else

Когда конструкция if/else уже написана и понята в теории, на практике сразу встречаются две ошибки — они случаются чаще всего и обе приводят к тому, что код не запускается вообще.

Пропущенное двоеточие

После условия if и после слова else обязательно стоит двоеточие. Если его забыть — Python выбросит SyntaxError ещё до запуска программы.

# Ошибка: нет двоеточия после условия
age = 20
if age >= 18
    print('Совершеннолетний')
# SyntaxError: expected ':'
# Исправленный вариант
age = 20
if age >= 18:
    print('Совершеннолетний')
else:
    print('Несовершеннолетний')

Ошибка одинаково возникает и после if, и после else — двоеточие обязательно в обоих местах. Редакторы вроде VS Code или PyCharm обычно подчёркивают такую строку красным сразу, не дожидаясь запуска.

Неверный отступ в теле блока

Вторая ошибка — когда строки внутри блока if или else стоят не на том уровне. Python в этом случае выбрасывает IndentationError.

# Ошибка: тело if не сдвинуто
age = 20
if age >= 18:
print('Совершеннолетний')   # нет отступа
# IndentationError: expected an indented block
# Ошибка: непоследовательный отступ внутри блока
if age >= 18:
    print('Проверка пройдена')
  print('Совершеннолетний')   # 2 пробела вместо 4
# IndentationError: unindent does not match any outer indentation level

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

if age >= 18:
	print('Таб')       # символ Tab
    print('Пробелы')   # 4 пробела
# IndentationError: inconsistent use of tabs and spaces in indentation

Как читать сообщения об ошибках

Оба типа ошибок — SyntaxError и IndentationError — всегда указывают номер строки, где Python споткнулся. Это не всегда та строка, где ошибка допущена: например, если пропустить двоеточие в if, интерпретатор может указать на следующую строку. Поэтому при SyntaxError стоит смотреть на строку выше указанной — там обычно и живёт пропущенное двоеточие.

При IndentationError сообщение чуть точнее: Python называет конкретный тип проблемы — expected an indented block (блок вообще не начат), unindent does not match (отступ не совпадает ни с одним уровнем) или inconsistent use of tabs and spaces (смешаны символы). Ориентируясь на эти формулировки, можно сразу понять, что именно исправлять.