8

IndentationError: неверный отступ, не соответствует ни одному уровню внешнего отступа, хотя отступ выглядит корректно

1

Описание проблемы:

Я столкнулся с ошибкой при компиляции следующего кода на Python:

IndentationError: unindent does not match any outer indentation level

Вот сам код:

import sys

def Factorial(n): # Возвращает факториал
    result = 1
    for i in range(1, n):
        result = result * i
    print "факториал равен", result
    return result

Мне интересно, почему возникает эта ошибка? Как её можно исправить?

5 ответ(ов)

8

Одна из возможных причин этой ошибки может заключаться в том, что в вашем коде используются пробелы в сочетании с табуляцией для отступов. Попробуйте выполнить поиск и замену, чтобы все табуляции заменить на несколько пробелов.

Попробуйте следующий код:

import sys

def Factorial(n):  # возвращает факториал
    result = 1
    for i in range(1, n):
        result = result * i
    print("factorial is", result)
    return result

print(Factorial(10))

Обратите внимание на исправленный синтаксис print, который теперь соответствует стандартам Python 3. Также учтите, что в цикле for в range следует указать n+1, чтобы учесть значение n.

1

Чтобы легко проверить наличие проблем с табуляцией и пробелами, вы можете выполнить следующую команду:

python -m tabnanny yourfile.py

Или, конечно, вы можете просто правильно настроить свой редактор 😃

0

Судя по моему опыту, когда я сталкивался с этой ошибкой, это всегда было связано с тем, что я каким-то образом перепутал табуляции и пробелы в своем редакторе. Убедитесь, что вы используете однотипное форматирование, чтобы избежать подобных проблем.

0

Если вы используете Vim, нажмите клавишу Esc, а затем введите

gg=G

Эта команда автоматически отформатирует (переведёт в отступы) весь текст в вашем файле и устранит лишние пробелы, которые вы могли вставить.

0

Если вы используете редактор IDLE для Python, можете следовать следующим шагам, как предлагается в одном из похожих сообщений об ошибках:

  1. Выберите весь код, например, с помощью сочетания клавиш Ctrl + A.

  2. Перейдите в меню "Формат" (Format) и выберите "Убрать табуляцию" (Untabify Region).

  3. Дважды проверьте, что отступы вашего кода остались корректными, сохраните изменения и запустите программу заново.

Я использую Python 2.5.4.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь