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

Abid Ullah 15 febrero 2024
  1. La regla de sangría en Python
  2. Causas de IndentationError en Python
  3. Solucione el Error de sangría: la eliminación de la sangría no coincide con ningún nivel de sangría exterior en Python
Python IndentationError: Unindent no coincide con ningún nivel de sangría exterior

En el artículo, aprenderemos cómo resolver el Error de sangría que se produce durante la ejecución del código. Veremos las diferentes razones que causan este error.

También encontraremos formas de resolver este error en Python. Comencemos con lo que es el Error de sangría en Python.

La regla de sangría en Python

La sangría es una parte esencial del lenguaje Python. Depende de la sangría para definir bloques de código en su código.

Mientras que la sangría se puede hacer usando espacios y tabulaciones. Es muy fácil para un desarrollador detectar el flujo del código debido a la sangría.

Puede detectar fácilmente dónde comienza y termina un método/condición específico.

Causas de IndentationError en Python

Uso de espacios y tabulaciones

Si usa espacio y tabulación para la sangría en el código de Python, el IDE arrojará un Error de sangría. Si bien este suele ser el caso de estos errores, también pueden aparecer si no usa la sangría en alguna parte del código.

Como mencionamos anteriormente, hay dos formas de sangrar su código: tabulación o espacios. En Python, el estándar de cada nivel de sangría es cuatro espacios o una pestaña.

Si bien esta forma de sangría es la regla de la ley para Python, también es una ayuda visual para los desarrolladores de Python que pueden realizar un seguimiento de sus construcciones de código debido a esta sangría.

Código de ejemplo:

def exploring_indentation():
    number = 9
    if number == 9:
        print("Indentation works like this!")


exploring_indentation()

La salida del código:

Indentation works like this!

Error de sangría debido a una sangría adicional en el código

Otra razón para un Error de sangría puede ser una sangría adicional agregada como en el código de ejemplo a continuación.

Código de ejemplo:

def exploring_indentation():
    number = 9
    if number == 9:
        print("Indentation works like this!")
   else:
        print("this is an example of an unnecessary indent")
exploring_indentation()

La salida del código:

  File "<tokenize>", line 5
    else:
    ^
IndentationError: unindent does not match any outer indentation level

La parte si no del código está dentro de la condición if porque la sangría es incorrecta.

Solucione el Error de sangría: la eliminación de la sangría no coincide con ningún nivel de sangría exterior en Python

Uso consistente de espacios y tabulaciones

Si bien hacer un seguimiento de la sangría suena bastante tedioso, hay editores de código como PyCharm y VS Code que tienen funciones integradas para ayudarlo a realizar un seguimiento de la sangría.

Mientras escribe el código, cuando presiona Enter para pasar a la siguiente línea, el editor sangrará automáticamente su siguiente línea de código.

Además, si mezcla tabulaciones y espacios en su código, siempre puede encontrar la opción de convertir tabulaciones en espacios o viceversa.

Por ejemplo, en PyCharm, debe ir a “Editar” en la esquina superior izquierda, seleccionar la opción “Convertir sangrías” y elegir “A pestañas” o “A espacios” según sus requisitos.

Editando la configuración de Pycharm para corregir el error de sangría

Igualar el nivel de sangría exterior

En el siguiente código dado en el ejemplo, las declaraciones if y elif se asignan sin sangría. Al mismo tiempo, a la declaración else se le asigna una sangría adicional.

Debido a esta sangría adicional en el nivel externo, el compilador de Python no puede reconocer la declaración else y, por lo tanto, genera el Error de sangría (unindent no coincide con ningún nivel de sangría externa).

Código de ejemplo:

a = int(input("Enter an integer A: "))
b = int(input("Enter an integer B: "))
if b > a:
        print("B is greater than A")
elif a == b:
        print("A and B are equal")
    else:
        print("A is greater than B")

La salida del código:

File "<string>", line 7
    else:
        ^
IndentationError: unindent does not match any outer indentation level

Código de ejemplo correcto:

a = int(input("Enter an integer A: "))
b = int(input("Enter an integer B: "))
if b > a:
    print("B is greater than A")
elif a == b:
    print("A and B are equal")
else:
    print("A is greater than B")

Estos problemas se solucionan fácilmente en los editores específicos de Python, ya que están hechos específicamente para mejorar la experiencia de programación sin preocuparse por errores menores como una sangría.

Sin embargo, al usar un Bloc de notas similar a IDE, es posible que desee tener cuidado con las pestañas y los espacios y realizar un seguimiento de la sangría minuciosamente, ya que no señalan estos errores hasta que haya ejecutado el código.

Esperamos que este artículo le resulte útil para comprender cómo solucionar el Error de sangría en Python.

Autor: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn

Artículo relacionado - Python Error