Categorías
Python

La visualización interactiva de datos en Python con el bokeh

 

Tabla de Contenidos

  • El tiempo de rotura de lazo
  • El Python y continue
  • La otra cláusula
  • Bucles
  • anidada mientras Loops
  • de una línea mientras Loops
  • Conclusión

Mira ahora Este tutorial tiene un curso de vídeo relacionado creado por el equipo del real Python. Mira que junto con el tutorial escrito para profundizar su comprensión: Mastering Mientras medios Loops

iteración ejecutar el mismo bloque de código y otra vez, potencialmente muchas veces. Una estructura de programación que implementa iteración se llama un bucle .

En la programación, hay dos tipos de iteración, indefinidas y definidas:

  • Con iteración indefinida, el número de veces que se ejecuta el bucle no se especifica explícitamente por adelantado. Más bien, el bloque designado se ejecuta repetidamente siempre que se cumpla alguna condición.
  • Con iteración definitivo, el número de veces que se ejecuta el bloque designado se especifica explícitamente en el momento el bucle aperturas.

Con iteración indefinida , el número de veces que se ejecuta el bucle no se especifica explícitamente por adelantado. Más bien, el bloque designado se ejecuta repetidamente siempre que se cumpla alguna condición.

Con iteración definida , el número de veces que se ejecuta el bloque designado se especifica explícitamente en el momento el bucle aperturas.

En este tutorial, usted:

  • Entérese del bucle while, la estructura de control de Python usado para la iteración indefinida
  • Ver cómo salir de un bucle o repetición del bucle prematuramente
  • Explora bucles infinitos

Cuando haya terminado, usted debe tener una buena comprensión de cómo utilizar iteración indefinida en Python. Bono

gratuito: Haga clic aquí para obtener nuestro libre Hoja de trucos Python que le muestra los conceptos básicos de Python 3, como trabajar con tipos de datos, diccionarios, listas y funciones de Python.

Tome el Cuestionario: Prueba sus conocimientos con nuestro sistema interactivo “Python ‘mientras que’ Loops” cuestionario. Al finalizar, recibirá una puntuación para que pueda controlar su progreso en el aprendizaje a través del tiempo:

Contesta la trivia »

El tiempo sede del lazo

Let cómo se utiliza de Python mientras comunicado a los bucles de construir. Vamos a empezar simple y embellecen a medida que avanzamos.

El formato de un rudimentaria mientras bucle se muestra a continuación:

while :

representa el bloque para ser ejecutado varias veces, a menudo referida como el cuerpo del bucle. Esto se denota con la sangría, al igual que en una sentencia if.

Recuerde: Todas las estructuras de control en el uso de Python sangría para definir bloques. Véase la discusión en la agrupación de declaraciones en el tutorial anterior a la revisión.

La expresión control, , implica típicamente una o más variables que se inicializan antes de iniciar el bucle y luego modificadas en algún lugar en el cuerpo del bucle.

Cuando se encuentra un bucle while, se evalúa primero en contexto booleano. Si bien es cierto, se ejecuta el cuerpo del bucle. Entonces se comprueba de nuevo, y si sigue siendo cierto, el cuerpo se ejecuta de nuevo. Esto continúa hasta se convierte en falsa, en la que la ejecución del programa procede a punto de la primera instrucción más allá del cuerpo del bucle.

Considere este bucle:

1 >>> n = 5
2 >>> while n > 0:
3 ... n -= 1
4 ... print(n)
5 ...
6 4
7 3
8 2
9 1
10 0

Esto es lo que está sucediendo en este ejemplo:

  • n es inicialmente 5. La expresión en el tiempo cabecera declaración en la línea 2 es n > 0, lo cual es cierto, por lo que se ejecuta el cuerpo del bucle. En el interior del cuerpo del bucle en la línea 3, n se decrementa en 1 a 4, y entonces impreso.
  • Cuando el cuerpo del bucle ha finalizado, la ejecución del programa vuelve a la parte superior del bucle en la línea 2, y la expresión se evalúa de nuevo. Todavía es cierto, por lo que el cuerpo se ejecuta de nuevo, y 3 se imprime.
  • Esto continúa hasta que n se hace 0. En ese momento, cuando se prueba la expresión, es falso, y las termina de bucle. La ejecución se reanudaría en la primera instrucción que sigue el cuerpo del bucle, pero no hay uno en este caso.

n es inicialmente 5. La expresión en el mientras cabecera declaración en la línea 2 es n > 0, lo cual es cierto, por lo que se ejecuta el cuerpo del bucle. En el interior del cuerpo del bucle en la línea 3, n se decrementa en 1 a 4, y entonces impreso.

Cuando el cuerpo del bucle ha finalizado, la ejecución del programa vuelve a la parte superior del bucle en la línea 2, y la expresión se evalúa de nuevo. Todavía es cierto, por lo que el cuerpo se ejecuta de nuevo, y 3 se imprime.

Esto continúa hasta que n se hace 0. En ese momento, cuando se prueba la expresión, es falso, y las termina de bucle. La ejecución se reanudaría en la primera instrucción que sigue el cuerpo del bucle, pero no hay uno en este caso.

Obsérvese que la expresión de control del bucle while se probó por primera vez, antes que nada sucede. Si es falso, para empezar, el cuerpo del bucle no se ejecutará en absoluto:

>>> n = 0
>>> while n > 0:
... n -= 1
... print(n)
...

En el ejemplo anterior, cuando el bucle se encuentra, n es 0. La expresión control n > 0 ya es falsa, por lo que el cuerpo del bucle nunca se ejecuta.

Aquí hay otro bucle while que implica una lista, en lugar de una comparación numérica:

>>> a = ['foo', 'bar', 'baz']
>>> while a:
... print(a.pop(-1))
...
baz
bar
foo

Cuando se evalúa una lista en contexto booleano, es Truthy si tiene elementos que lo integran y Falsy si está vacío. En este ejemplo, A es verdadero siempre que tiene elementos en los mismos. Una vez que todos los artículos se han eliminado con el método .pop () y la lista está vacía, a es falso, y las termina de bucle.

romper el Python y continue

En cada ejemplo que hemos visto hasta ahora, todo el cuerpo del bucle while se ejecuta en cada iteración. Python proporciona dos palabras clave que terminan una iteración del bucle prematuramente: sentencia break

  • El pitón inmediatamente termina un bucle completo. La ejecución del programa procede a la primera instrucción que sigue el cuerpo del bucle.
  • El pitón continuar comunicado inmediatamente termina la iteración actual del bucle. Ejecución salta a la parte superior del bucle, y la expresión de control es re-evaluado para determinar si el bucle se ejecutará de nuevo o terminar. declaración

El pitón ruptura inmediatamente termina un bucle completo. La ejecución del programa procede a la primera instrucción que sigue el cuerpo del bucle.

El Python continuar declaración inmediatamente termina la iteración actual del bucle. Ejecución salta a la parte superior del bucle, y la expresión de control es re-evaluado para determinar si el bucle se ejecutará de nuevo o terminar.

La distinción entre descanso y continuar se demuestra en el siguiente diagrama:

Aquí hay un archivo script llamado break.py que demuestra la sentencia break:

1 n = 5
2 while n > 0:
3 n -= 1
4 if n == 2:
5 break
6 print(n)
7 print('Loop ended.')

Correr break.py de un intérprete de línea de comandos produce el siguiente resultado:

C:\Users\john\Documents>python break.py
4
3
Loop ended.

Cuando n se convierte en 2, se ejecuta la sentencia break. El bucle se termina por completo, y la ejecución del programa salta a la instrucción de impresión () en la línea 7.

La siguiente secuencia de comandos, continue.py, es idéntica a excepción de una declaración continuar en el lugar de la ruptura:

1 n = 5
2 while n > 0:
3 n -= 1
4 if n == 2:
5 continue
6 print(n)
7 print('Loop ended.')

La salida de continuar miradas .py como este:

C:\Users\john\Documents>python continue.py
4
3
1
0
Loop ended.

esta vez, cuando n es 2, la sentencia continue causa la terminación de esa iteración. Por lo tanto, 2 no se imprime. La ejecución vuelve a la parte superior del bucle, se volvieron a evaluar la condición, y todavía es cierto. El bucle se reanuda, que termina cuando n es 0, como anteriormente.

El otro Cláusula

Python permite una cláusula else opcional al final de un bucle while. Esta es una característica única de Python, que no se encuentra en la mayoría de otros lenguajes de programación. La sintaxis se muestra a continuación:

while :

else:

La especificada en la cláusula else se ejecuta cuando el while termina de bucle.

Alrededor de este momento, usted puede estar pensando, “¿Cómo es que tiene utilidad?” Se podría lograr lo mismo poniendo esas declaraciones inmediatamente después del bucle while, sin la otra:

while :


Cuál es la diferencia?

En el último caso, sin la cláusula otra cosa, se ejecutará después de los while termina de bucle, no importa qué.

cuando se colocan en una cláusula else, serán ejecutadas sólo si las termina bucle “por agotamiento”, es decir, si se repite el bucle hasta que la condición control se convierte en falsa. Si se sale del bucle por una declaración de la rotura, no se ejecutará la cláusula else.

Consideremos el siguiente ejemplo:

>>> n = 5
>>> while n > 0:
... n -= 1
... print(n)
... else:
... print('Loop done.')
...
4
3
2
1
0
Loop done.

En este caso, el bucle se repite hasta que la condición era agotado: n se convirtió en 0, por lo que n > 0 convirtió en falso. Debido a que el bucle vivió su vida natural, por así decirlo, se ejecuta la cláusula else. Ahora observe la diferencia aquí:

>>> n = 5
>>> while n > 0:
... n -= 1
... print(n)
... if n == 2:
... break
... else:
... print('Loop done.')
...
4
3
2

Este bucle se termina prematuramente con rotura de puente, por lo que no se ejecuta la cláusula else.

Puede parecer como si el significado de la palabra persona no encaja el bucle while, así como lo hace la sentencia if. Guido van Rossum, el creador de Python, en realidad, ha dicho que, si tuviera que hacerlo de nuevo, se iría al mismo tiempo que otra cláusula de salida de bucle de la lengua.

Una de las siguientes interpretaciones podría ayudar a hacerlo más intuitivo:

  • Piense en la cabecera del bucle (mientras n > 0) como una sentencia if (si n > 0) que se ejecuta una y otra vez, con el cláusula else ser finalmente ejecutado cuando la condición se convierte en falsa.
  • Piense en lo demás como si se tratara de NOBREAK, porque el bloque que sigue es ejecutado si no había un descanso.

Piense en la cabecera del bucle (n mientras > 0) como una sentencia if (si n > 0) que se ejecuta una y otra vez, con la cláusula else ser finalmente ejecutado cuando la condición se convierte en falsa.

Piense en lo demás como si se tratara de NOBREAK, porque el bloque que sigue es ejecutado si no había un descanso.

Si no encuentra ninguna de estas interpretaciones votos, entonces no dude en hacer caso omiso de ellos. Cuando

podría una cláusula else en un bucle while ser útiles? Una situación común es que si usted está buscando una lista de un artículo específico. Puede usar break para salir del bucle si se encuentra el elemento, y la cláusula más puede contener código que está destinado a ser ejecutado si el artículo no se encuentra:

>>> a = ['foo', 'bar', 'baz', 'qux']
>>> s = 'corge'

>>> i = 0
>>> while i < len(a): ... if a[i] == s: ... # Processing for item found ... break ... i += 1 ... else: ... # Processing for item not found ... print(s, 'not found in list.') ... corge not found in list.

Nota: incluya la palabra clave es útil para ilustrar el concepto, pero que en realidad sería muy poco probable que buscar una lista de esa manera.

En primer lugar, las listas se procesan generalmente con iteración definido, no un bucle while. iteración definitiva se trata en la siguiente tutorial de esta serie.

En segundo lugar, Python proporciona una función de formas de buscar un elemento en una lista. Se puede utilizar el operador in:

>>> if s in a:
... print(s, 'found in list.')
... else:
... print(s, 'not found in list.')
...
corge not found in list.

El método list.index () también funcionaría. Este método lanza una excepción ValueError si el artículo no se encuentra en la lista, por lo que hay que entender el manejo de usarlo excepción. En Python, se utiliza una instrucción try para manejar una excepción. Un ejemplo sería el siguiente:

>>> try:
... print(a.index('corge'))
... except ValueError:
... print(s, 'not found in list.')
...
corge not found in list.

Usted aprenderá acerca de manejo de excepciones más adelante en esta serie.

una cláusula ELSE con un bucle mientras que es un poco de una rareza, no ve a menudo. Pero no rehuir de que si encuentra una situación en la que usted se siente que añade claridad a su código!

bucles infinitos

Supongamos que se escribe un bucle while que teóricamente nunca termina. Sonidos extraños, ¿verdad?

Considere este ejemplo:

>>> while True:
... print('foo')
...
foo
foo
foo
.
.
.
foo
foo
foo
KeyboardInterrupt
Traceback (most recent call last):
File "", line 2, in
print('foo')

Este código se terminó mediante Ctrl + C, que genera una interrupción desde el teclado. De lo contrario, habría continuado sin cesar. Muchas líneas de salida foo se han eliminado y sustituido por los puntos suspensivos vertical en la salida se muestra.

Claramente, verdadero nunca será falsa, o todos estamos en muy serios problemas. Así, mientras Verdadero: inicia un bucle infinito que, teóricamente, se ejecutará siempre.

Tal vez eso no suena como algo que te gustaría hacer, pero este patrón es en realidad bastante común. Por ejemplo, es posible escribir código para un servicio que se inicia y se ejecuta solicitudes de servicio siempre que acepten. “Para siempre” en este contexto significa hasta que se cierra el sistema, o hasta que la muerte térmica del universo, lo que ocurra primero.

Más prosaicamente, recuerda que los bucles se pueden dividir de la sentencia break. Puede ser más fácil de terminar un bucle basado en condiciones reconocidas en el cuerpo del bucle, en lugar de en una condición evaluada en la parte superior.

Aquí hay otra variante del bucle se muestra más arriba que elimina sucesivamente elementos de una lista usando .pop () hasta que se vacíe:

>>> a = ['foo', 'bar', 'baz']
>>> while True:
... if not a:
... break
... print(a.pop(-1))
...
baz
bar
foo

Cuando una se vacía, no se convierte en una verdad, y la sentencia break sale del bucle.

También puede especificar varias sentencias break en un bucle:

while True:
if : # One condition for loop termination
break
...
if : # Another termination condition
break
...
if : # Yet another
break

en casos como este, donde hay múltiples razones para terminar el bucle, es a menudo más limpia es la de romper a cabo desde varios lugares diferentes, en lugar de tratar de especificar todos los condiciones de terminación de la cabecera de bucle. bucles

infinito puede ser muy útil. Sólo recuerde que debe asegurarse el bucle se rompe fuera de en algún momento, infinito por lo que no se convierte en verdad.

Nested mientras Loops

En general, las estructuras de control de Python puede anidarse uno dentro del otro. Por ejemplo, si / elif / else condicional declaraciones se pueden anidar:

if age < 18: if gender == 'M': print('son') else: print('daughter') elif age >= 18 and age < 65: if gender == 'M': print('father') else: print('mother') else: if gender == 'M': print('grandfather') else: print('grandmother')

Del mismo modo, un tiempo bucle puede estar contenido dentro de otro bucle while, como se muestra aquí:

>>> a = ['foo', 'bar']
>>> while len(a):
... print(a.pop(0))
... b = ['baz', 'qux']
... while len(b):
... print('>', b.pop(0))
...
foo
> baz
> qux
bar
> baz
> qux

Una ruptura o continuar declaración que se encuentra dentro de bucles anidados se aplica a la más cercana bucle adjuntando:

while :
statement
statement

while :
statement
statement
break # Applies to while : loop

break # Applies to while : loop

Además, mientras que los bucles pueden estar dentro anidada si / elif / else, y viceversa:

if :
statement
while :
statement
statement
else:
while :
statement
statement
statement
while :
if :
statement
elif :
statement
else:
statement

if :
statement

de hecho, todas las estructuras de control de Python puede ser entremezclado entre sí en cualquier grado que necesita. Esto es como debe ser. Imaginar lo frustrante que sería si había restricciones inesperados como “Un bucle while no puede estar contenido dentro de una sentencia if” o “while sólo pueden anidarse unos dentro de otros, como máximo, cuatro de profundidad.” Usted tendría un momento muy difícil recordar a todos ellos.

limitaciones numéricas o lógicas aparentemente arbitraria se considera un signo de un mal diseño del lenguaje de programación. Afortunadamente, usted no encontrará muchos en Python.

de una línea mientras Loops

Al igual que con una sentencia if, un bucle while puede especificarse en una sola línea. Si hay varias instrucciones en el bloque que compone el cuerpo del bucle, pueden estar separados por punto y coma (;):

>>> n = 5
>>> while n > 0: n -= 1; print(n)

4
3
2
1
0

Esto sólo funciona con simples declaraciones embargo. No se pueden combinar dos sentencias compuestas en una sola línea. De este modo, se puede especificar un tiempo de bucle en una sola línea que el anterior, y que escriba una sentencia if en una línea:

>>> if True: print('foo')

foo

Pero no se puede hacer esto:

>>> while n > 0: n -= 1; if True: print('foo')
SyntaxError: invalid syntax

Recuerde que PEP 8 desalienta varias instrucciones en una línea. Así que probablemente no debería estar haciendo nada de esto muy a menudo de todos modos.

Conclusión

En este tutorial, aprendió sobre indefinida iteración utilizando el pitón bucle while. Ahora es capaz de:

  • Construct aunque básicas y complejas bucles ejecución del bucle
  • interrupción con rotura de puente y continuar
  • utilizar la cláusula persona con un bucle while
  • acuerdo con bucles infinitos

Ahora debería tener una buena comprensión de cómo ejecutar una pieza de código repetitiva.

Tome el Cuestionario: Prueba sus conocimientos con nuestro sistema interactivo “Python 'mientras que' Loops” cuestionario. Al finalizar, recibirá una puntuación para que pueda realizar un seguimiento de su progreso en el aprendizaje a través del tiempo:

Contesta la trivia »

El siguiente tutorial de esta portadas de la serie iteración definida con la ejecución bucles recurrentes, donde se especifica el número de repeticiones de forma explícita .

Mira ahora Este tutorial tiene un vídeo relacionado curso creado por el equipo del Real Python. Mira que junto con el tutorial escrito para profundizar su comprensión: Mastering While

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *