Sentencias de bucle en Python3

Este capítulo presentará el uso de las sentencias de bucle en Python.

Las sentencias de bucle en Python son for y while.

El diagrama de estructura de control de las sentencias de bucle en Python se muestra a continuación:

Palabras clave y métodos de control de bucles

Control de bucles
Palabra clave / Función Descripción Ejemplo
for Bucle de iteración, utilizado para recorrer secuencias u objetos iterables. for i in list:
while Bucle condicional, se ejecuta mientras la condición sea True. while x > 0:
break Termina inmediatamente el bucle actual. break
continue Omite el código restante de esta iteración y pasa a la siguiente. continue
else (bucle) Se ejecuta cuando el bucle termina normalmente (sin break). for i in range(3): ... else: ...
pass Sentencia de marcador de posición en el bucle (operación nula). for i in range(5): pass
range() Genera secuencias de enteros, a menudo usada con el bucle for. range(0, 5)
enumerate() Obtiene índice y valor simultáneamente al iterar. for i, v in enumerate(list):

Bucle while

La forma general de la sentencia while en Python es:

while 判断条件(condition):
    执行语句(statements)……

El diagrama de flujo de ejecución es el siguiente:

Demostración en Gif de la ejecución:

También hay que prestar atención a los dos puntos y la indentación. Además, en Python no existe el bucle do..while.

El siguiente ejemplo usa while para calcular la suma del 1 al 100:

Ejemplo

#!/usr/bin/env python3 n = 100 sum = 0 counter = 1 while counter <= n: sum = sum + counter counter += 1 print("La suma de 1 a %d es: %d" % (n,sum))

El resultado de la ejecución es el siguiente:

1 到 100 之和为: 5050

Bucle infinito

Podemos implementar un bucle infinito estableciendo una condición que nunca sea false, por ejemplo:

Ejemplo

#!/usr/bin/python3 var = 1 while var == 1 : # La expresión siempre es verdadera num = int(input("Ingresa un número:")) print ("El número que ingresaste es:", num) print ("Good bye!")

Al ejecutar el script anterior, el resultado es el siguiente:

输入一个数字  :5
你输入的数字是:  5
输入一个数字  :

Puedes usar CTRL+Cpara salir del bucle infinito actual.

El bucle infinito es muy útil para las solicitudes en tiempo real de clientes en un servidor.

Bucle while con sentencia else

Si la condición después de while es false, se ejecuta el bloque de sentencias de else.

El formato de sintaxis es el siguiente:

while <expr>:
    <statement(s)>
else:
    <additional_statement(s)>

Si la condición expr es true, se ejecuta el bloque de sentencias statement(s); si es false, se ejecuta additional_statement(s).

El bucle imprime números y evalúa su magnitud:

Ejemplo

#!/usr/bin/python3 count = 0 while count < 5: print (count, "menor que 5") count = count + 1 else: print (count, "mayor o igual a 5")

Al ejecutar el script anterior, el resultado es el siguiente:

0  小于 5
1  小于 5
2  小于 5
3  小于 5
4  小于 5
5  大于或等于 5

Grupo simple de sentencias

Similar a la sintaxis de la sentencia if, si el cuerpo de tu bucle while contiene solo una sentencia, puedes escribir esa sentencia en la misma línea que while, como se muestra a continuación:

Ejemplo

#!/usr/bin/python flag = 1 while (flag): print ('¡Bienvenido al tutorial de Ejemplo!') print ("Good bye!")

Nota:Puedes interrumpir el bucle infinito anterior usando CTRL+C.

Al ejecutar el script anterior, el resultado es el siguiente:

¡Bienvenido a Ejemplo!
¡Bienvenido a Ejemplo!
¡Bienvenido a Ejemplo!
¡Bienvenido a Ejemplo!
¡Bienvenido a Ejemplo!
……

Sentencia for

El bucle for de Python puede iterar sobre cualquier objeto iterable, como una lista o una cadena.

El formato general del bucle for es el siguiente:

for <variable> in <sequence>: <statements> else: <statements>

Diagrama de flujo:

Ejemplo de bucle for en Python:

Ejemplo

#!/usr/bin/python3 sites = ["Baidu", "Google","Ejemplo","Taobao"] for site in sites: print(site)

El resultado de ejecutar el código anterior es:

Baidu
Google
Ejemplo
Taobao

También se puede usar para imprimir cada carácter de una cadena:

Ejemplo

#!/usr/bin/python3 word = 'ejemplo' for letter in word: print(letter)

El resultado de ejecutar el código anterior es:

r
u
n
o
o
b

Los valores de rango enteros se pueden usar junto con la función range():

Ejemplo

#!/usr/bin/python3 # Todos los números del 1 al 5: for number in range(1, 6): print(number)

El resultado de ejecutar el código anterior es:

1
2
3
4
5

for...else

En Python, la sentencia for...else se utiliza para ejecutar un bloque de código después de que el bucle termine.

El formato de sintaxis es el siguiente:

for item in iterable:
    # 循环主体
else:
    # 循环结束后执行的代码

Cuando el bucle se completa (es decir, se han recorrido todos los elementos de iterable), se ejecuta el código de la cláusula else. Si durante el bucle se encuentra una sentencia break, el bucle se interrumpe y no se ejecuta la cláusula else.

Ejemplo

for x in range(6):
  print(x)
else:
  print("Finally finished!")

Después de ejecutar el script, el resultado es:

0
1
2
3
4
5
Finally finished!

El siguiente ejemplo de for usa la sentencia break, que sirve para salir del cuerpo del bucle actual; no se ejecutará la cláusula else:

Ejemplo

#!/usr/bin/python3 sites = ["Baidu", "Google","Ejemplo","Taobao"] for site in sites: if site == "Ejemplo": print("¡Tutorial de Ejemplo!") break print("Datos del bucle" + site) else: print("¡Sin datos de bucle!") print("¡Bucle completado!")

Después de ejecutar el script, cuando el bucle llega a "Ejemplo", sale del cuerpo del bucle:

循环数据 Baidu
循环数据 Google
Ejemplo!
完成循环!

Función range()

Si necesitas iterar sobre una secuencia de números, puedes usar la función incorporada range(). Esta genera una secuencia numérica, por ejemplo:

Ejemplo

>>>for i in range(5): ... print(i) ... 0 1 2 3 4

También puedes usar range() para especificar valores en un intervalo:

Ejemplo

>>>for i in range(5,9) : print(i) 5 6 7 8 >>>

También puedes hacer que range() comience en un número específico y use un incremento diferente (incluso negativo, a veces llamado 'paso'):

Ejemplo

>>>for i in range(0, 10, 3) : print(i) 0 3 6 9 >>>

Números negativos:

Ejemplo

>>>for i in range(-10, -100, -30) : print(i) -10 -40 -70 >>>

Puedes combinar las funciones range() y len() para iterar sobre los índices de una secuencia, como se muestra a continuación:

Ejemplo

>>>a = ['Google', 'Baidu', 'Ejemplo', 'Taobao', 'QQ'] >>> for i in range(len(a)): ... print(i, a[i]) ... 0 Google 1 Baidu 2 Ejemplo 3 Taobao 4 QQ >>>

También puedes usar la función range() para crear una lista:

Ejemplo

>>>list(range(5)) [0, 1, 2, 3, 4] >>>

Para más información sobre el uso de range(), consulta:https://www.example.com/python3/python3-func-range.html


Sentencias break y continue y cláusula else en bucles

Diagrama de flujo de ejecución de break:

Diagrama de flujo de ejecución de continue:

Proceso de ejecución del código de la sentencia while:

Proceso de ejecución del código de la sentencia for:

breakLa sentencia break permite salir del cuerpo de los bucles for y while. Si terminas un bucle for o while, cualquier bloque else asociado no se ejecutará.

continueLa sentencia continue se usa para indicar a Python que omita las sentencias restantes del bloque de bucle actual y continúe con la siguiente iteración.

Ejemplo

Uso de break en while:

Ejemplo

n = 5
while n > 0:
    n -= 1
    if n == 2:
        break
    print(n)
print('Fin del bucle.')

El resultado de salida es:

4
3
循环结束。

Uso de continue en while:

Ejemplo

n = 5
while n > 0:
    n -= 1
    if n == 2:
        continue
    print(n)
print('Fin del bucle.')

El resultado de salida es:

4
3
1
0
循环结束。

Más ejemplos a continuación:

Ejemplo

#!/usr/bin/python3 for letter in 'Ejemplo': # Primer ejemplo if letter == 'b': break print ('La letra actual es:', letter) var = 10 # Segundo ejemplo while var > 0: print ('El valor de la variable actual es:', var) var = var -1 if var == 5: break print ("Good bye!")

El resultado de ejecutar el script anterior es:

当前字母为 : R
当前字母为 : u
当前字母为 : n
当前字母为 : o
当前字母为 : o
当前变量值为 : 10
当前变量值为 : 9
当前变量值为 : 8
当前变量值为 : 7
当前变量值为 : 6
Good bye!

El siguiente ejemplo recorre la cadena Ejemplo y omite la salida cuando encuentra la letra o:

Ejemplo

#!/usr/bin/python3 for letter in 'Ejemplo': # Primer ejemplo if letter == 'o': # Omitir salida cuando la letra es o continue print ('Letra actual:', letter) var = 10 # Segundo ejemplo while var > 0: var = var -1 if var == 5: # Omitir salida cuando la variable es 5 continue print ('Valor actual de la variable:', var) print ("Good bye!")

El resultado de ejecutar el script anterior es:

当前字母 : R
当前字母 : u
当前字母 : n
当前字母 : b
当前变量值 : 9
当前变量值 : 8
当前变量值 : 7
当前变量值 : 6
当前变量值 : 4
当前变量值 : 3
当前变量值 : 2
当前变量值 : 1
当前变量值 : 0
Good bye!

Las sentencias de bucle pueden tener una cláusula else que se ejecuta cuando el bucle termina al agotarse la lista (en el caso de for) o cuando la condición se vuelve false (en el caso de while), pero no se ejecuta si el bucle se termina con break.

El siguiente ejemplo es un bucle para encontrar números primos:

Ejemplo

#!/usr/bin/python3 for n in range(2, 10): for x in range(2, n): if n % x == 0: print(n, 'es igual a', x, '*', n//x) break else: # No se encontró ningún elemento en el bucle print(n, 'es un número primo')

El resultado de ejecutar el script anterior es:

2  是质数
3  是质数
4 等于 2 * 2
5  是质数
6 等于 2 * 3
7  是质数
8 等于 2 * 4
9 等于 3 * 3

Sentencia pass

Python pass es una sentencia vacía, utilizada para mantener la integridad de la estructura del programa.

pass no hace nada, generalmente se usa como sentencia de relleno, como en el siguiente ejemplo

Ejemplo

>>>while True: ... pass # Esperando interrupción del teclado (Ctrl+C)

La clase más pequeña:

Ejemplo

>>>class MyEmptyClass: ... pass

El siguiente ejemplo ejecuta el bloque de sentencias pass cuando la letra es o:

Ejemplo

#!/usr/bin/python3 for letter in 'Ejemplo': if letter == 'o': pass print ('Ejecutar el bloque pass') print ('Letra actual :', letter) print ("Good bye!")

El resultado de ejecutar el script anterior es:

当前字母 : R
当前字母 : u
当前字母 : n
执行 pass 块
当前字母 : o
执行 pass 块
当前字母 : o
当前字母 : b
Good bye!
Otras extensiones