Knowledge Programación Entornos de Programación
Esta píldora formativa está extraída del Curso online de Iniciación a la Programación en Python

El bucle while es otra estructura de control de flujo, concretamente lo que hace es repetir un código mientras dure una determinada condición.

Se puede decir que el bucle while se utiliza para hacer algo repetidamente, bajo unas condiciones específicas, sin saber cuantas veces se repetirá.

Representación gráfica
While

Al entrar en while, se evalúa la condición, si es verdadera el contenido del bucle se ejecutará una vez, pasada la ejecución volverá a comprobar la condición, si es verdad vuelve a entrar en el bucle (repetirá este ciclo indefinidamente), cuando la condición deje de cumplirse sale de él y continúa su ejecución.

La condición es cualquier expresión cuyo resultado solo puede ser verdadero o falso. Para realizar la condición se puede incluir  operadores  de comparación de variables y también se pueden usar los conectores lógicos, exactamente igual que lo hacíamos con if.

Las variables que aparecen en la condición se llaman variables de control, deben definirse antes del bucle while y modificarse dentro del bucle while.

Si esto lo ves en Pseudocódigo junto al formato en python:

While - 2

While

Ejemplo de uso del bucle WHILE I (como contador)

El bloque de las instrucciones que se repetirán está definido mediante identación con respecto al bloque while. Recuerda que todas las sentencias deben tener la misma identación.

Con while se pueden hacer contadores como en el bucle for, pero con ciertas diferencias, ahora vas contar del 0 al 10.

>>>i = 0
>>>while i < 11:
...        print('cuento', i)
...        i+=1

cuento 0
cuento 1
cuento 2
cuento 3
cuento 4
cuento 5
cuento 6
cuento 7
cuento 8
cuento 9
cuento 10

El funcionamiento del bucle es el siguiente:

  1. Realiza la primera comprobación, como i lo he definido incialmente como 0, cumple la condición y entra en el bucle.
  2. Ejecuta el contenido del bloque identado el cual imprime un string con la variable de control y después suma 1 a la variable de control.
  3. Vuelve a realizar la comprobación y vuelve a empezar, hará todo este proceso hasta que la condición no se cumpla.
Ejemplo While

Ejemplo de uso del bucle WHILE  (evento)

Con while se puede hacer un control no solo sobre conteos sino que se puede controlar otro tipo de condiciones, como puede ser un string.

 salir = input('introduce una letra ')
while salir != 'a':
    print('La letra no es la que busco')
    salir = input('introduce una letra ')
print (la letra es a, por eso salgo del bucle)

Copia este código en un fichero con extensión .py.

El nombre del fichero: ejemplo2_while.py y ejecútalo en el intérprete de python, recuerda en que unidad estamos.

Prueba a lanzarlo varias veces. En una de ellas, introduce valores valores diferentes de 'a' y una vez pruébalo con 'a'.

Analiza el código

 salir = input('introduce una letra ')

Almacenas un string escrito por el usuario en la variable salir.

 while salir != 'a':

Entra en la sentencia mientras. Mientras la letra introducida sea distinta de 'a'.

     print('La letra no es la que busco')
    salir = input('introduce una letra ')

El programa expresa por pantalla que no es la letra que busca y vuelve a solicitar otra por pantalla antes de terminar el bucle y volver a  realizar la comprobación.

 print ('la letra es la "a", por eso salgo del bucle')

Si se ejecuta esta sentencia es porque se ha salido del bucle, es decir la condición no se cumple, porque se ha introducido una letra 'a' por el teclado.

WHILE infinito

Con el bucle while, a diferencia del bucle for, no se sabe cuantas veces se va a ejecutar el contenido identado, esto en determinados momentos puede ser muy positivo pero si no lo manejas con cuidado puedes entrar en un bucle infinito, perdiendo así el control sobre el programa.

Ejemplo de bucle infinito por error

>>>i = 4
>>>while i ==4:
...        print(i)

4
4
4
4
4
etc

Al no modificar la variable de control siempre se dará una condición verdadera y nunca saldría del bucle.

Para interrumpir un bucle infinito, hay que pulsar la combinación de teclas Ctrl+C. Cuando se interrumpa el programa se mostrará un mensaje de error similar a éste:

Traceback (most recent call last):
  File "ejemplo.py", line 3, in <module>
    print(i)
KeyboardInterrupt

En otras ocasiones puede ser muy útil el hecho de poder acceder a un bucle infinito, imagínate que quieres que se actualice la información de por ejemplo un titular web cada cierto tiempo, en ese caso disponer de un bucle infinito puede ser algo muy funcional.

   

Control de flujo, WHILE

Bucles anidados

Ejemplo de bucles anidados

En las ocasiones en las que un solo bucle no cumple con todas tus necesidades, puedes utilizar la estructura de bucles anidados, son útiles por ejemplo para recorrer o dibujar una matriz.

Cuando se habla de un un bucle anidado, se hace referencia a que se puede tener un ciclo for dentro de otro ciclo for o un ciclo while dentro de otro while, uno de los ejemplos más claros, es el dibujar figuras utilizando asteriscos, como un cuadrado.

Ten en cuenta que para cada instancia del ciclo externo, el ciclo interno se debe realizar completamente.

Observa todo esto a través de un ejemplo:

 columnas = int(input('Escribe el número de columnas:'))
filas = int(input('Escribe el número de filas:'))
while filas < 1 or columnas < 1:
    print('No empezamos bien... para dibujar un rectángulo no puedo usar números negativos')
    columnas = int(input('Escribe el número de columnas:'))
    filas = int(input('Escribe el número de filas:'))
for i in range(1, filas + 1):
    for j in range(1, columnas + 1):
        print ('*', end = '')
    print('')

Copia este código en un fichero con extensión .py.

El nombre del fichero: ejemplo1_Anidados.py y ejecútalo en el intérprete de python, recuerda en que unidad estamos.

Prueba a lanzarlo varias veces. Introduce valores diferentes a ver que resultados obtienes.

Analiza el código

 columnas = int(input('Escribe el número de columnas:'))
filas = int(input('Escribe el número de filas:'))

Se piden dos número enteros por pantalla y se guardan en variables.

 while filas < 1 | columnas < 1:

Se realiza una comprobación para saber si realmente se tiene un cuadrado o rectángulo que dibujar ya que sus lados deben ser positivos para poder dibujarlo.

 print('No empezamos bien... para dibujar un rectángulo, no puedo usar números negativos')
columnas = int(input('Escribe el número de columnas:'))
filas = int(input('Escribe el número de filas:')) 

Estas tres sentencias son las identadas dentro del while, es decir, se ejecutarán si el while es correcto, en este caso si alguno de los números es 0 o menor no se podría dibujar la figura y aparece un mensaje de aviso, a continuación se vuelven a pedir los número de fila y columna.

 for i in range(1, columnas + 1):
    for j in range(1, filas + 1):

Es la estructura de un for anidado donde puedes ver como para cada instancia del ciclo externo, el ciclo interno se realiza completamente.

 print ('*', end = '')

Esta sentencia lo que hace es escribir tantos asteriscos como el valor del segundo for, en este caso el de las filas, la función end='' lo que te permite es que no haya retorno de carro cada vez que se ejecuta este print y como separación incluye el contenido entre las comillas, en este caso un espacio en blanco pero podría ser otro carácter o caracteres.

 print('')

Este es el print dentro del primer for, es decir, se ejecutará después de que el segundo bucle for se haya ejecutado todas las veces, cada vez.

 

Esta píldora formativa está extraída del Curso online de Iniciación a la Programación en Python.

Amplía tus conocimientos con el Curso Online de Iniciación a la Programación en Python

Puedes continuar ahora la formación matriculándote en el curso, o si lo prefieres, consultar nuestro catálogo con cerca de 500 actividades formativas acreditadas.

Benefíciate del crédito para formación bonificando el curso.

Este sitio web utiliza cookies de terceros con la finalidad de analizar el uso que hace de nuestra web y personalizar el contenido de los anuncios. Si continúa navegando entendemos que acepta su uso. Más información