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.
También te puede interesar
Lo básico
i = 1
while i < 6:
print(i, end=" ")
i += 1salida1 2 3 4 5
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.