IndentationError: expected an indented block — что это и как исправить?
Пишу первую программу с циклом, запускаю — а Python ругается IndentationError: expected an indented block. Не понимаю, на что он жалуется, ведь код вроде написан правильно. Как починить эту ошибку отступа?
2 ответа
Эта ошибка значит: после двоеточия Python ждёт отступ, а его нет. В Python тело if, for, while, def и т.п. выделяется не скобками, а отступом (обычно 4 пробела).
Типичная ситуация — написали заголовок с : и оставили следующую строку без сдвига:
for i in range(3):
print(i) # ошибка: строка не сдвинута
Исправление — добавить отступ внутри блока:
for i in range(3):
print(i) # 4 пробела слева
Главные причины:
- Забыли сделать отступ после строки с двоеточием.
- Поставили двоеточие там, где блок не нужен.
- Закомментировали единственную строку тела — тогда блок стал пустым.
Если тело временно не нужно, поставьте заглушку pass:
if x > 0:
pass
Совет: настройте редактор так, чтобы Tab вставлял 4 пробела, и не смешивайте пробелы с табами — это вторая частая причина проблем с отступами.
Короткое правило: каждая строка, которая заканчивается двоеточием, обязана иметь хотя бы одну строку с отступом под собой. Проверьте строку прямо над местом ошибки — скорее всего там :, а тело пустое или не сдвинуто. Поставьте 4 пробела перед телом, и ошибка уйдёт.