IndentationError: unindent non corrisponde a nessun esterno del livello di rientro

Quando compilo il codice Python sotto, ho

IndentationError: unindent non corrisponde a nessun esterno del livello di rientro


import sys

def Factorial(n): # Return factorial
    result = 0
    for i in range (1,n):
        result = result * i
    print "factorial is ",result
    return result

Perché?

Se non cambia il “risultato = 0′ e ‘risultato = 1’, il fattoriale di non essere… beh… preciso 🙂
e, probabilmente, gamma(1, n+1) sarà meglio, se si desidera includere ‘n’ nei vostri calcoli 🙂
Ho avuto lo stesso errore, ma mi è capitato di rientro di un metodo di modo nel codice leggermente a sinistra, che ha dato questo messaggio di errore in fondo il avanti metodo dopo di esso. Quindi, questo errore può verificarsi non solo dalla miscelazione tabulazioni e spazi.
Sto usando il Sublime Text 3. Ho un Django progetto. Ho risolto l’errore utilizzando View > Indentation > Intent Using Spaces

OriginaleL’autore cbrulak | 2009-01-29

20 Replies
  1. 485

    Altri manifesti sono probabilmente corrette…ci potrebbero essere spazi mescolato con le schede. Prova a fare un search & sostituzione di tutte le schede con pochi spazi.

    Provare questo:

    import sys
    
    def Factorial(n): # return factorial
        result = 1
        for i in range (1,n):
            result = result * i
        print "factorial is ",result
        return result
    
    print Factorial(10)
    sì, ho dovuto davvero spazio per il ciclo interno a parte le ultime due righe (in MODO unico). Non so perché…
    la mia prima linea”, risultato = 0″ (che dovrebbe avere 1, grazie per la correzione) è stato distanziati, mentre il resto era a schede, accidenti, non sapevo che python è stato
    Sì, può essere difficile. Io uso emacs per modificare python, e ho il programma di installazione per sostituire le schede con spazi in py file, quindi non ho questo problema. Notepad++ potrebbe avere un’opzione di questo tipo.
    Avuto lo stesso problema, bancomat :). SublimeText mostra spazi come punti, la sua abbastanza utile.
    grazie, unplain messaggio di errore

    OriginaleL’autore Kevin Tighe

  2. 194

    IMPORTANTE:
    Spazi sono il metodo preferito per – vedere PEP008 Rientro e Tabulazioni o Spazi?. (Grazie a @Siha per questo.)

    Per Sublime Text utenti:

    Set Sublime Text per utilizzare le schede per il rientro:
    View –> Indentation –> Convert Indentation to Tabs

    Deselezionare la Indent Using Spaces opzione nella stessa sotto-menu in alto.
    Questo consentirà di risolvere immediatamente questo problema.

    Anche quando si utilizzano Python, assicurarsi di impostare una opzione simile in qualsiasi IDE/Editor di Testo
    Anche su ATOM, Pacchetti > Spazio > la Conversione di Spazi per Schede e vi permetterà di evitare un Python Errore di Sintassi mal di testa!
    Funziona come un fascino!! grazie!!
    Gli spazi sono il metodo preferito per – vedere PEP008 Rientro e Tabulazioni o Spazi?. Sublime può anche essere impostato per farlo in questo modo.
    si dice spazi sono il metodo preferito di sicurezza la tua risposta chiede alle persone di chiedere sublime per utilizzare le schede, invece! Mi sono confuso

    OriginaleL’autore activatedgeek

  3. 119

    Facilmente verificare la presenza di problemi con schede/spazi si può effettivamente fare questo:

    python -m tabnanny yourfile.py

    o si può semplicemente impostare il vostro editor correttamente: -) ovviamente

    Ho provato questo in un file con qualche scheda/spazio rientro di errore, ma nessun output corretto la scheda file. qualche idea?
    stessa, non è uscita

    OriginaleL’autore André

  4. 33

    Sei sicuro di non mischiare le schede e gli spazi nel vostro rientro spazio bianco? (Che causa l’errore.)

    Nota, si consiglia di non utilizzare le schede in codice Python. Vedere la guida di stile. Si dovrebbe configurare Notepad++ per inserire spazi per le schede.

    Sono confuso. La risposta di sopra di uniti per cambiare un editor di testo opzione per l’utilizzo di schede al posto degli spazi.
    Finché si utilizzano SOLO le schede o SOLO spazi, tecnicamente non importa che si sceglie. Se per python, gli spazi sono preferiti, vedi il link che ho indicato.

    OriginaleL’autore zdan

  5. 15

    Ogni volta che ho incontrato questo errore, è perché ho in qualche modo mescolato tabulazioni e spazi nel mio editor.

    OriginaleL’autore Dana

  6. 9

    Se si utilizza Python di INATTIVITÀ dell’editor si può fare come si suggerisce in uno dei messaggi di errore simili:

    1) selezionare, ad esempio Ctrl + A

    2) Vai su Formato -> Untabify Regione

    3) controllare il tuo rientro è ancora corretta, salvare ed eseguire nuovamente il programma.

    Sto usando Python 2.5.4

    Splendida soluzione. La maggior parte degli editor di utilizzare 4 spazi per le schede.

    OriginaleL’autore Gatica

  7. 7

    Linea: result = result * i dovrebbe essere rientrato (è il corpo del ciclo for).

    O – miste, spazio e i caratteri di tabulazione

    Ho dovuto cambiare l’editing in MODO strano. Vedere il mio aggiornamento “Modifica” che si nota in questione
    Ok, quindi credo che la seconda riga della mia risposta è corretta, hai mescolato spazio e i caratteri di tabulazione (32 e 8 in ASCII, rispettivamente)

    OriginaleL’autore Abgan

  8. 6

    Se si utilizza Vim, premere il tasto escape e quindi digitare

    gg=G

    Questa auto rientri tutto e cancella tutti gli spazi hanno gettato in.

    non un editor di comando.

    OriginaleL’autore cbartondock

  9. 4

    Sembra essere un problema dell’indentazione. Non è necessario abbinare una coppia di parentesi graffe in Python, ma si fare devono corrispondere i livelli di rientro.

    Il modo migliore per evitare di spazio/problemi della scheda è quello di visualizzare i caratteri invisibili all’interno del vostro editor di testo. Questo vi darà un modo rapido per prevenire e/o risolvere il rientro degli errori relativi al.

    Inoltre, l’iniezione di copia-incollato il codice è una fonte comune per questo tipo di problema.

    OriginaleL’autore Matt Kahl

  10. 4

    Se si usa notepad++, fare un “sostituire” con estesa la modalità di ricerca per trovare \t e sostituire con quattro spazi.

    OriginaleL’autore Jackie Lee

  11. 4

    Su Atom

    andare a

    Packages > Whitespace > Convert Spaces to Tabs

    Quindi controllare di nuovo il file di rientro:

    python -m tabnanny yourFile.py

    o

    >python
    >>> help("yourFile.py")

    OriginaleL’autore loretoparisi

  12. 2

    per l’Atomo di Utenti, Packages ->whitspace -> remove trailing whitespaces
    questo ha funzionato per me

    OriginaleL’autore Aha

  13. 1

    Ho avuto lo stesso problema ieri, è stato il rientro di errore, stava usando il sublime text editor. preso le mie ore a cercare di risolvere il problema e alla fine ho finito per copiare il codice in un editor di testo VI e ‘ appena lavorato bene. ps python è troppo spazio sensibile, assicurarsi di non mix di spazi e tab.

    OriginaleL’autore user3731311

  14. 1

    Solo un aggiunta. Ho avuto un problema simile con entrambi i rientri in Notepad++.

    1. Unexcepted rientro
    2. Esterno Del Livello Di Rientro

      Vai a —-> scheda di Ricerca —-> toccare sostituire —-> premete il pulsante di opzione Estesa di seguito:- – – > Ora sostituire \t con quattro spazi

      Vai a —-> scheda di Ricerca —-> toccare sostituire —-> premete il pulsante di opzione Estesa di seguito:- – – > Ora sostituire \n con nulla

    OriginaleL’autore JumpMan

  15. 0

    Potrebbe essere perché la funzione di cui sopra non è rientrato allo stesso modo.
    cioè

    class a:
        def blah:
          print("Hello world")
        def blah1:
          print("Hello world")
    La sintassi dell’esempio di codice non è valido.

    OriginaleL’autore Ali

  16. 0

    Questo è perché c’è un mix di entrambe le schede e gli spazi.
    È possibile rimuovere tutti gli spazi e sostituirli con le schede.

    O,
    Prova a scrivere questo:

    #!/usr/bin/python -tt

    all’inizio del codice. Questa linea consente di risolvere eventuali differenze tra le schede e gli spazi.

    OriginaleL’autore Eragon

  17. 0

    nel mio caso, il problema era la configurazione di pydev su Eclipse

    IndentationError: unindent non corrisponde a nessun esterno del livello di rientro

    OriginaleL’autore Rui Martins

  18. 0

    Se si utilizza l’editor di Komodo si può fare come si suggerisce in uno dei messaggi di errore simili:

    1) selezionare, ad esempio Ctrl + A

    2) Vai al Codice -> Untabify Regione

    3) controllare il tuo rientro è ancora corretta, salvare ed eseguire nuovamente il programma.

    Sto usando Python 3.4.2

    OriginaleL’autore Imtiaz Pabel

  19. 0

    Se si utilizza il Sublime text per sviluppo python,è possibile evitare l’errore utilizzando il pacchetto di Anaconda.Dopo l’installazione Anaconda,

    1. aprire il tuo file in sublime
    2. fare clic destro su spazi aperti
    3. scegliere anaconda
    4. fare clic su formattazione automatica
    5. FATTO O Premere CTRL+ALT+R.

    OriginaleL’autore Kapilfreeman

  20. -3

    anche anch’io avevo riscontrato lo stesso problema , poi ho scoperto che c’è un problema di codifica .suggerisco u cambiano ur editore.
    i migliori python amichevole IDE o gli Editori sono pycharm ,sublime ,vim per linux.

    OriginaleL’autore yunus

Lascia un commento