Подтвердить что ты не робот

Что делать с "Неожиданным отступом" в python?

Как исправить ошибку "неожиданный отступ" в python?

4b9b3361

Ответ 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]]

Спасибо!