While Python – Bucle while en Python

while python - Sentencia while en Python

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 lista valores que va a ser evaluado.
  • longitud: Indica el número de elementos de la lista valores.

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 😉

¿Quieres ser expert@ en Python? Recibe trucos Python y las últimas novedades del blog

¡Eyyy! Esto también te puede interesar 👇

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo profile

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

¿Quieres ser expert@ en Python? 🐍

❤️ He ayudado a miles de programadores/as como tú a ser mejores Pythonistas

📩 Recibe de vez en cuando trucos y scripts Python y las últimas novedades del blog

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

¿Quieres ser expert@ en PYTHON?

j2logo-pythonistas

❤️ He ayudado a miles de programadores/as como tú

📩 Recibe trucos, scripts y las novedades del blog

¿Quieres dominar Python?

Python, Guía para ser un Pythonista

El curso con el que aprender el lenguaje desde cero. Con mi soporte y ayuda.

OFERTA BLACK FRIDAY

35% de descuento