IndentationError: unindent no coincide con ningún nivel de sangría exterior, aunque la sangría parece correcta

4 minutos de lectura

avatar de usuario de cbrulak
cbrulak

Cuando compilo el código de Python a continuación, obtengo

IndentationError: unindent no coincide con ningún nivel de sangría exterior


import sys

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

¿Por qué?

  • Tuve el mismo error, pero se me ocurrió sangrar un método. Dirigirte en el código ligeramente a la izquierda, lo que dio este error en la parte inferior de la próximo método después de eso. Entonces, este error puede ocurrir no solo al mezclar tabulaciones y espacios.

    – Profesor Falken

    2 de noviembre de 2012 a las 12:41

  • Estoy usando Sublime Text 3. Tengo un proyecto Django. Arreglé el error usando View > Indentation > Intent Using Spaces

    – abhimanyuaryan

    11 de marzo de 2016 a las 17:08

  • Descubrí que usar IDLE hace que sea mucho más fácil encontrar problemas de sangría. Claramente encontrará errores de sangría que la mayoría de los editores no encontrarán.

    -Dennis Gathagu

    16 de enero de 2020 a las 13:56

  • Sublime 3.2.2: Ver> Sangría> Convertir sangría en espacios: funcionó para mí

    – Impermanencia

    28 de agosto de 2020 a las 5:48

  • Puede ver el problema mirando la fuente de Markdown: tiene pestañas que preceden a las últimas tres líneas. Desafortunadamente, Stack Overflow convierte las pestañas a 4 espacios en el renderizado, por lo que el problema desaparece.

    – wjandrea

    17 de febrero de 2022 a las 3:47


avatar de usuario de psiyum
psiyum

IMPORTANTE:
Los espacios son el método preferido – ver PEP 8 Sangría y ¿Tabulaciones o espacios?. (Gracias a @Siha por esto).

Para Texto sublime usuarios:

Colocar Texto sublime para usar tabulaciones para la sangría:
Vista –> Sangría –> Convertir sangría en tabulaciones

Desmarque la Aplicar sangría usando espacios opción también en el mismo submenú anterior. Esto resolverá inmediatamente este problema.

  • Además, cada vez que use Python, asegúrese de configurar una opción similar en cualquier IDE/Editor de texto que use

    – psiyum

    8 mayo 2014 a las 11:46

  • También en ATOM, Paquetes > Espacios en blanco > Convertir espacios en pestañas y evitará un dolor de cabeza por error de sintaxis de Python.

    – loretoparisi

    11 de marzo de 2015 a las 14:24

  • Los espacios son el método preferido – ver PEP008 Sangría y ¿Tabulaciones o espacios?. Sublime también se puede configurar para hacerlo de esta manera.

    – Si Ha

    6 de enero de 2016 a las 8:00

  • usted dice que los espacios son el método preferido, pero su respuesta le pide a la gente que le pida a sublime que use pestañas en su lugar. estoy confundido

    – consiguió un

    7 julio 2016 a las 10:14

  • @NunoCalaim Bueno, desafortunadamente, eso sucedió después de haber respondido la pregunta. Si está comenzando un nuevo proyecto, utilice la técnica preferida de espacios. Es por eso que hice una edición en negrita para que los recién llegados estén al tanto del descargo de responsabilidad.

    – psiyum

    7 julio 2016 a las 11:42

  • Intenté esto en un archivo con algún error de sangría de tabulación/espacio, pero ningún resultado con un archivo de tabulación incorrecto. ¿alguna idea?

    – Luchux

    16 de marzo de 2012 a las 3:32

  • Tuve un problema con los espacios y el error decía que estaba en la línea 191, pero gracias a tabnanny encontré que el verdadero problema no estaba en esa línea, sino en la línea de arriba.

    – ricar8086

    28 de febrero de 2019 a las 9:49

  • ¡Gracias! Qué gran consejo. El error fue identificado por flake8 en VS Code pero no pudo identificar dónde el problema era que tabnanny lo hizo en un microsegundo.

    –Steve

    26 sep 2019 a las 22:45

avatar de usuario de zdan
zdan

¿Está seguro de que no está mezclando tabulaciones y espacios en su espacio en blanco de sangría? (Eso causará ese error).

Tenga en cuenta que se recomienda que no use pestañas en el código de Python. Ver el guía de estilo. Debe configurar Notepad ++ para insertar espacios para pestañas.

  • Estoy confundido. La respuesta anterior indica cambiar una opción de editor de texto para usar tabulaciones en lugar de espacios.

    – espuela

    8 oct 2015 a las 16:31

  • @BananaCode Mientras use SOLO tabulaciones o SOLO espacios, técnicamente no importa cuál elija. Aunque para python, se prefieren los espacios, vea el enlace al que me referí.

    – zdan

    8 oct 2015 a las 17:54

Avatar de usuario de Dana
Dana

Cada vez que encuentro este error, es porque de alguna manera mezclé tabulaciones y espacios en mi editor.

  • Estoy confundido. La respuesta anterior indica cambiar una opción de editor de texto para usar tabulaciones en lugar de espacios.

    – espuela

    8 oct 2015 a las 16:31

  • @BananaCode Mientras use SOLO tabulaciones o SOLO espacios, técnicamente no importa cuál elija. Aunque para python, se prefieren los espacios, vea el enlace al que me referí.

    – zdan

    8 oct 2015 a las 17:54

avatar de usuario de cbartondock
cbartondock

Si está utilizando Vim, presione escape y luego escriba

gg = G

Este auto lo sangra todo y borrará cualquier espacio que hayas dejado.

¿Ha sido útil esta solución?