Como retifico o erro "indentação inesperada" no python?
python
syntax-error
Ventilador Macintosh
fonte
fonte
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:
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!)
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?
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).
Se você quiser uma função que não faça nada, use a passagem de comando "no-op" :
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.
fonte
except
parte de umatry
cláusula. O código parece correto (no sentido de que a linha semtry
recuo deve estar fora do bloco), mas o Python relata isso como um erro de 'recuo inesperado'. Isso é corrigido adicionandoexcept
, talvez usandopass
(como aqui )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:
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
fonte
Execute seu código com a opção -tt para descobrir se você está usando tabulações e espaços de forma inconsistente
fonte
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.
fonte
Usando recuo correto. Python reconhece espaços em branco, então você precisa seguir suas diretrizes de indentação para blocos ou obterá erros de indentação.
fonte
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.
fonte
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
fonte
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
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.fonte
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:
Isso retorna um
IndentationError: unexpected unindent
quando o problema é, obviamente, umaexcept:
instrução ausente .Meu ponto: verifique o código acima onde o inesperado (des) recuo é relatado!
fonte
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.
fonte
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.
fonte
Simplesmente copie seu script e coloque em "" "todo o seu código" "" ...
especifique esta linha em uma variável .. como,
agora execute este código, no Sublime Editor usando ctrl + b, agora ele irá imprimir o código indentado no console. é isso aí
fonte
Tudo que você precisa fazer é remover os espaços ou espaços de tabulação do início dos seguintes códigos
fonte
Execute o seguinte comando para resolvê-lo:
Isso irá atualizar seu código e resolver todos os erros de indentação :)
Espero que isso resolva
fonte
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
fonte
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.
Obrigado!
fonte