← Все вопросы

IndentationError: expected an indented block — что это и как исправить?

Задан 27 месяцев назад877 просмотров2 ответа
9

Пишу первую программу с циклом, запускаю — а Python ругается IndentationError: expected an indented block. Не понимаю, на что он жалуется, ведь код вроде написан правильно. Как починить эту ошибку отступа?

2 ответа

14
✓ Принятый ответ — помог автору

Эта ошибка значит: после двоеточия Python ждёт отступ, а его нет. В Python тело if, for, while, def и т.п. выделяется не скобками, а отступом (обычно 4 пробела).

Типичная ситуация — написали заголовок с : и оставили следующую строку без сдвига:

for i in range(3):
print(i)        # ошибка: строка не сдвинута

Исправление — добавить отступ внутри блока:

for i in range(3):
    print(i)    # 4 пробела слева

Главные причины:

  1. Забыли сделать отступ после строки с двоеточием.
  2. Поставили двоеточие там, где блок не нужен.
  3. Закомментировали единственную строку тела — тогда блок стал пустым.

Если тело временно не нужно, поставьте заглушку pass:

if x > 0:
    pass

Совет: настройте редактор так, чтобы Tab вставлял 4 пробела, и не смешивайте пробелы с табами — это вторая частая причина проблем с отступами.

5

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

Ваш ответ

Войдите, чтобы ответить на вопрос.