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
La siguiente La figura muestra el flujo de control.
Aquí hay una nueva versión del programa de suma que usa una declaración de tiempo.
>> """ 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 >>>500500Para el parámetro aBound = 4 ocurre lo siguiente:
- Primera iteración:
- 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:
- Cuarta iteración:
- Quinta iteración:
Retomando la lectura original:
Más formalmente, aquí está el flujo de ejecución para un while
declaración:
Evaluar la condición, cediendo
False
oTrue
.Si la condición es
False
, salga delwhile
declaración y continuar ejecución en la siguiente declaración.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