Repetición Condicional (while)
Fig. 8.3: while: la carga da vueltas mientras la condición se cumpla.
El bucle while es un Ciclo de Retroalimentación, y eso lo hace completamente distinto al for. El for recorre una lista porque sabe de antemano cuántos elementos tiene. El while no sabe nada. Avanza a ciegas y solo se detiene cuando un sensor lo frena.
La instrucción que modela es esta: “Sigue llenando el tanque MIENTRAS no se derrame”.
Sintaxis
litros = 0
capacidad = 50
while litros < capacidad:
print(f"Llenando... Van {litros} litros")
litros += 10 # ¡CRÍTICO! Debemos cambiar la condición
print("Tanque lleno")
El Peligro del Bucle Infinito
Borra la línea litros += 10 y observa lo que pasa: la condición 0 < 50 nunca deja de ser True. El programa se queda atascado y deja de responder. (Tu computadora sigue viva; ese programa no.) En el Almacén Digital, esto equivale a una banda transportadora que nadie apagó, girando hasta quemar el motor.
¡Ojo!: Si usas
while, algo dentro del bucle tiene que cambiar para que la condición llegue a serFalse. Sin ese cambio, el bucle no termina nunca.
El Bucle Infinito a Propósito (while True + break)
A veces no sabes cuántas vueltas hacen falta porque dependen del usuario. El patrón estándar es un bucle infinito controlado: gira para siempre y solo sale cuando una condición interna dispara un break. Es el motor de casi todos los menús.
while True:
opcion = input("Elige una opción (o 'salir'): ")
if opcion == "salir":
break # la única puerta de salida
print(f"Procesando: {opcion}")
print("Hasta luego")
La diferencia con el bucle infinito accidental de arriba es el break: aquí la salida es deliberada y está bajo tu control. (El break lo ves en detalle en la siguiente sección; por ahora es solo “la puerta de salida”.) Este es el esqueleto del menú que montarás en el proyecto final.