Hamburger Icon
Python y el bucle for/else

Python y el bucle for/else

Hay muchas cosas que diferencian a Python de otros lenguajes, como la particularidad del bucle for/else. En este post vemos cómo funciona y cuándo usarlo.

El bucle for/else tiene este aspecto:

for item in iterable:
    # ...
else:
    # Se ejecuta al final

El código que metemos dentro de la cláusula else se ejecutará una vez finalice el bucle, siempre y cuando no se haya ejecutado la sentencia break dentro del mismo.

Por lo tanto, si no tenemos intención de usar el comando break, la cláusula else pierde su sentido. Estos dos códigos hacen exactamente lo mismo:

numeros = [1, 2, 3, 4]

for n in numeros:
    print(n)
else:
    print("final del bucle")
numeros = [1, 2, 3, 4]

for n in numeros:
    print(n)

print("final del bucle")

Ahora bien, podemos usar un bucle for/else cuando tengamos que hacer algún tipo de comprobación o búsqueda en un iterable y necesitemos ejecutar una parte del código dependiendo del cumplimiento de algunas condiciones. Mira:

def check_pares(lista_numeros:list) -> None:
    for n in lista_numeros:
        if n % 2 == 0:
            print("Número par encontrado: {}".format(n))
            break
    else:
        print("No se han encontrado números pares")

numeros = [1,3,5,7]
numeros_2 = [1,3,4,5]
numeros_3 = []

check_pares(numeros) # No se han encontrado números pares
check_pares(numeros_2) # Número par encontrado: 4
check_pares(numeros_3) # No se han encontrado números pares

¿Vas viendo cuándo puede ser útil un bucle for/else?

Es muy útil sobre todo cuando estamos buscando un elemento en una lista y usamos break al encontrarlo. Usaremos la cláusula else cuando necesitemos saber si el bucle se ha completado (elemento no encontrado) o se ha interrumpido (elemento encontrado).

Este es uno de los trucos que los principiantes en Python no suelen conocer, ya que no es habitual en otros lenguajes de programación. Siempre va bien conocer estos detalles para poder aprovecharlos cuando la situación lo requiera.