Como retifico o erro "indentação inesperada" no python?
Como retifico o erro "indentação inesperada" no python?
Respostas:
Python usa espaçamento no início da linha para determinar quando os blocos de código começam e terminam. Os erros que você pode obter são:
Recuo inesperado. Esta linha de código tem mais espaços no início do que a anterior, mas a anterior não é o início de um sub-bloco (por exemplo, instrução if / while / for). Todas as linhas de código em um bloco devem começar exatamente com a mesma string de espaço em branco. Por exemplo:
>>> def a():
... print "foo"
... print "bar"
IndentationError: unexpected indent
Este é especialmente comum ao executar python interativamente: certifique-se de não colocar nenhum espaço extra antes de seus comandos. (Muito irritante ao copiar e colar o código de exemplo!)
>>> print "hello"
IndentationError: unexpected indent
Desfazer recuo não corresponde a nenhum nível de recuo externo. Esta linha de código tem menos espaços no início do que a anterior, mas também não corresponde a nenhum outro bloco do qual poderia fazer parte. Python não consegue decidir para onde vai. Por exemplo, a seguir, a impressão final deve ser parte da cláusula if, ou não?
>>> if user == "Joey":
... print "Super secret powers enabled!"
... print "Revealing super secrets"
IndendationError: unindent does not match any outer indentation level
Esperava um bloco indentado. Esta linha de código tem o mesmo número de espaços no início que a anterior, mas a última linha era esperada para iniciar um bloco (por exemplo, instrução if / while / for, definição de função).
>>> def foo():
... print "Bar"
IndentationError: expected an indented block
Se você quiser uma função que não faça nada, use a passagem de comando "no-op" :
>>> def foo():
... pass
Misturar tabulações e espaços é permitido (pelo menos na minha versão do Python), mas Python assume que as tabs têm 8 caracteres, o que pode não corresponder ao seu editor. Basta dizer "não" às guias. A maioria dos editores permite que eles sejam substituídos automaticamente por espaços.
A melhor maneira de evitar esses problemas é sempre usar um número consistente de espaços ao indentar um subbloco e, de preferência, usar um bom IDE que resolva o problema para você. Isso também tornará seu código mais legível.
Em Python, o espaçamento é muito importante, pois dá a estrutura de seus blocos de código. Este erro ocorre quando você bagunça sua estrutura de código, por exemplo:
def test_function() :
if 5 > 3 :
print "hello"
Você também pode ter uma mistura de tabulações e espaços em seu arquivo.
Eu sugiro que você use um editor com reconhecimento de sintaxe python, como PyScripter ou Netbeans
Ative os espaços em branco visíveis em qualquer editor que você esteja usando e ative substituir tabulações por espaços.
Embora você possa usar guias com Python, misturar guias e espaço geralmente leva ao erro que está ocorrendo. Substituir as guias por 4 espaços é a abordagem recomendada para escrever código Python.
Se você está escrevendo Python usando Sublime e recebendo erros de indentação,
visualizar -> recuo -> converter recuo em espaços
O problema que estou descrevendo é causado pelo editor de texto Sublime. O mesmo problema pode ser causado por outros editores também. Essencialmente, o problema tem a ver com o Python querer tratar indentações em termos de espaços versus vários editores codificando as indentações em termos de guias.
Certifique-se de usar a opção "inserir espaços em vez de tabulações" em seu editor. Em seguida, você pode escolher que deseja uma largura de tabulação, por exemplo 4. Você pode encontrar essas opções no gedit em editar -> preferências -> editor.
linha inferior: USE ESPAÇOS, não guias
Este erro também pode ocorrer ao colar algo no interpretador Python (terminal / console).
Observe que o interpretador interpreta uma linha vazia como o final de uma expressão, então se você colar algo como
def my_function():
x = 3
y = 7
o intérprete interpretará a linha vazia anterior y = 7
como o fim da expressão, ou seja, que você acabou de definir sua função, e a próxima linha - y = 7
terá recuo incorreto porque é uma nova expressão.
Um problema que parece não ter sido mencionado é que esse erro pode surgir devido a um problema com o código que não tem nada a ver com indentação.
Por exemplo, pegue o seguinte script:
def add_one(x):
try:
return x + 1
add_one(5)
Isso retorna um IndentationError: unexpected unindent
quando o problema é, obviamente, uma except:
instrução ausente .
Meu ponto: verifique o código acima onde o inesperado (des) recuo é relatado!
Se a indentação parecer correta, verifique se o seu editor possui a opção "Exibir espaços em branco". Ativar isso deve permitir encontrar onde os espaços e as tabulações estão misturados.
Existe um truque que sempre funcionou para mim:
Se você obteve um recuo inesperado e vê que todo o código está perfeitamente recuado, tente abri-lo com outro editor e você verá qual linha de código não está recuada.
Aconteceu comigo quando usei vim, gedit ou editores assim.
Tente usar apenas 1 editor para o seu código.
Simplesmente copie seu script e coloque em "" "todo o seu código" "" ...
especifique esta linha em uma variável .. como,
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..
agora execute este código, no Sublime Editor usando ctrl + b, agora ele irá imprimir o código indentado no console. é isso aí
Tudo que você precisa fazer é remover os espaços ou espaços de tabulação do início dos seguintes códigos
from django.contrib import admin
# Register your models here.
from .models import Myapp
admin.site.register(Myapp)
Execute o seguinte comando para resolvê-lo:
autopep8 -i <filename>.py
Isso irá atualizar seu código e resolver todos os erros de indentação :)
Espero que isso resolva
O Notepad ++ estava fornecendo o espaço da tabulação correto, mas o problema de indentação foi finalmente encontrado no editor de texto Sublime.
Use o editor de texto Sublime e siga linha por linha
O recuo em Python é importante e não apenas para legibilidade do código, ao contrário de muitas outras linguagens de programação. Se houver algum espaço em branco ou tabulação em seu código entre comandos consecutivos, o python apresentará esse erro, pois o Python é sensível a isso. Provavelmente receberemos esse erro ao copiar e colar o código em qualquer Python. Certifique-se de identificar e remover esses espaços usando um editor de texto como o Notepad ++ ou remova manualmente o espaço em branco da linha de código onde você está obtendo um erro.
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]]
Obrigado!