Menu

Bucles while en Python: sintaxis, while True y evitar bucles infinitos

Cuándo elegir un bucle while en lugar de un for, cómo evitar bucles infinitos y los patrones que aparecen con más frecuencia en código real.

Un bucle que vigila una condición

Mientras que for itera sobre una secuencia conocida, while sigue iterando mientras una condición sea verdadera. Recurres a él cuando no sabes de antemano cuántas iteraciones necesitarás — reintentar hasta que algo funcione, leer entrada hasta que el usuario diga basta, hacer polling a un servicio hasta que responda.

La forma es simple:

main.py
Output
Click Run to see the output here.

Eso imprime de 0 a 4. Python comprueba la condición al inicio de cada iteración. Si es verdadera, el cuerpo se ejecuta. Luego comprueba otra vez. Cuando la condición se vuelve falsa, el bucle termina.

Fíjate en que count += 1 importa. Sin eso, la condición se mantendría verdadera para siempre — un bucle infinito. Esa es la trampa principal con while, y la razón principal para preferir for cuando puedas usarlo.

Cuándo while es la herramienta correcta

Unos cuantos casos de uso clásicos:

Reintentar hasta el éxito.

main.py
Output
Click Run to see the output here.

Leer entrada hasta que el usuario salga.

main.py
Output
Click Run to see the output here.

Procesar una cola.

main.py
Output
Click Run to see the output here.

El hilo común: estás vigilando un cambio de estado en vez de iterar sobre elementos.

while True está bien

Verás este patrón mucho:

main.py
Output
Click Run to see the output here.

Esto es Python idiomático cuando la condición de salida "real" está dentro del cuerpo del bucle, no en algo limpio que puedas testear al principio. Es más fácil de leer que inventarse una bandera should_continue que actualizas en un sitio y compruebas en otro.

La única regla: asegúrate de que haya un break (o return, o una excepción lanzada) que el código eventualmente alcance. Un while True: incondicional sin salida es la forma clásica de bloquear un programa.

Evitar el bucle infinito

Los bucles infinitos ocurren cuando la condición se mantiene verdadera para siempre. Los sospechosos habituales:

  • Olvidarse de actualizar la variable. while count < 5: necesita algo dentro del cuerpo que cambie count.
  • Actualizar la variable equivocada. while i < 10: y luego j += 1 dentro — fácil de pasar por alto si tu código tiene más de unas pocas variables.
  • Comparación de coma flotante. while x != 1.0: puede hacer bucle para siempre si x solo se acerca a 1.0. Usa <= o abs(x - 1.0) < tolerance en su lugar.

Si acabas atrapado en un bucle infinito en una terminal, pulsa Ctrl+C. Eso envía una señal de interrupción, y Python para lo que esté haciendo.

break, continue y else

while soporta las mismas tres herramientas de "flujo" que for:

  • break sale del bucle inmediatamente.
  • continue salta a la siguiente iteración (así que la condición se comprueba de nuevo).
  • else se ejecuta si el bucle terminó sin un break.
main.py
Output
Click Run to see the output here.

Esa es una comprobación primitiva de primalidad. Si el break interno dispara, el número es compuesto. Si el bucle sale de forma natural (la condición se vuelve falsa), el else corre y declara el número primo.

while vs for: ¿cuál elijo?

Un test mental rápido:

  • ¿Tienes una colección que recorrer?for.
  • ¿Necesitas iterar un número fijo de veces?for i in range(n):.
  • ¿Estás iterando hasta que cambie una condición?while.

En código Python temprano verás que for cubre el 90% de los bucles. while aparece cuando estás haciendo cosas como polling, reintentos o construyendo un REPL simple. Si estás usando while para iterar sobre una lista con un índice, es señal de que deberías pasarte a for + enumerate.

Un programa práctico con while

Un juego de adivinar un número es un ejemplo clásico porque el número de iteraciones depende de cómo juegue el usuario:

main.py
Output
Click Run to see the output here.

No puedes saber de antemano cuántos intentos hará falta — depende de las respuestas del usuario. Esa es la razón de ser de while.

Mirando adelante

Ya has visto los dos tipos de bucle que te da Python. Siguiente: range() en detalle — aparece en casi cada bucle for de estilo contador, y los matices pequeños valen la pena entender antes de pasar a las colecciones.

Preguntas frecuentes

¿Cuándo debería usar un bucle while en lugar de un bucle for?

Usa while cuando no sepas de antemano cuántas iteraciones necesitas — por ejemplo, reintentar hasta que algo funcione, o leer entrada hasta que el usuario escriba 'quit'. Usa for cuando estés recorriendo una colección conocida.

¿Cómo evito un bucle infinito en Python?

Asegúrate de que algo dentro del bucle eventualmente haga la condición falsa. La causa más común de bucles infinitos es olvidarse de actualizar la variable de la que depende la condición. Si te pilla uno, pulsa Ctrl+C en la terminal para pararlo.

¿Es while True mala práctica?

No inherentemente. while True: con un break claro dentro es un patrón perfectamente normal para "itera hasta que toquemos una condición de salida específica". Es más limpio que inventarse una bandera booleana que tienes que gestionar en dos sitios.

Aprende a programar con Coddy

COMENZAR