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:
break— sale del bucle inmediatamente.continue—omiteel resto del cuerpo y salta a la siguiente iteración.else(en el bucle) — se ejecuta cuando el bucle termina sin unbreak.
break
for n in [3, 7, 11, 4, 9]:
if n % 2 == 0:
primo_pari = n
break
primo_pari # 4break detiene el bucle lo antes posible. Cualquier cosa después de break en el
cuerpo de la iteración actual NO se ejecuta.
continue
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:
target = 7
for n in [2, 4, 6, 8]:
if n == target:
trovato = True
break
else:
trovato = False
trovato # FalseLé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
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ú
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.
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
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.
Mostrar pista
Si n es par, continue; de lo contrario append.
Solución disponible después de 3 intentos
Desafío adicional
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`.
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