ТГ бот

Почему выдаёт ошибку? Вывод: File "/home/main.py", line 8 n=int(input())…

Информатика9 классРешено по фото 14 октября 2026 в 18:24
Ошибка IndentationError в программе на Python

Почему выдаёт ошибку?

s=0
k=0
n=int(input())
while n!=0:
        s+=1
        if n%2==0:
         k+=n
    n=int(input())
print(k)
print(s)

Вывод: File "/home/main.py", line 8 n=int(input()) ^ IndentationError: unindent does not match any outer indentation level

Решение

В Python вложенность блоков задаётся отступами, и отступ в каждом блоке должен быть одинаковым.

Смотрим отступы в строках внутри цикла while:

  • строки и (s+= и if n%==:) написаны с отступом пробелов;
  • строка (k+=n) написана с отступом пробелов, это тело if;
  • строка (n=int(input())) написана с отступом пробела.

Когда интерпретатор доходит до строки , он выходит из блока if и ищет уровень отступа, который уже был раньше. Таких уровней три: , и . Отступа в пробела среди них нет, поэтому он пишет: «unindent does not match any outer indentation level» (отступ не совпадает ни с одним из внешних уровней).

Чтобы исправить, нужно сделать отступы согласованными: тело while — пробела, тело if — пробелов, а n=int(input()) должна стоять на одном уровне с s+= и if, то есть тоже с отступом пробела.

Исправленная программа:

s=
k=
n=int(input())
while n!=:
    s+=
    if n%==:
        k+=n
    n=int(input())
print(k)
print(s)

Здесь n=int(input()) на одном уровне с s+=, поэтому читается на каждом шаге цикла. k+=n с отступом глубже, чем if, выполняется только для чётных n.

💡 Почему так

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

Ответ
✓ dzmen.ru

Ошибка из-за неровных отступов: тело if сдвинуто на пробелов, а строка n=int(input()) на , и такого уровня отступа раньше не было. Нужно поставить отступы: в теле while — по пробела (s+=, if, n=int(input())), в теле if — пробелов (k+=n).

Помогло?

Есть ещё задание?Сфоткай, и ДЗмэн решит за пару секунд.

Решить по фото