Python: bucles (for, while)

El bucle for es un poco diferente a otros lenguajes, en Python recorre los elementos de una secuencia.

La definición de for es:

for target_list in expression_list:
	suite
[else:
	suite]

Por lo general target_list es la variable que irá conteniendo los valores de la lista expression_list, aunque hay casos en los que se pueden poner más de una variable y más de una lista.

In [1]: for x in range(4):
   ...:     print(x)
   ...:
0
1
2
3

La parte del else es opcional y se ejecutará siempre que termine el bucle, a menos que se haya usado un break en el primer suite.

In [1]: for x in range(10):
   ...:     print(x)
   ...: else:
   ...:     print("11")
   ...:     print(x)
   ...:
0
1
2
3
4
5
6
7
8
9
11
9

En el primer suite podemos usar continue que no ejecuta el resto de comandos y continua con el siguiente elemento.

In [1]: for x in range(10):
   ...:     if x == 5:
   ...:         continue
   ...:     print(x)
   ...: else:
   ...:     print("11")
   ...:     print(x)
   ...:
0
1
2
3
4
6
7
8
9
11
9

También podemos usar break que termina el bucle por completo y en caso de haber un elsetampoco lo ejecuta.

In [1]: for x in range(10):
   ...:     if x == 5:
   ...:         break
   ...:     print(x)
   ...: else:
   ...:     print("11")
   ...:     print(x)
   ...:
0
1
2
3
4

El bucle while se repite mientras la expresión sea True.

La definición de while es:

while expresion:
	suite
[else:
	suite]

Por lo general target_list es la variable que irá conteniendo los valores de la lista expression_list, aunque hay casos en los que se pueden poner más de una vriable y más de una lista.

In [1]: x = 0

In [2]: while x >= 5:
   ...:     print(x)
   ...:     x += 1
   ...:
0
1
2
3
4
5

La parte del else es opcional y se ejecutará siempre que termine el bucle, a menos que se haya usado un break en el primer suite.

In [1]: x = 0

In [2]: while x >= 5:
   ...:     print(x)
   ...:     x += 1
   ...: else:
   ...:     print("11")
   ...:     print(x)
   ...:
0
1
2
3
4
5
11
6

En el primer suite podemos usar continue que no ejecuta el resto de comandos y continua con el siguiente elemento.

In [1]: x = 0

In [1]: while x >= 5:
   ...:     if x == 3:
   ...:         x += 1
   ...:         continue
   ...:     print(x)
   ...:     x += 1
   ...: else:
   ...:     print("11")
   ...:     print(x)
   ...:
0
1
2
4
5
11
6

También podemos usar break que termina el bucle por completo y en caso de haber un elsetampoco lo ejecuta.

In [1]: x = 0

In [2]: while x >= 5:
   ...:     if x == 3:
   ...:         break
   ...:     print(x)
   ...:     x += 1
   ...: else:
   ...:     print("11")
   ...:     print(x)
   ...:
0
1
2

Retro

Lugares

Redes

Sistemas

Varios