Python – Ciclo while

while repite mientras una condición sea cierta. Se usa cuando no sabes cuántas vueltas hacen falta; si lo sabes, o si estás recorriendo algo, lo natural en Python es el for.

Lo básico

i = 1
while i < 6:
    print(i, end=" ")
    i += 1
salida1 2 3 4 5
Sin el i += 1, el programa no termina nunca. La condición sigue siendo cierta para siempre y el bucle imprime unos sin parar hasta que lo cortes con Ctrl+C. Es el fallo clásico del while: algo dentro del bucle tiene que acercar la condición a ser falsa.

break y continue

i = 1
while i < 10:
    i += 1
    if i == 5:
        continue
    if i == 8:
        break
    print(i, end=" ")
salida2 3 4 6 7

continue se salta el resto de esta vuelta y pasa a la siguiente: por eso falta el 5. break sale del bucle entero: por eso no aparecen ni el 8 ni el 9. Fíjate en dónde está el i += 1: arriba, antes del continue. Si estuviera abajo, al llegar a 5 el continue se lo saltaría y el bucle se quedaría atascado en el 5 para siempre.

El else del while

intentos = 0
while intentos < 3:
    intentos += 1
else:
    print("el while terminó solo, sin break, tras", intentos, "vueltas")
salidael while terminó solo, sin break, tras 3 vueltas

Igual que en el for: el else se ejecuta solo si el bucle acabó porque la condición dejó de cumplirse, no por un break.

Mientras quede algo

datos = [5, 3, 9]
while datos:
    print("saco", datos.pop())
salidasaco 9
saco 3
saco 5

Como una lista vacía cuenta como falsa, while datos: se lee «mientras queden datos». Es el patrón de cualquier cola de trabajo.

Comprobar y guardar a la vez

import random
random.seed(2026)

while (n := random.randint(1, 6)) != 6:
    print("salió", n)
print("¡seis!")
salidasalió 1
salió 3
salió 5
salió 5
¡seis!

El := se llama operador morsa y existe desde Python 3.8: asigna y devuelve el valor en la misma expresión. Sin él habría que tirar el dado una vez antes del bucle y otra al final de cada vuelta. El seed está solo para que la salida sea siempre la misma y puedas comprobarla.

Más información en inglés: The while loop in Python.

Todo el código se ejecutó con Python 3.14 en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.