Saltar al contenido principal
eLearner.app
Módulo 2 · Lección 3 de 47/36 en el curso~10 min
Lecciones del módulo (3/4)

break, continue y else en bucles

Dentro de un bucle (tanto for como while) puedes alterar el flujo normal con tres constructores:

  • breaksale del bucle inmediatamente.
  • continueomite el resto del cuerpo y salta a la siguiente iteración.
  • else (en el bucle) — se ejecuta cuando el bucle termina sin un break.

break

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break detiene el bucle lo antes posible. Cualquier cosa después de break en el cuerpo de la iteración actual NO se ejecuta.

continue

Python
risultati = []
for n in range(1, 11):
    if n % 2 == 0:
        continue   # skip evens
    risultati.append(n * n)
risultati  # [1, 9, 25, 49, 81]

Piensa en continue como "ir a la siguiente iteración". Se utiliza para filtrar elementos sin añadir un nivel de indentación adicional.

else en el bucle (idioma Pythonic)

Una peculiaridad de Python: los bucles también pueden tener un else, ejecutado solo si el bucle terminó naturalmente (sin break). Es perfecto para búsquedas:

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

Léelo como: "para cada n en la lista; si tomas la rama del break, omite el else; de lo contrario, ejecuta el else".

Bucles anidados: break sale solo del más interno

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break sale solo del for y, no del for x. Para salir de ambos debes usar una bandera o una función + return.

El inusual constructor loop...else

En Python, tanto los bucles for como while pueden incluir una cláusula opcional else. El bloque else se ejecuta solo si el bucle se completa normalmente (es decir, sin encontrar una instrucción break). Esto es muy útil para algoritmos de búsqueda (ej. "buscar un elemento: si se encuentra, break; de lo contrario, informar que no se encontró").

Pruébalo tú

Ejercicio#python.m2.l3.e1
Intentos: 0Cargando...

Dada la lista `numbers = [10, 15, 20, 25, 30, 35]`, encuentra el primer número divisible por 7 y asígnalo a `result`. Si no existe ninguno, asigna -1.

Cargando editor...
Mostrar pista

35 es el primero (y único) divisible por 7 en la lista.

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#python.m2.l3.e2
Intentos: 0Cargando...

Construye la lista `odd_numbers` con los números impares del 1 al 20 (inclusive) usando un bucle for sobre range(1, 21) y continue para omitir los pares.

Cargando editor...
Mostrar pista

Si n es par, continue; de lo contrario append.

Solución disponible después de 3 intentos

Desafío adicional

Ejercicio#python.m2.l3.e3
Intentos: 0Cargando...

Dada la lista `numbers = [7, 11, 14, 21, 25]`, escribe un bucle `for` para encontrar el primer número que sea divisible por 7 y también estrictamente mayor que 10. Cuando lo encuentres, almacénalo en `found` y sal del bucle usando `break`. Finalmente, evalúa `found`.

Cargando editor...
Mostrar pista

Dentro del bucle, verifica si num % 7 == 0 and num > 10:, asígnalo a found y activa break.

Solución disponible después de 3 intentos