CAP 03 · LEC 05·Control de flujo

while, break y continue: bucles basados en condición

while ejecuta mientras una condición sea verdadera. break y continue controlan el flujo con precisión quirúrgica. La cláusula `else` del while es el detalle que sorprende a todos.

● PRINCIPIANTE6 min lectura3 ejerciciospor Fernando Herrera · actualizado mayo de 2026
¿Encontraste un error o algo que mejorar?Editá esta lección en GitHub →

while básico

while repite un bloque mientras una condición sea verdadera. Úsalo cuando no sabes cuántas veces hay que iterar — cuando el número de iteraciones depende de algo que cambia durante la ejecución:

# Contador con while contador = 0 while contador < 5: print(f"Contador: {contador}") contador += 1 print("Fin del bucle") # Validación de entrada (patrón clásico de while) # numero = int(input("Ingresa un número positivo: ")) # while numero <= 0: # numero = int(input("Debe ser positivo, intenta de nuevo: ")) # print(f"Recibido: {numero}") # Bucle infinito controlado (patrón de menú) activo = True iteracion = 0 while activo: iteracion += 1 if iteracion >= 3: activo = False # condición de salida print(f"Terminó después de {iteracion} iteraciones")
SalidaContador: 0 Contador: 1 Contador: 2 Contador: 3 Contador: 4 Fin del bucle Terminó después de 3 iteraciones
Bucles infinitos

Un while True: sin una condición de salida (break o una variable de control) colgará el programa para siempre. Asegúrate siempre de que el bucle tenga una forma de terminar.

break para salir del bucle

break termina el bucle inmediatamente, sin importar si la condición sigue siendo verdadera:

# Buscar el primer número divisible por 7 entre 1 y 100 for n in range(1, 101): if n % 7 == 0: print(f"Primer múltiplo de 7: {n}") break # salir del for al encontrarlo # Juego de adivinar el número secreto = 42 intentos = [30, 50, 42, 10] # simulamos las entradas for intento in intentos: if intento == secreto: print(f"¡Correcto! El número era {secreto}") break elif intento < secreto: print(f"{intento} es muy bajo") else: print(f"{intento} es muy alto") # break también funciona en while valor = 100 while True: if valor <= 1: break valor //= 2 print(valor, end=" ") print()
SalidaPrimer múltiplo de 7: 7 30 es muy bajo 50 es muy alto ¡Correcto! El número era 42 50 25 12 6 3 1

continue para saltar iteraciones

continue salta el resto del bloque para la iteración actual y pasa directamente a la siguiente:

# Imprimir solo los números impares for n in range(1, 11): if n % 2 == 0: continue # saltar los pares print(n, end=" ") print() # Filtrar entradas inválidas datos = [10, None, 25, -5, None, 30, 0] total = 0 for dato in datos: if dato is None or dato <= 0: continue # ignorar valores inválidos total += dato print(f"Total de valores válidos: {total}") # 65 # Procesar solo usuarios activos usuarios = [ {"nombre": "Ana", "activo": True}, {"nombre": "Carlos", "activo": False}, {"nombre": "Beatriz", "activo": True}, ] for usuario in usuarios: if not usuario["activo"]: continue print(f"Procesando a {usuario['nombre']}")
Salida1 3 5 7 9 Total de valores válidos: 65 Procesando a Ana Procesando a Beatriz

La cláusula else del while

Python tiene una cláusula else para los bucles while (y for) que se ejecuta solo si el bucle terminó naturalmente (sin break). Es ideal para implementar búsquedas:

# Buscar un elemento en una lista con while/else lista = [10, 25, 7, 42, 3] objetivo = 99 indice = 0 while indice < len(lista): if lista[indice] == objetivo: print(f"Encontrado en índice {indice}") break indice += 1 else: # Este bloque solo se ejecuta si while terminó sin break print(f"{objetivo} no está en la lista") # El mismo patrón con for/else primos_candidatos = [15, 16, 17, 18, 19] for n in primos_candidatos: for divisor in range(2, n): if n % divisor == 0: print(f"{n} no es primo (divisible por {divisor})") break else: # Solo si el for interno terminó sin break print(f"{n} es primo")
Salida99 no está en la lista 15 no es primo (divisible por 3) 16 no es primo (divisible por 2) 17 es primo 18 no es primo (divisible por 2) 19 es primo
while/else: el detalle que sorprende

La cláusula else de un bucle es una característica exclusiva de Python. El bloque else se ejecuta cuando la condición del while se vuelve False, pero NO cuando se sale con break. Es la forma idiomática de distinguir «bucle terminó normalmente» de «bucle terminó por condición especial».

Practica

Tres ejercicios para dominar los bucles condicionales.