Curso de Python / Controlar repeticiones con while, break y continue
Un bucle while repite instrucciones mientras su condición es verdadera. break sale del bucle más interno y continue omite el resto de la iteración actual; comprueba que todas las rutas pueden alcanzar el cambio de estado o la salida necesarios.
Elegir una repetición basada en condiciones
Utiliza for cuando ya dispones de los elementos que vas a procesar. while resulta apropiado cuando la repetición depende de un estado que cambia o de nuevas entradas del usuario. while True puede ser claro si su regla interna de salida también lo es.
Si el estado solo se modifica debajo de un continue, determinadas entradas pueden saltarse esa modificación e impedir que termine el bucle. Detén una repetición que no responde con Ctrl+C y comprueba si realmente se ejecutan las instrucciones que cambian su condición.
La referencia oficial de while explica su estructura. La elección del bucle debe reflejar qué hace avanzar el trabajo, no solamente cuál permite escribir menos líneas.
Solicitar importes hasta recibir la orden de salida
Guarda el siguiente código como while_input.py en UTF-8. Desde la carpeta de práctica, ejecuta python while_input.py con el entorno del proyecto seleccionado. Introduce 3500, una línea vacía, -1 y q, en ese orden.
total = 0
while True:
text = input("amount or q: ").strip()
if text == "q":
break
if text == "":
continue
amount = int(text)
if amount < 0:
print("skip negative")
continue
total += amount
print("total:", total)
La salida estándar, sin incluir los caracteres introducidos por el usuario, es:
amount or q: amount or q: amount or q: skip negative
amount or q: total: 3500
En una terminal interactiva también suelen mostrarse los caracteres que escribes. Por eso la distribución visual de las líneas puede diferir de este bloque, que muestra únicamente lo que escribe el programa.
Seguir cada entrada por su ruta
La cadena q activa break. Una entrada vacía activa continue, pero la siguiente iteración vuelve a llamar a input(), de modo que el usuario puede proporcionar un estado nuevo. Un número negativo muestra un aviso y no se añade al total.
La versión mostrada presupone enteros o la orden q. Una entrada como abc sigue produciendo ValueError al convertirse con int(). No confundas filtrar negativos con validar todas las posibles representaciones de entrada.
Ejecuta otra vez el programa con 10 → 20 → q y comprueba el total 30. Después prueba abc. Para permitir nuevos intentos, rodea únicamente la conversión con try, captura ValueError, explica la regla de entrada y continúa. Comprueba q antes de convertir, para que siga siendo una orden y no un número inválido.
Comprobar el alcance de la salida y los casos límite
break sale solo del bucle más interno. Para abandonar varios bucles anidados necesitas expresar ese estado de forma explícita o devolver un resultado desde una función. continue también afecta solamente a su propio bucle.
- Introduce q como primera respuesta y comprueba que el total es cero.
- Introduce 0 y verifica que se acepta como importe: el texto
"0"no es una cadena vacía. - Prueba Q mayúscula. Este programa la distingue de q; decide qué órdenes quieres normalizar antes de cambiar la regla.
Un bucle de entrada debe conservar una salida evidente y gestionar los fallos de conversión esperados sin ocultar errores distintos. El manejo de excepciones desarrolla cómo delimitar esa recuperación.




