Как исправить ошибку "неожиданный отступ" в python?
Что делать с "Неожиданным отступом" в python?
Ответ 1
Python использует интервал в начале строки, чтобы определить, когда начинаются и заканчиваются блоки кода. Ошибки, которые вы можете получить, следующие:
Неожиданный отступ. Эта строка кода имеет больше пробелов в начале, чем предыдущая, но первая из них не является началом субблока (например, если /while/for statement). Все строки кода в блоке должны начинаться с точно такой же строки пробелов. Например:
>>> def a():
... print "foo"
... print "bar"
IndentationError: unexpected indent
Это особенно часто встречается при запуске python в интерактивном режиме: убедитесь, что вы не добавляете лишних пробелов перед вашими командами. (Очень раздражает код примера копирования и вставки!)
>>> print "hello"
IndentationError: unexpected indent
Unindent не соответствует внешнему уровню отступа. Эта строка кода имеет меньше пробелов в начале, чем предыдущая, но в равной степени она не соответствует какому-либо другому блоку, в котором она может быть частью. Python не может решить, куда он идет. Например, в следующем, является ли окончательный отпечаток, который должен быть частью предложения if, или нет?
>>> if user == "Joey":
... print "Super secret powers enabled!"
... print "Revealing super secrets"
IndendationError: unindent does not match any outer indentation level
Ожидаемый отложенный блок. Эта строка кода имеет такое же количество пробелов в начале, что и раньше, но последняя строка должна была запускать блок (например, if/while/for утверждение, определение функции).
>>> def foo():
... print "Bar"
IndentationError: expected an indented block
Если вам нужна функция, которая ничего не делает, используйте команду "no-op" pass:
>>> def foo():
... pass
Смешивание вкладок и пробелов разрешено (по крайней мере, в моей версии Python), но Python предполагает, что вкладки имеют длину 8 символов, что может не совпадать с вашим редактором. Просто скажите "нет" вкладкам.. Большинство редакторов позволяют автоматически заменять их пробелами.
Лучший способ избежать этих проблем - всегда использовать согласованное количество пробелов, когда вы отступаете подблоком, и в идеале используйте хорошую среду IDE, которая решает проблему для вас. Это также сделает ваш код более удобочитаемым.
Ответ 2
В Python интервал очень важен, это дает структуру ваших блоков кода. Эта ошибка возникает, когда вы испортите структуру кода, например, следующим образом:
def test_function() :
if 5 > 3 :
print "hello"
В вашем файле также может быть сочетание вкладок и пробелов.
Я предлагаю вам использовать редактор с поддержкой синтаксиса python, например PyScripter, или Netbeans
Ответ 3
Запустите свой код с помощью опции -tt, чтобы узнать, используете ли вы табуляции и пробелы непоследовательно
Ответ 4
Включить видимые пробелы в любом редакторе, который вы используете, и включить замену вкладок пробелами.
В то время как вы можете использовать вкладки с вкладками микширования Python, и пространство обычно приводит к ошибке, которую вы испытываете. Замена вкладок на 4 пробела - рекомендуемый подход для написания кода Python.
Ответ 5
Используя правильный отступ. Python - это пробел, поэтому вам нужно следовать его указаниям отступов для блоков или вы получите ошибки отступов.
Ответ 6
Если вы пишете Python с использованием Sublime и получаете ошибки отступов,
view → indentation → конвертировать отступы в пробелы
Проблема, которую я описываю, вызвана редактором Sublime. Та же проблема может быть вызвана и другими редакторами. По сути, проблема связана с Python, желающим обрабатывать отступы в терминах пробелов и разных редакторов, кодирующих отступы в терминах вкладок.
Ответ 7
Убедитесь, что в вашем редакторе используется опция "вставить пробелы вместо вкладок". Затем вы можете выбрать, какую ширину табуляции, например 4. Вы можете найти эти параметры в gedit в редакторе → настройки → editor.
нижняя строка: USE SPACES не вкладки
Ответ 8
Эта ошибка также может возникать при вставке чего-либо в интерпретатор Python (терминал/консоль).
Обратите внимание, что интерпретатор интерпретирует пустую строку как конец выражения, поэтому, если вы вставляете что-то вроде
def my_function():
x = 3
y = 7
интерпретатор интерпретирует пустую строку до y = 7
как конец выражения, т.е. что вы закончили определение своей функции, а следующая строка - y = 7
будет иметь неправильный отступ, потому что это новое выражение.
Ответ 9
Есть трюк, который всегда работал у меня:
Если у вас есть и неожиданный отступ, и вы видите, что весь код отлично отступом, попробуйте открыть его другим редактором, и вы увидите, какая строка кода не имеет отступ.
Это случилось со мной, когда вы использовали vim, gedit или редакторы вроде этого.
Попробуйте использовать только 1 редактор для вашего кода.
Ответ 10
Просто скопируйте script и поставьте под "" весь ваш код "" "...
укажите эту строку в переменной.. like,
a = """ your python script """
print a.replace('here please press tab button it will insert some space"," here simply press space bar four times")
# here we replacing tab space by four char space as per pep 8 style guide..
теперь выполните этот код, в Sublime Editor, используя ctrl + b, теперь он будет печатать отступы в консоли. что он
Ответ 11
Если отступы выглядят нормально, посмотрите, есть ли в вашем редакторе опция "View Whitespace". Включение этого параметра должно позволять находить места, где смешиваются пробелы и вкладки.
Ответ 12
Notepad ++ дал поле вкладки правильно, но проблема с отступом была наконец найдена в текстовом редакторе Sublime.
Используйте Sublime текстовый редактор и перейдите по строкам
Ответ 13
Одна проблема, которая, кажется, не была упомянута, состоит в том, что эта ошибка может возникать из-за проблемы с кодом, который не имеет ничего общего с отступом.
Например, возьмите следующий скрипт:
def add_one(x):
try:
return x + 1
add_one(5)
Это возвращает IndentationError: unexpected unindent
когда проблема, конечно, отсутствует, except:
Моя точка зрения: проверьте код выше, где сообщается о неожиданном (не) отступе!
Ответ 14
Все, что вам нужно сделать, это удалить пробелы или табуляции из начала следующих кодов
from django.contrib import admin
# Register your models here.
from .models import Myapp
admin.site.register(Myapp)
Ответ 15
Отступы в Python важны, и это просто не для удобства чтения кода, в отличие от многих других языков программирования. Если в вашем коде есть пробел между последовательными командами, python выдаст эту ошибку. Мы, вероятно, получим эту ошибку, когда будем копировать и вставлять код в любой Python. Убедитесь, что идентифицировали и удалили эти пробелы с помощью текстового редактора, такого как Notepad++, или удалите пробелы вручную из строки кода, в которой вы получаете сообщение об ошибке.
Step1 :Gives error
L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
print(L[2: ])
Step2: L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]print(L[2: ])
Step3: No error after space was removed
L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
print(L[2: ])
OUTPUT: [[7, 8, 9, 10]]
Спасибо!