Как исправить ошибку «неожиданный отступ» в Python?
python
syntax-error
Macintosh Fan
источник
источник
Ответы:
Python использует интервал в начале строки, чтобы определить, когда блоки кода начинаются и заканчиваются. Вы можете получить следующие ошибки:
Неожиданный отступ. Эта строка кода имеет больше пробелов в начале, чем предыдущая, но предыдущая не является началом подблока (например, оператор if / while / for). Все строки кода в блоке должны начинаться с одной и той же строки пробелов. Например:
Это особенно часто встречается при интерактивном запуске Python: убедитесь, что вы не добавляете лишних пробелов перед своими командами. (Очень раздражает при копировании и вставке кода примера!)
Unindent не соответствует ни одному внешнему уровню отступа. Эта строка кода имеет меньше пробелов в начале, чем предыдущая, но в равной степени не соответствует ни одному другому блоку, частью которого она могла бы быть. Python не может решить, куда он пойдет. Например, в дальнейшем предполагается, что окончательный вывод должен быть частью предложения if или нет?
Ожидается блок с отступом. Эта строка кода имеет такое же количество пробелов в начале, что и предыдущая, но ожидалось, что последняя строка запустит блок (например, оператор if / while / for, определение функции).
Если вы хотите функцию , которая ничего не делает, использовать «не-оп» команду пропуск :
Разрешено смешивание табуляции и пробелов (по крайней мере, в моей версии Python), но Python предполагает, что длина табуляции 8 символов, что может не соответствовать вашему редактору. Просто скажите «нет» вкладкам. Большинство редакторов позволяют автоматически заменять их пробелами.
Лучший способ избежать этих проблем - всегда использовать постоянное количество пробелов при отступе во вложенном блоке и в идеале использовать хорошую среду IDE, которая решает проблему за вас. Это также сделает ваш код более читабельным.
источник
except
частиtry
предложения. Код выглядит правильно (в том смысле, что строка без отступа должна находиться за пределамиtry
блока), но Python сообщает об этом как об ошибке «неожиданного отступа». Это исправлено добавлениемexcept
, возможно, использованиемpass
(как здесь )В Python очень важен интервал, он дает структуру ваших блоков кода. Эта ошибка возникает, когда вы нарушаете структуру кода, например, так:
В вашем файле также может быть сочетание табуляции и пробелов.
Я предлагаю вам использовать редактор с поддержкой синтаксиса Python, например PyScripter или Netbeans.
источник
Запустите свой код с параметром -tt, чтобы узнать, используете ли вы табуляции и пробелы непоследовательно.
источник
Включите видимые пробелы в любом редакторе, который вы используете, и включите замену вкладок пробелами.
Хотя вы можете использовать вкладки с Python, смешивание вкладок и пробелов обычно приводит к ошибке, с которой вы столкнулись. Замена табуляции на 4 пробела - рекомендуемый подход для написания кода Python.
источник
Используя правильный отступ. Python учитывает пробелы, поэтому вам нужно следовать его инструкциям по отступам для блоков, иначе вы получите ошибки с отступами.
источник
Если вы пишете Python с использованием Sublime и получаете ошибки с отступом,
вид -> отступ -> преобразовать отступ в пробелы
Проблема, которую я описываю, вызвана текстовым редактором Sublime. Та же проблема может быть вызвана и другими редакторами. По сути, проблема связана с тем, что Python хочет обрабатывать отступы с точки зрения пробелов, в отличие от различных редакторов, кодирующих отступы с точки зрения вкладок.
источник
Убедитесь, что вы используете в редакторе опцию «вставлять пробелы вместо табуляции». Затем вы можете выбрать ширину табуляции, например, 4. Вы можете найти эти параметры в gedit в разделе «Правка» -> «Настройки» -> «Редактор».
нижняя строка: ИСПОЛЬЗУЙТЕ ПРОБЕЛЫ, а не вкладки
источник
Эта ошибка также может возникнуть при вставке чего-либо в интерпретатор Python (терминал / консоль).
Обратите внимание, что интерпретатор интерпретирует пустую строку как конец выражения, поэтому, если вы вставите что-то вроде
интерпретатор будет интерпретировать пустую строку перед
y = 7
как конец выражения, то есть, что вы закончили определение своей функции, а следующая строка -y = 7
будет иметь неправильный отступ, потому что это новое выражение.источник
Одна проблема, о которой, похоже, не упоминалось, заключается в том, что эта ошибка может возникнуть из-за проблемы с кодом, который не имеет ничего общего с отступами.
Например, возьмем следующий сценарий:
Это возвращает,
IndentationError: unexpected unindent
когда проблема, конечно же, заключается в отсутствииexcept:
оператора.Моя точка зрения: проверьте код выше, в котором сообщается о неожиданном (не) отступе!
источник
Если отступ выглядит нормально, посмотрите, есть ли в вашем редакторе опция «Просмотр пробелов». Включение этого должно позволить найти смешанные пробелы и табуляции.
источник
У меня всегда срабатывала уловка:
Если у вас возник неожиданный отступ и вы видите, что весь код имеет идеальный отступ, попробуйте открыть его в другом редакторе, и вы увидите, какая строка кода не имеет отступа.
Это случилось со мной, когда я использовал vim, gedit или подобные редакторы.
Попробуйте использовать только 1 редактор для своего кода.
источник
Просто скопируйте свой скрипт и поместите под "" "весь код" "" ...
укажите эту строку в переменной .. например,
теперь выполните этот код в Sublime Editor, используя ctrl + b, теперь он будет печатать код с отступом в консоли. Это оно
источник
Все, что вам нужно сделать, это удалить пробелы или табуляции в начале следующих кодов
источник
Выполните следующую команду, чтобы решить эту проблему:
Это обновит ваш код и решит все ошибки отступов :)
Надеюсь, это решит
источник
Notepad ++ давал правильное пространство вкладки, но проблема с отступом была наконец обнаружена в текстовом редакторе Sublime.
Используйте редактор Sublime text и переходите построчно
источник
Отступы в Python важны, и это просто не для читабельности кода, в отличие от многих других языков программирования. Если в вашем коде есть пробелы или табуляция между последовательными командами, python выдаст эту ошибку, поскольку Python чувствителен к этому. Мы, вероятно, получим эту ошибку, когда скопируем и вставим код на любой Python. Обязательно определите и удалите эти пробелы с помощью текстового редактора, такого как Notepad ++, или вручную удалите пробелы из строки кода, в которой возникает ошибка.
Спасибо!
источник