Lección 9 de 45 · Decisiones y bucles

Bucle while

Usa while cuando no sabes cuántas vueltas harán falta, pero sí qué condición debe mantenerse para continuar.

Paso a pasoTraza de estadoAvanza a tu ritmo
Índice · Lección 9/45
for cuenta valores; while vigila una condición

Con for repetías para una serie conocida de valores. while sirve cuando la pregunta es distinta: «¿debo seguir repitiendo?»

Evidencia de aprendizaje

Señalar el estado inicial, la condición y el cambio que garantiza que el bucle termine.

La mecánica de while tiene tres piezas

Una cuenta atrás segura
numero = 3

while numero > 0:
    print(numero)
    numero = numero - 1

print("Despegue")
  1. Estado inicial: numero empieza en 3.
  2. Condición: el bucle continúa mientras numero > 0.
  3. Cambio: cada vuelta resta 1 y acerca la condición a ser falsa.

Sigue el valor vuelta a vuelta

La mejor forma de entender un while pequeño es hacer una tabla mental:

Traza manual
numero = 3 → 3 > 0 → imprime 3 → numero pasa a 2
numero = 2 → 2 > 0 → imprime 2 → numero pasa a 1
numero = 1 → 1 > 0 → imprime 1 → numero pasa a 0
numero = 0 → 0 > 0 es False → termina

No hay magia: el bucle vuelve a comprobar la condición después de cada vuelta.

La pregunta de seguridad: «¿qué hace que termine?»

Si escribieras el mismo ejemplo sin numero = numero - 1, numero seguiría valiendo 3. La condición sería verdadera una y otra vez y tendrías un bucle infinito.

Antes de ejecutar un while, señala con el dedo la línea que cambia algo relacionado con la condición. Si no encuentras ninguna, revisa el bucle.

¿Cuándo elegir while?

Úsalo cuando sabes qué condición mantiene viva la repetición, pero el número exacto de vueltas depende de lo que ocurra. Por ejemplo: repetir mientras queden intentos, mientras haya saldo, mientras una respuesta no sea válida.

Si simplemente quieres hacer algo cinco veces, for suele expresar mejor la intención.

Diagnostica la terminación antes de ejecutar

Bucle A

¿Termina?

n = 3
while n > 0:
    n = n - 1
Comprobar razonamiento

Sí. Cada vuelta acerca n a 0.

Bucle B

¿Termina?

n = 3
while n > 0:
    print(n)
Comprobar razonamiento

No. Nada cambia el valor usado en la condición.

Bucle C

¿Termina?

n = 3
while n > 0:
    n = n + 1
Comprobar razonamiento

No. El cambio aleja a n de hacer falsa la condición.

Antes de la vuelta¿n > 0?Después del cambio
3True2
2True1
1True0
0False—

Arregla el cambio para que la cuenta pase por 4, 3, 2 y 1 y luego termine.

Salida esperada
4
3
2
1
Fin
terminacion.py
La salida aparecerá aquí.

Necesito una pista
  • La condición ya es correcta. Mira solo la línea que cambia el estado.
  • Entre dos vueltas consecutivas el número debe bajar exactamente una unidad.
Ver una solución razonada
numero = 4
while numero > 0:
    print(numero)
    numero = numero - 1
print("Fin")

Antes de dejar while

Para cualquier while sencillo intenta contestar tres preguntas: ¿con qué estado empieza?, ¿qué condición se comprueba? y ¿qué cambia para que algún día termine?. Si puedes responderlas, estás razonando correctamente sobre el bucle.