Bucles#
Si deseas que el código se ejecute repetidamente, puedes hacer uso de los bucles.
Ver también
Bucles For#
Para iterar sobre un rango de números, podemos usar un simple bucle for y la función range.
En la siguiente celda, el comando print(i) se ejecutará varias veces para diferentes valores de i. Iteramos sobre un rango de valores:
for i in range(0, 5):
print(i)
0
1
2
3
4
Ten en cuenta que el código anterior que está indentado solo se ejecutará para el primer número dado (0) y continuará hasta el último número (5) pero sin incluirlo.
También puedes iterar sobre un rango de números con un paso definido, por ejemplo, paso 3:
for i in range(0, 10, 3):
print(i)
0
3
6
9
Iterar sobre arrays te permite hacer algo con todos los elementos del array:
for animal in ["Dog", "Cat", "Mouse"]:
print(animal)
Dog
Cat
Mouse
Puedes iterar sobre dos arrays en paralelo, por pares, de esta manera:
# recorriendo arrays por pares
measurement_1 = [1, 9, 7, 1, 2, 8, 9, 2, 1, 7, 8]
measurement_2 = [4, 5, 5, 7, 4, 5, 4, 6, 6, 5, 4]
for m_1, m_2 in zip(measurement_1, measurement_2):
print("Paired measurements: " + str(m_1) + " and " + str(m_2))
Paired measurements: 1 and 4
Paired measurements: 9 and 5
Paired measurements: 7 and 5
Paired measurements: 1 and 7
Paired measurements: 2 and 4
Paired measurements: 8 and 5
Paired measurements: 9 and 4
Paired measurements: 2 and 6
Paired measurements: 1 and 6
Paired measurements: 7 and 5
Paired measurements: 8 and 4
Si también quieres saber el índice del elemento en la lista, usa la función enumerate:
# numerando e iterando a través de colecciones
for index, animal in enumerate(["Dog", "Cat", "Mouse"]):
print("The animal number " + str(index) + " in the list is " + animal)
The animal number 0 in the list is Dog
The animal number 1 in the list is Cat
The animal number 2 in the list is Mouse
Generando listas en bucles#
Se pueden generar listas usando bucles for. La forma convencional de hacer esto implica múltiples líneas de código:
# empezamos con una lista vacía
numbers = []
# y añadimos elementos
for i in range(0, 5):
numbers.append(i * 2)
print(numbers)
[0, 2, 4, 6, 8]
También se puede escribir de forma más corta. El concepto subyacente se llama generadores.
numbers = [i * 2 for i in range(0, 5)]
print(numbers)
[0, 2, 4, 6, 8]
La combinación convencional que involucra sentencias if se ve así:
# empezamos con una lista vacía
numbers = []
# y añadimos elementos
for i in range(0, 5):
# comprobamos si el número es impar
if i % 2:
numbers.append(i * 2)
print(numbers)
[2, 6]
Y la versión corta así:
numbers = [i * 2 for i in range(0, 5) if i % 2]
print(numbers)
[2, 6]
Bucles While#
Otra forma de hacer bucles es usando el bucle while. Funciona comprobando una condición, similar a la sentencia if. Interrumpirá la ejecución tan pronto como la condición ya no sea verdadera:
number = 1024
while (number > 1):
number = number / 2
print(number)
512.0
256.0
128.0
64.0
32.0
16.0
8.0
4.0
2.0
1.0
Interrumpiendo bucles#
Puedes interrumpir los bucles en puntos específicos de tu código usando el comando break:
number = 1024
while (True):
number = number / 2
print(number)
if number < 1:
break;
512.0
256.0
128.0
64.0
32.0
16.0
8.0
4.0
2.0
1.0
0.5
for i in range(10):
print(i)
if i > 5:
break
0
1
2
3
4
5
6
Saltando iteraciones en bucles#
Si quieres saltar iteraciones, puedes usar la sentencia continue. Esto a menudo tiene sentido en combinación con un if:
for i in range(0, 10):
if i >= 3 and i <= 6:
continue
print(i)
0
1
2
7
8
9
Ejercicio 1#
Supón que tienes una lista de nombres de archivos y quieres hacer algo con ellos, por ejemplo, imprimirlos. Programa un bucle for que imprima todos los nombres de archivos que terminen en “tif”.
file_names = ['dataset1.tif', 'dataset2.tif', 'summary.csv', 'readme.md', 'blobs.tif']
Ejercicio 2#
Supón que tienes una lista de radios de círculos. Haz una tabla (diccionario) con dos columnas: radio y área.
radii = [3, 15, 67, 33, 12, 8, 12, 9, 22]