Вопрос-Ответ

IndentationError: unindent does not match any outer indentation level, although the indentation looks correct [duplicate]

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

Когда я компилирую приведенный ниже код Python, я получаю


IndentationError: unindent не соответствует никакому внешнему уровню отступа



import sys

def Factorial(n): # Return factorial
result = 1
for i in range (1,n):
result = result * i
print "factorial is ",result
return result

Почему?

Переведено автоматически
Ответ 1

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

Попробуйте это:

import sys

def Factorial(n): # return factorial
result = 1
for i in range (1,n):
result = result * i
print "factorial is ",result
return result

print Factorial(10)
Ответ 2

Важно:

Предпочтительный метод - пробелы - см. PEP 8 Отступ и табуляция или пробелы?. (Спасибо @Siha за это.)

Для пользователей Sublime Text:

Настройте Sublime Text на использование табуляций для отступа: меню ВидОтступПреобразовать отступ в табуляцию

Снимите флажок Отступ с использованием пробелов также в том же подменю выше. Это немедленно решит эту проблему.

Ответ 3

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

python -m tabnanny yourfile.py

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

Ответ 4

Вы уверены, что не смешиваете табуляцию и пробелы в вашем пробеле для отступов? (Это вызовет эту ошибку.)

Примечание, рекомендуется не использовать табуляции в коде Python . Смотрите Руководство по стилю . Вы должны настроить Notepad ++ для вставки пробелов для табуляций.

python