domingo, 16 de febrero de 2025

Curso Python UniAndes-Coursera / Modulo 3/ Lectuara 1. Instruccion while

 Fuente: https://tinyurl.com/26z4bgv6

NOTA 1 de PPI: el recurso original esta en Ingles, se ha traducido con ayuda de la aplicación para traducir paginas web; por esta razón existe la posibilidad de que la sintaxis del texto no sea la mas precisa en algunos fragmentos.

8.3. El while Statement 

 

 
Hay otra declaración de Python que también se puede usar para construir una iteración. Se llama el while declaración. El while La declaración proporciona un mecanismo mucho más general para iterar. Similar al if declaración, usa Una expresión booleana para controlar el flujo de ejecución. El cuerpo de while se repetirá siempre que la expresión booleana de control se evalúe a True.

La siguiente La figura muestra el flujo de control.

../_images/while_flow.png

Podemos usar el while bucle para crear cualquier tipo de iteración que deseemos, incluida cualquier cosa que hemos hecho previamente con un for bucle. Por ejemplo, el programa en la sección anterior podría reescribirse usando while. En lugar de confiar en el range Funcionar para producir los números para nuestra suma, necesitaremos producirlos nosotros mismos. A esto, crearemos una variable llamada aNumber e inicializarlo en 1, el primer número en la suma. 
 
Cada iteración agregará aNumber al total de ejecución hasta que se hayan utilizado todos los valores. Para controlar la iteración, debemos crear una expresión booleana que evalúe a True siempre que queramos seguir agregando valores a nuestro total de funcionamiento. En este caso, mientras aNumber es menor o igual al límite, debemos seguir adelante.
Aquí hay una nueva versión del programa de suma que usa una declaración de tiempo. 
 
>>def sumTo(aBound):
>>    """ Return the sum of 1+2+3 ... n """

>>    theSum  = 0
>>    aNumber = 1
>>    while aNumber <= aBound:
>>        theSum = theSum + aNumber
>>        aNumber = aNumber + 1
>>    return theSum

>>print(sumTo(4))

>>print(sumTo(1000))

 

Casi puedes leer el while declaración como si fuera en lenguaje natural. Significa, mientras aNumber es menor o igual a aBound, continúa ejecutando el cuerpo del bucle. Dentro El cuerpo, cada vez, actualiza theSum Usando el patrón de acumulador y el incremento aNumber. Después del cuerpo del bucle, volvemos a la condición del while y reevalúarlo. Cuando aNumber se vuelve mayor que aBound, la condición falla y el flujo de control continúa al return declaración.

El mismo programa en Codelens le permitirá observar el flujo de ejecución.

Nota 2. PPI: La evaluación del programa anterior en Colab obtiene:
>>>10
>>>500500
Para el parámetro aBound = 4 ocurre lo siguiente:
  • Primera iteración:
aNumber = 1; theSum = 0; MIENTRAS aNumber (1)<= aBound(4) entonces:
theSum = theSum + aNumber = 0 + 1 = 1
aNumber = aNumber +1 = 1 + 1 = 2
  • Segunda iteración:

 aNumber = 2; theSum=1; MIENTRAS aNumber(2)<= aBound(4) entonces:

 theSum = theSum + aNumber = 1 + 2 =3

 aNumber = aNumber +1 = 2 +1 = 3

  • Tercera iteración: 
 aNumber = 3; theSum=3; MIENTRAS aNumber(3)<= aBound(4) entonces:
 theSum = theSum + aNumber = 3 + 3 = 6
 aNumber = aNumber +1 = 3+1 = 4
 
  • Cuarta iteración:
  aNumber = 4; theSum=6; MIENTRAS aNumber(4)<= aBound(4) entonces:
 
 theSum = theSum + aNumber = 6 + 4 = 10
 aNumber = aNumber +1 = 4+1 = 5
 
  •  Quinta iteración:
 aNumber = 5; theSum=10; MIENTRAS aNumber(5)<= aBound(4) entonces: 
La condicion no se cumple porque 5<= 4 es False, por lo tanto el ciclo o bucle while se rompe y la funcion retorna el valor de theSum, el cual se encontraba acumulado en 10.
 

Retomando la lectura original:

Más formalmente, aquí está el flujo de ejecución para un while declaración:

  1. Evaluar la condición, cediendo False o True.

  2. Si la condición es False, salga del while declaración y continuar ejecución en la siguiente declaración.

  3. Si la condición es True, ejecute cada una de las declaraciones en el cuerpo y Luego regrese al paso 1.

El cuerpo consta de todas las declaraciones debajo del encabezado con la misma sangría.

Este tipo de flujo se llama bucle porque el tercer paso vuelve a girar a la cima. Observe que si la condición es False la primera vez a través del bucle, las declaraciones dentro del bucle nunca se ejecutan.

Advertencia:

Aunque Python's while está muy cerca del inglés "while", Hay una diferencia importante: en inglés "mientras x, do y", Por lo general, asumimos que inmediatamente después de que X se vuelve falso, nos detenemos hay no una parada inmediata: después del Prueba inicial, cualquier prueba siguiente viene solo después de la ejecución de el Todo cuerpo, incluso si la condición se vuelve falsa en el medio del cuerpo del bucle.

El cuerpo del bucle debe cambiar el valor de una o más variables para que Finalmente la condición se convierte en False y el bucle termina. De lo contrario el Loop se repetirá para siempre. Esto se llama un bucle infinito . Un interminable La fuente de diversión para los informáticos es la observación de que el Instrucciones escritas en la parte posterior de la botella de champú (espuma, enjuague, repite) crean un bucle infinito.

En el caso que se muestra arriba, podemos probar que el bucle termina porque saber que el valor de aBound es finito, y podemos ver que el valor de aNumber incrementos cada vez a través del bucle, por lo que eventualmente tendrá que exceder aBound. En Otros casos, no es tan fácil saberlo.

Nota

Introducción de la declaración Mientras que nos hace pensar en los tipos de iteración que hemos visto. El for La declaración siempre iterará a través de una secuencia de valores como la lista de nombres para la parte o la lista de números creados por range. Como sabemos que iterará una vez para cada valor en la colección, a menudo se dice que un for el bucle crea un iteración definitiva porque definitivamente sabemos cuántas veces vamos a iterar. 

De otro lado, el while La declaración depende de una condición que deba evaluar False en orden para que el bucle termine. Dado que no necesariamente sabemos cuándo sucederá esto, crea lo que Llame a la iteración indefinida . La iteración indefinida simplemente significa que no sabemos cuántas veces repetiremos, pero eventualmente la condición que controla la iteración fallará y la iteración se detendrá. (A menos que tengamos un bucle infinito que, por supuesto, sea un problema).

Lo que notará aquí es que el while el bucle es más trabajo para Usted - el programador - que el equivalente for bucle. Al usar un while bucle debe controlar la variable de bucle usted mismo. Le das un valor inicial, prueba Para su finalización, y luego asegúrese de cambiar algo en el cuerpo para que el bucle termine.

Entonces, ¿por qué tener dos tipos de bucle si for ¿Parece más fácil? La siguiente sección, tortugas para caminar al azar , muestra una iteración indefinida donde Necesitamos la potencia adicional que obtenemos del while bucle.

Nota de PPI: si esta interesado en el tema de la aplicación de while para el ejercicio
del caminar de las tortugas te invitamos a ingresar al enlace: https://tinyurl.com/2c5qa6r6
 

No hay comentarios.:

Publicar un comentario

Entradas recientes

Thinkcspy. 1.14. Glosario del primer capitulo

  1.14. Glossary activecode: Un entorno de intérprete único que permite que Python se ejecute desde un navegador web. algorithm: Un pr...

Entradas Populares