La sentencia o bucle while en Python es una sentencia de control de flujo que se utiliza para ejecutar un bloque de instrucciones de forma continuada mientras se cumpla una condición determinada.
En este tutorial te explicaré en detalle la sentencia while en Python y te mostraré ejemplos de uso común.
Índice
La sentencia while en Python
Como te decía, el uso principal de la sentencia while es ejecutar repetidamente un bloque de código mientras se cumpla una condición.
La estructura de esta sentencia while es la siguiente:
while condición: bloque de código
Es decir, mientras condición
se evalúe a True
, se ejecutarán las instrucciones y sentencias de bloque de código
.
Aquí, condición
puede ser un literal, el valor de una variable, el resultado de una expresión o el valor devuelto por una función.
❗️ IMPORTANTE: El cuerpo del bloque while está indicado con un sangrado mayor. Dicho bloque termina cuando se encuentre la primera línea con un sangrado menor.
Veamos un ejemplo:
numero = 0 print('Tabla del 3') while numero <= 10: print(f'{numero * 3}') numero += 1 print('Fin')
En el script anterior se inicializa una variable numero
con el valor 0
.
Seguidamente se muestra un mensaje y en la línea 3 aparece una sentencia while. En esta sentencia se comprueba si el valor de la variable numero
es menor o igual a 10
.
Como se evalúa a True
, se muestra por pantalla el resultado de multiplicar numero
por 3
y después se incrementa el valor de numero
en 1
.
A continuación, se debería ejecutar el código de la línea 6. Sin embargo, como hemos definido un bucle while, el flujo de ejecución del programa no continúa por la línea 6, sino que vuelve a la línea 3 y de nuevo se evalúa si la expresión numero <= 10
sigue siendo True
. En esta ocasión el valor de numero
es 1
, por lo que la expresión da como resultado True
y vuelven a ejecutarse las líneas de la sentencia while.
Esto será así hasta que numero
sea igual a 11
. En esa ocasión la expresión de comparación se evaluará a False
y el flujo continuará, ahora sí, por la línea 6.
El resultado del script anterior es el siguiente (la tabla de multiplicar del número 3):
Tabla del 3 0 3 6 9 12 15 18 21 24 27 30 Fin
Bucle while en Python – Ejemplo típico
La sentencia while la puedes usar en multitud de ocasiones. A continuación te mostraré un escenario típico de uso de bucle while: Comprobar si existe un elemento en una secuencia.
Imagina que tienes la siguiente lista de valores [5, 1, 9, 2, 7, 4]
y quieres saber si el número 2 está contenido en dicha lista. La estructura típica de bucle while para ello es como sigue:
valores = [5, 1, 9, 2, 7, 4] encontrado = False indice = 0 longitud = len(valores) while not encontrado and indice < longitud: valor = valores[indice] if valor == 2: encontrado = True else: indice += 1 if encontrado: print(f'El número 2 ha sido encontrado en el índice {indice}') else: print('El número 2 no se encuentra en la lista de valores')
Como puedes observar, en el ejemplo, se utilizan 3 variables de control:
encontrado
: Indica si el número 2 ha sido encontrado en la lista.indice
: Contiene el índice del elemento de la listavalores
que va a ser evaluado.longitud
: Indica el número de elementos de la listavalores
.
En esta ocasión, la condición de continuación del bucle while es que no se haya encontrado el número 2 y que el índice del elemento a evaluar sea menor que la longitud de la lista (es posible acceder a un elemento de una lista a partir del índice de su posición, comenzando por 0).
Por tanto, el bucle finaliza bien cuando se haya encontrado el elemento, bien cuando se haya evaluado el último elemento de la lista. Si se ha encontrado el número 2, se muestra un mensaje indicando el índice en el que está. En caso contrario, se muestra un mensaje indicando que el número 2 no se encuentra en la lista.
❗️ NOTA: El anterior es solo un ejemplo para que veas cómo funciona la sentencia while. En realidad, en Python se puede usar el operador in
para comprobar de forma más eficiente si un elemento está contenido en una secuencia.
Bucle while … else …
Al igual que sucede con el bucle for, podemos alterar el flujo de ejecución del bucle while con las sentencias break
y continue
:
break
se utiliza para finalizar y salir el bucle, por ejemplo, si se cumple alguna condición.- Por su parte,
continue
salta al siguiente paso de la iteración, ignorando todas las sentencias que le siguen y que forman parte del bucle.
Veamos el ejemplo de la sección anterior modificado, añadiendo la sentencia break
:
valores = [5, 1, 9, 2, 7, 4] encontrado = False indice = 0 longitud = len(valores) while indice < longitud: valor = valores[indice] if valor == 2: encontrado = True break else: indice += 1 if encontrado: print(f'El elemento 2 ha sido encontrado en el índice {indice}') else: print('El elemento 2 no se encuentra en la lista de valores')
Lo que he hecho ha sido eliminar de la condición de continuación del bucle la comprobación de la variable encontrado
. Además, he añadido la sentencia break
si el número 2 se encuentra en la lista.
Por otro lado, al bucle while le podemos añadir la sentencia opcional else
. El bloque de código del else
se ejecutará siempre y cuando la condición de la sentencia while se evalúe a False
y no se haya ejecutado una sentencia break
.
Continuando con el ejemplo anterior, lo podemos modificar del siguiente modo:
valores = [5, 1, 9, 2, 7, 4] indice = 0 longitud = len(valores) while indice < longitud: valor = valores[indice] if valor == 2: print(f'El elemento 2 ha sido encontrado en el índice {indice}') break else: indice += 1 else: print('El elemento 2 no se encuentra en la lista de valores')
En esta ocasión se ha eliminado completamente el uso de la variable de control encontrado
.
Pues hasta aquí el tutorial sobre la sentencia while y sus casos de uso. Espero que te haya sido útil 😉