Когда я компилирую код 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
Почему?
python
indentation
cbrulak
источник
источник
View > Indentation > Intent Using Spaces
Ответы:
Другие постеры, вероятно, правильные ... могут быть пробелы, смешанные с вашими вкладками. Попробуйте выполнить поиск и заменить, чтобы заменить все вкладки несколькими пробелами.
Попробуй это:
источник
ВНИМАНИЕ : Пробелы предпочтительный метод - см PEP008 Отступ и табуляции или пробелы?, (Спасибо @Siha за это.)
За
Sublime Text
пользователей:Установите
Sublime Text
для использования вкладок для отступа:View
->Indentation
->Convert Indentation to Tabs
Снимите
Indent Using Spaces
флажок и в том же подменю выше. Это немедленно решит эту проблему.источник
Чтобы легко проверить наличие проблем с табуляцией / пробелами, вы можете сделать это:
или вы можете просто правильно настроить редактор :-)
источник
Вы уверены, что не смешиваете табуляции и пробелы в пустом пространстве отступа? (Это приведет к этой ошибке.)
Обратите внимание, что вы не должны использовать вкладки в коде Python. Смотрите руководство по стилю . Вы должны настроить Notepad ++ для вставки пробелов для вкладок.
источник
Всякий раз, когда я сталкивался с этой ошибкой, это потому, что я как-то перепутал табуляции и пробелы в моем редакторе.
источник
Если вы используете редактор IDLE в Python, вы можете сделать то, что предлагает в одном из похожих сообщений об ошибках:
1) выбрать все, например Ctrl+A
2) Перейти в Формат -> Untabify Region
3) Проверьте правильность отступов, сохраните и перезапустите программу.
Я использую Python 2.5.4
источник
Если вы используете Vim, нажмите escape и наберите
гг = G
Это авто выравнивает все и очищает любые пробелы, которые вы добавили.
источник
Строка:
result = result * i
должна быть с отступом (это тело цикла for).Или - у вас смешанные символы пробела и табуляции
источник
На атом
перейти к
Затем проверьте еще раз отступ файла:
или
источник
Выглядит как проблема с отступами. Вам не нужно сопоставлять фигурные скобки в Python, но вы делаете должны соответствовать уровней отступа.
Лучший способ предотвратить проблемы с пробелами и табуляцией - это отображать невидимые символы в вашем текстовом редакторе. Это позволит вам быстро предотвратить и / или устранить ошибки, связанные с отступами.
Кроме того, внедрение кода с вставленной копией является распространенным источником проблем такого типа.
источник
Если вы используете notepad ++, выполните «замену» расширенным режимом поиска, чтобы найти \ t, и замените его четырьмя пробелами.
источник
для пользователей Atom,
Packages ->whitspace -> remove trailing whitespaces
это сработало для меняисточник
Просто дополнение. У меня была похожая проблема с обоими отступами в Notepad ++.
Внешний уровень отступа
Перейдите на ----> вкладку Поиск ----> нажмите на замену ----> нажмите кнопку с зависимой фиксацией, расположенную ниже ---> Теперь замените \ t на четыре пробела
Перейдите на ----> вкладку Поиск ----> нажмите на замену ----> нажмите кнопку с зависимой фиксацией Расширенные возможности ---> Теперь замените \ n ничем
источник
Я использовал ноутбук Jupyter и испробовал почти все вышеперечисленные решения (адаптируясь к моему сценарию), которые оказались бесполезными. Затем я пошел построчно, удалил все пробелы для каждой строки и заменил табуляцией. Это решило проблему.
источник
Для пользователей Spyder выберите Source> Fix Indentation, чтобы немедленно решить проблему
источник
Это может быть из-за того, что функция над ней не имеет одинакового отступа. т.е.
источник
У меня вчера была та же проблема, это была ошибка отступа, я использовал возвышенный текстовый редактор. я потратил много времени, пытаясь это исправить, и в конце концов я скопировал код в текстовый редактор VI, и он просто работал нормально. ps python слишком чувствителен к пробелам, не смешивайте пробел и табуляцию.
источник
Поскольку я понимаю, что нет конкретного ответа
spyder
, я добавлю один: в основном, внимательно посмотрите на вашеif
утверждение и убедитесь, что всеif
,elif
иelse
имеют одинаковый интервал, что они находятся в одной строке в начале следующим образом:источник
Я определил функцию, но у нее не было никакого контента, кроме комментариев к функции ...
Он кричал:
(обратите внимание, что линия, на которую
^
указывает отметка, пуста)-
Несколько решений:
1: Просто закомментируйте функцию
2: Добавить функциональный комментарий
3: Добавить строку, которая ничего не делает
В любом случае, сделайте очевидным, почему это пустая функция - для себя или для ваших коллег, которые будут использовать ваш код
источник
Во-первых, просто чтобы напомнить вам, что есть логическая ошибка, вам лучше оставить результат = 1, иначе ваш результат будет равен = 0 даже после запуска цикла.
Во-вторых, вы можете написать это так:
Выход из строки сообщит оболочке python, что операторы FOR закончились. Если у вас есть опыт использования оболочки Python, вы можете понять, почему мы должны оставить строку.
источник
Из-за чего стоит моя строка документации слишком много отступов, и это также выдает ту же ошибку
IndentationError: unindent does not match any outer indentation level
источник
Это потому, что есть перепутывание как вкладок, так и пробелов. Вы можете удалить все пробелы и заменить их на вкладки.
Или попробуйте написать это:
в начале кода. Эта строка разрешает любые различия между символами табуляции и пробелами.
источник
в моем случае проблема была в настройке pydev на Eclipse
источник
Если вы используете редактор Komodo, вы можете сделать то, что предлагает в одном из похожих сообщений об ошибках:
1) выберите все, например, Ctrl + A
2) Перейти к коду -> Untabify Region
3) Проверьте правильность отступов, сохраните и перезапустите программу.
Я использую Python 3.4.2
источник
Если вы используете Sublime text для разработки на python, вы можете избежать ошибки, используя пакет Anaconda. После установки Anaconda,
источник
В intellij с плагином python, Ctrl + Shift + Alt для переформатирования документа исправили проблему отступа / табуляции / пробелов
источник
Для пользователей SPYDER : я использую spyder 3.3.2 с python 3.7.1, и я решил эту проблему, установив отступ для использования вкладок, выполнив следующие шаги:
Затем я сбросил «неопознанную» строку, используя клавишу табуляции.
Почему-то без этой настройки я иногда получал призрачный IndentationError.
источник
Например:
В этом коде та же самая ситуация произошла для меня. Просто удалите предыдущие отступы в строках 2 и 3, а затем используйте табуляцию или пробел. Никогда не используйте оба . Дайте правильный отступ при написании кода на Python. Для Spyder перейдите в Source> Fix Indentation. То же самое касается кода VC и возвышенного текста или любого другого редактора. Исправьте отступ.
источник
Это происходит главным образом из-за редактора. Попробуйте изменить табуляцию на пробелы (4). Лучшая среда разработки, дружественная Python, или Editors - это pycharm, sublime, vim для linux.
даже я тоже сталкивался с той же проблемой, позже я обнаружил, что есть проблема с кодировкой. Я предлагаю вам слишком изменить ваш редактор.
источник