14 - Repítelo un número indefinido de veces: la sentencia while

Lección 14 del curso Python Nivel Básico.

Introducción

En la lección anterior hablamos de los algoritmos y los pseudo-códigos y vimos cómo la sentencia if permitía controlar el flujo de datos en un programa.

En esta lección hablaremos de la sentencia while, la segunda sentencia de control fundamental en Python, y que permite ejecutar una porción de código de forma repetitiva siempre y cuando se cumpla una cierta condición. Así que veamos en detalle esta sentencia.

Suscríbete y accede al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Estructura de la sentencia while

La forma de programar esta sentencia en Python es similar a la estructura usada para las sentencias if vistas anteriormente. En este caso particular debemos escribir la palabra reservada while seguida de una condicion (que puede ser por ejemplo una comparación que arroja un valor booleano True o False) y de dos puntos (:). Posteriormente, debajo de los dos puntos escribiremos el código que queremos que se repita en cada iteración de la sentencia, teniendo en cuenta que dicho código deberá estar indentado a la derecha (tal como ocurría con las sentencias if).

Principio de funcionamiento

Siempre que condicion tenga un valor True, el código del bloque se ejecutará de forma repetitiva hasta tanto la condición tome el valor False. El término iteración se refiere a cada una de las veces que el código se ejecutará, y como dicho código se ejecuta una y otra vez (de forma repetitiva) a esto se le da el nombre de ciclo o loop.

Veamos algunos ejemplos de uso de la sentencia while para entender en detalle su funcionamiento.

Ejemplos de uso

El ejemplo más sencillo de todos consiste en establecer la condicion con un valor verdadero (True) para todas las iteraciones, lo que hará que el código se ejecute un número infinito de veces:

while True:
    print('Ejecutando código')
    print('Ciclo infinito')

En este caso los mensajes Ejecutando código y Ciclo infinito aparecerán una y otra vez impresos en pantalla, hasta que forcemos la detención de la ejecución desde Jupyter Notebook.

Y el ejemplo opuesto es establecer la condicion con un valor falso (False) para todas las iteraciones, lo que hará que el código dentro de la sentencia nunca se ejecute:

while False:
    print('Ejecutando código')
    print('Ciclo infinito')

En este caso ninguno de los dos mensajes aparecerá impreso en pantalla.

Pero lo interesante de la sentencia while no es que la condición se mantenga siempre verdadera o falsa, sino que comience teniendo un valor verdadero y posteriormente, tras la ejecución del código por un cierto número de iteraciones, tome el valor falso. Con esto controlaremos de forma efectiva el flujo de datos en nuestro programa.

Veamos entonces un ejemplo un poco más elaborado que los dos anteriores. Supongamos que tenemos una cuenta de ahorros con un saldo inicial de $1.000 y que diariamente retiramos una cierta cantidad de dinero (inferior a ese saldo inicial). Haciendo uso de la sentencia while implementemos un pequeño programa que en cada iteración solicite al usuario el monto a retirar, lo reste del saldo actualizado y al final imprima los días transcurridos y el saldo disponible. El programa debería detener su ejecución cuando el saldo actualizado sea negativo (indicando que ya no habrá dinero disponible para retirar).

El código que resuelve este problema sería el siguiente:

Recuerda suscribirte para acceder al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Como vemos, en este caso la condición establecida es saldo >= 0, donde la variable saldo se refiere al saldo disponible en la cuenta y el cual se actualiza en cada iteración. En las primeras iteraciones este saldo será positivo y por tanto la condición será evaluada como True, lo que permitirá continuar con la ejecución del código. Sin embargo, a medida que la cantidad de retiros aumenta el saldoirá disminuyendo progresivamente, hasta llegar al punto en el cual será negativo. En esa iteración la condición será evaluada como False y se detendrá la ejecución del ciclo.

Conclusión

Bien, acabamos de ver cómo implementar la sentencia while, que permite ejecutar de forma repetitiva una porción de código siempre y cuando la condición definida en la sentencia se mantenga en un valor verdadero.

Como vimos, el número de ciclos en esta sentencia no tiene un valor pre-definido, pues realmente depende de cómo cambia la condición en cada iteración.

En la próxima lección hablaremos de la tercera sentencia de control básica en Python: veremos cómo implementar un ciclo que se repita un número predeterminado de veces, usando la sentencia for.

Ver todas las lecciones de este curso