While (bucle condicional)
El bucle while repite un bloque de código mientras una condición sea verdadera. Es la
herramienta ideal cuando no sabés de antemano cuántas veces necesitás repetir algo: simulaciones mes a mes,
validación de datos, reintentos hasta éxito.
Concepto teórico
¿Qué es un bucle while?
Un bucle while ejecuta un bloque de código repetidamente mientras una condición sea True. Cuando la condición se vuelve False, el bucle se detiene y la ejecución continúa con la siguiente línea después del while.
while condición:
# este bloque se repite mientras condición sea True
hacer_algo()
# IMPORTANTE: algo dentro del bloque debe eventualmente
# hacer que la condición sea False, o el loop es infinito
El flujo es: (1) evaluar condición → (2) si es True, ejecutar el bloque → (3) volver a (1) → (4) si es False, salir del while.
if evalúa la condición UNA vez. Un
while la evalúa MUCHAS veces, ejecutando el bloque en cada iteración. El while es como
un if que se repite automáticamente hasta que la condición cambie.
El peligro del loop infinito
Si nada dentro del bloque modifica la condición para que eventualmente sea False, el bucle corre para siempre. Esto se llama loop infinito y es el error más grave que podés cometer con while:
# ❌ LOOP INFINITO — la condición nunca cambia
x = 10
while x > 0:
print(x) # imprime 10 para siempre
# falta: x -= 1
# ✅ CORRECTO — la variable se modifica en cada iteración
x = 10
while x > 0:
print(x)
x -= 1 # eventualmente x llega a 0 → condición False
break y continue
break — sale del bucle inmediatamente, sin importar si la condición sigue siendo True. Es
como un "basta, salgo ya".
continue — salta el resto de la iteración actual y vuelve al inicio del while para evaluar
la condición de nuevo. Es como un "salteo esta vuelta".
El patrón while True: ... break es muy común cuando la condición de salida está en el medio del
bloque (no al inicio):
while True:
dato = obtener_dato()
if dato == "salir":
break # sale del while
if dato == "":
continue # vuelve a pedir dato
procesar(dato)
Contadores y acumuladores
Dos patrones fundamentales que usás constantemente con while (y también con for):
- Contador: una variable que cuenta cuántas veces pasó algo. Empieza en 0 y se incrementa con
+= 1. - Acumulador: una variable que acumula un total. Empieza en 0 y se incrementa con el valor de cada
iteración (
+= monto).
while intentos < 3 and not pin_correcto: → le pide el PIN al usuario, cuenta los intentos, y si
falla 3 veces o acertó, sale del loop. El contador (intentos) controla el límite y la condición
booleana (pin_correcto) controla el éxito.
¿Cuándo while vs for?
| Usá while cuando… | Usá for cuando… |
|---|---|
| No sabés cuántas repeticiones necesitás | Sabés exactamente cuántas (o recorrés una colección) |
| La condición de salida es compleja | Iterás sobre una lista, rango, diccionario |
| Simulaciones hasta que se cumpla una meta | Procesás cada elemento de un dataset |
| Reintentos con límite | Conteos y acumulaciones sobre datos conocidos |
| Input validation loops | Recorridos de principio a fin |
for (recorrer datos). El while se reserva para los casos donde la cantidad de
repeticiones depende de una condición dinámica. Si te encontrás usando while para recorrer una lista con un
índice manual, probablemente deberías usar for.
Ejemplos explicados paso a paso
Ejemplo 1: Cuenta regresiva y while básico
Hacé clic en ▶ Ejecutar
Ejemplo 2: Simulación de interés compuesto — ¿cuándo duplico mi plata?
Hacé clic en ▶ Ejecutar
Ejemplo 3: break y continue en acción
Hacé clic en ▶ Ejecutar
Ejemplo 4: Amortización de préstamo (sistema francés simplificado)
Hacé clic en ▶ Ejecutar
Ejemplo 5: while vs for — cuándo usar cada uno
Hacé clic en ▶ Ejecutar
Referencia rápida
| Patrón | Estructura | Uso |
|---|---|---|
| While básico | while cond: bloque |
Repetir mientras se cumpla |
| Contador | n=0; while cond: n+=1 |
Contar iteraciones |
| Acumulador | total=0; while: total+=v |
Sumar valores |
| while True + break | while True: if x: break |
Condición en medio del bloque |
| Sentinel loop | while dato != fin: |
Procesar hasta valor especial |
| Retry con límite | while intentos < max: |
Reintentos con tope |
| Keyword | Qué hace | Cuándo usar |
|---|---|---|
break |
Sale del while inmediatamente | Encontraste lo que buscabas / error fatal |
continue |
Salta al inicio del while | Este dato es inválido, seguí con el próximo |
else (en while) |
Se ejecuta si NO hubo break | Verificar si el loop terminó normalmente |
Ejercicios
Ejercicio 1: Cuenta regresiva desde 10
Imprimí los números del 10 al 1 con while y después ¡Despegue!. Debe incluir
¡Despegue!.
Hacé clic en ▶ Ejecutar
Ejercicio 2: Sumar hasta superar un objetivo
Empezá con total = 0. Sumá 25000 por iteración hasta superar $100,000.
Imprimí cuántas iteraciones necesitaste. Debe incluir 5.
Hacé clic en ▶ Ejecutar
Ejercicio 3: Dividir hasta que sea menor que 1
Empezá con n = 1024. Dividilo por 2 en cada iteración hasta que sea menor que 1. Contá cuántas
divisiones hiciste. Debe incluir 11.
Hacé clic en ▶ Ejecutar
Ejercicio 4: ¿Cuántos meses para duplicar inversión?
Capital $200,000 al 4% mensual compuesto. ¿Cuántos meses para duplicar? Debe
incluir 18.
Hacé clic en ▶ Ejecutar
Ejercicio 5: Procesar cola con while + pop
Dada tareas = ["Limpiar datos","Calcular métricas","Generar reporte","Enviar email"], procesá
cada una con while tareas: y .pop(0). Debe incluir Generar reporte.
Hacé clic en ▶ Ejecutar
Ejercicio 6: break para buscar primer match
Dada una lista de scores, encontrá el primero que supere 750 usando while + break. Debe incluir
810.
Hacé clic en ▶ Ejecutar
Ejercicio 7: Simulación de ahorro mensual
Ahorrás $50,000/mes con rendimiento de 3% mensual sobre el acumulado. ¿Cuántos
meses para llegar a $1,000,000? Imprimí cada mes. Debe incluir Objetivo alcanzado.
Hacé clic en ▶ Ejecutar
Ejercicio 8: Amortización de deuda
Deuda de $300,000 al 5% mensual. Pagás $25,000/mes. ¿En cuántos meses
saldás? Si la cuota no cubre el interés, imprimí Deuda impagable. Debe incluir
meses.
Hacé clic en ▶ Ejecutar
Ejercicio 9: Fibonacci hasta superar un valor
Generá la secuencia de Fibonacci (0, 1, 1, 2, 3, 5, 8, 13...) hasta superar 1000. Imprimí la
secuencia. Debe incluir 1597.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Simulación bancaria completa
Simulá 24 meses de una cuenta: saldo inicial $500,000. Cada mes: sumá sueldo
$350,000, restá gastos $280,000, aplicá rendimiento 0.2% sobre saldo
positivo. Si el saldo baja de 0, imprimí alerta y break. Al final imprimí un resumen con saldo final y meses
transcurridos. Debe incluir RESUMEN.
Hacé clic en ▶ Ejecutar
Resumen y conexión
while condición:repite mientras la condición sea True. Algo dentro del bloque DEBE cambiar la condición.- Si nada cambia la condición → loop infinito (el bug más grave de while).
breaksale del while inmediatamente.continuesalta a la siguiente iteración.- El patrón
while True: ... breakes ideal cuando la condición de salida está en medio del bloque. - Contadores (
n += 1) y acumuladores (total += valor) son los patrones más usados. - Usá while para simulaciones y condiciones dinámicas. Usá for para recorrer datos.
En la siguiente lección (17 · For) vas a dominar el bucle más usado de Python: for con range, listas, diccionarios, enumerate, zip, break/continue, y comprensiones — la herramienta que usás el 80% del tiempo.
Recursos: Python docs — while