Autor: Luis Fernando Apáez Álvarez
Comenzaremos esta clase trabajando con el bucle while
. Éste se usa de manera iterativa sobre una o más líneas de código ejecutándose siempre que la condición del while
sea verdadera. while
en español significa "mientras", lo cual nos brinda una idea muy intuitiva de cómo funcionará. El diagrama de flujo del bucle while
es el siguiente:
Donde, mientras la condición dada para el bucle while
sea verdadera, entonces las operaciones/procesos serán ejecutados. Podemos ver claramente la parte del diagrama de flujo que hace alusión al bucle:
El bucle while
es de gran utilidad pues, por ejemplo, si desearamos ejecutar una instrucción en python 1000 veces y con base en esas 1000 ejecuciones seguir trabajando con nuestro código, bastará con implementar un bucle while
para escribir muchas menos líneas de código y optimizar nuestro tiempo de programación. De hecho, lo anterior es tan sólo un pequeño caso de lo que podemos hacer con los bucles. La sintaxis básica del bucle while
es
while <condición>:
operaciones/procesos
Por ejemplo en el siguiente código
x = 0
while x <= 10:
x += 2
print(f'Iteración realizada')
print(f'Fin')
Iteración realizada Iteración realizada Iteración realizada Iteración realizada Iteración realizada Iteración realizada Fin
inicializamos una variable x
y colocamos como condición del while
que x <= 10
. En la operación que se ejecutará dentro del while
hemos colocado un incremento de 2 en la variable x
y un mensaje de salida. El comportamiento de x
es
x = 0
, primera iteración realizada, la condición x <= 10
continúa siendo verdaderax = 0 + 2 = 2
, segunda iteración realizada, la condición x <= 10
continúa siendo verdaderax = 2 + 2 = 4
, tercera iteración realizada, la condición x <= 10
continúa siendo verdaderax = 4 + 2 = 6
, cuarta iteración realizada, la condición x <= 10
continúa siendo verdaderax = 6 + 2 = 8
, quinta iteración realizada, la condición x <= 10
continúa siendo verdaderax = 8 + 2 = 10
, sexta iteración realizada, la condición x <= 10
continúa siendo verdaderax = 10 + 2 = 12
, la condición x <= 10
es falsa por lo que el bucle es interrumpido y python pasa a ejecutar el código inmediato que sigue. En este caso ejecutamos un print.Así, como la condición fue verdadera seis veces, entonces se imprimió seis veces el mensaje "Iteración realizada"
. Cabe resaltar que, como sucedía en el condicional if
, debemos de tener cuidado con la identación.
Podemos considerar otro ejemplo
y = 0
while y <= 15:
print(y)
y += 3
print("fin")
0 3 6 9 12 15 fin
En este ejemplo hemos clarificado un poco cómo el valor de la variable y
va cambiando de acuerdo a cada iteración. Cuando la condición es falsa pasamos a la siguiente línea de código print("fin")
.
Observación: Es posible que cometamos el error de ejecutar un bucle infinito. Por ejemplo, del código anterior, si eliminamos la parte en que aumentamos el valor de la variable y
, entonces ésta tendrá asignado el valor de 0 a lo largo de todo el bucle. Es por ello que la condición del bucle while
siempre será verdadera y por ende el bucle será un bucle infinito. Veamos
# este es un bucle infinito
# y = 0
# while y <= 15:
# print(y)
# print("fin")
El cual sino lo detenemos continuará ejecutándose. Una manerá de evitar bucles infinitos es colocar break
(que en español significa quebrar o romper) el cual hace que python pase a ejecutar la instrucción inmediata siguiente al bucle while
# este NO es un bucle infinito
y = 0
while y <= 15:
print(y)
break
print("fin")
0 fin
Notemos que el código dentro del while
sólo se ejecutó una vez gracias al break
.
También podemos ocupar un else
como en el condicional if
. De esta manera el bucle while
ejecutará otra acción cuando su condición sea falsa.
z = 0
while z <= 6:
print(z)
z += 2
else:
print("-" * 50)
print(z)
print("El bucle ha finalizado pues z rebasó el valor de 6")
0 2 4 6 -------------------------------------------------- 8 El bucle ha finalizado pues z rebasó el valor de 6
Donde, cuando z = 8
la condición dentro del while
es falsa, entonces ejecutamos la instrucción dentro del else
. Ésta imprime el valor actual de z
(justo el que hace que la condición del while
sea falsa) y da un mensaje para indicar que el bucle ha finalizado.