La sangría es una característica vital del código legible y mantenible, pero pocos lenguajes la imponen. Python es uno de esos pocos.

Si Python determina que su código tiene una sangría incorrecta, verá el mensaje "Error de sangría" cuando ejecute su código. Pero, ¿cómo solucionas esto y cómo lo previenes en el futuro?

¿Por qué obtiene el error de sangría en Python?

El error "Error de sangría: se esperaba un bloque sangrado" es algo que probablemente verá cuando comience a usar Python por primera vez, especialmente si proviene de otro lenguaje de programación.

los detalles de las reglas de sangría de Python son complejos, pero se reducen a una sola cosa: código de sangría en bloques. Esto se aplica a funciones, cláusulas if, etc. Aquí hay un ejemplo de código de Python con formato incorrecto:

fname = "Gaurav"
nombre = "Siyal"

if fname == "Gaurav" y lname == "Siyal":
imprimir("Eres Gaurav")
demás:
imprimir("Eres otra persona")

Cuando intente ejecutar el código anterior, obtendrá un mensaje como este:

instagram viewer
 Archivo "tmp.py", línea 5
imprimir("Eres Gaurav")
^
Error Tabulación: Se esperaba un bloque tabulado

En su lugar, debe agregar una pestaña o una serie de espacios al comienzo de las dos líneas que representan bloques:

fname = "Gaurav"
nombre = "Siyal"

if fname == "Gaurav" y lname == "Siyal":
imprimir("Eres Gaurav")
demás:
imprimir("Eres otra persona")

Si sangra con espacios, puede usar cualquier número que desee, siempre que sea coherente y sin ambigüedades. La mayoría de los programadores usan dos, cuatro u ocho espacios.

Casos comunes de sangría correcta

Aquí hay algunos ejemplos que puede consultar, para que pueda asegurarse de que está sangrando correctamente.

Si declaraciones

Sangrar el bloque que sigue a un si declaración:

si mi_nombre == "Gaurav":
imprimir("Mi nombre es Gaurav")
volver verdadero

Funciones

El cuerpo de una función es un bloque. Debe sangrar todo este bloque:

def número_mágico():
resultado = 42
resultado devuelto

imprimir número_mágico()

Para bucles

Al igual que con una instrucción if, el cuerpo de un ciclo for debe sangrar un nivel más que la línea que comienza con el por palabra clave:

para i en rango (10):
imprimir (yo)

Asegúrese de que su editor sangra correctamente

La mayoría de los editores de texto modernos admiten la sangría automática del código. Si su editor determina que se debe sangrar una línea de código, agregará tabulaciones o espacios automáticamente.

En espía, las opciones de sangría están disponibles en Herramientas > Preferencias > Código fuente:

Si está usando vim, puede edita tu configuración y usa el sangría automática y opciones relacionadas para configurar la sangría. Por ejemplo, aquí hay una configuración común:

establecer sangría automática
establecer pestaña expandible
establecer tabulación = 4
establecer softtabstop=4
establecer shiftwidth=4

Esto sangrará automáticamente usando cuatro espacios.

Sin embargo, ningún editor puede hacer que la sangría automática sea a prueba de balas. Aún deberá prestar atención a la sangría porque algunos casos son ambiguos:

En este ejemplo, el último regreso La instrucción tiene una sangría de un nivel desde la firma de la función en la primera línea. Sin embargo, si coloca el cursor al final de la penúltima línea y presiona Ingresar, una de dos cosas puede suceder. Su editor podría posicionar el cursor:

  1. Dos niveles de sangría alineados con "res =..."
  2. Un nivel de sangría adentro, alineado con "else:"

Su editor no puede distinguir entre estos dos casos: es posible que desee agregar más código en el bloque if/else, o puede que no.

Manejo del error "Se esperaba un bloque con sangría" de Python

Los errores son una ocurrencia diaria en Python, al igual que en cualquier otro lenguaje de programación. Las reglas estrictas de Python sobre la sangría pueden agregar un nuevo tipo de error en el que pensar, pero son útiles. El código correctamente sangrado es más legible y consistente entre los equipos.

El error de sangría no es el único con el que tendrás que lidiar. Es útil estar familiarizado con los errores comunes de Python para saber cómo depurarlos y qué hacer para solucionarlos.

¿Qué significa el error "Índice de lista fuera de rango" de Python?

Leer siguiente

CuotaPíoCuotaCorreo electrónico

Temas relacionados

  • Programación
  • Pitón

Sobre el Autor

Gaurav Siyal (64 artículos publicados)

Gaurav Siyal tiene dos años de experiencia en redacción, escribiendo para una serie de firmas de marketing digital y documentos del ciclo de vida del software.

Más de Gaurav Siyal

Suscríbete a nuestro boletín

¡Únase a nuestro boletín para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse