El ciclo for en Python

El ciclo for es una estructura cíclica cuya finalidad es ejecutar un código una cierta cantidad de veces. De manera general, en Python, la sintaxis de for es:

for k in iterable:
    # hacer algo

Donde iterable es justamente eso, un iterable de Python que puede ser desde una lista hasta un string. Para la i-ésima iteración la variable de ciclo k adoptará el valor en la i-ésima posición de iterable.

A continuación vemos un ejemplo muy básico:

In [5]:
numeros = [10,20,30,40,50,60]
for numero in numeros:
    print(numero)
10
20
30
40
50
60

Observe que lo único que se hace es imprimir cada elemento que compone la lista numeros.

Revisemos ahora el siguiente ejemplo:

In [7]:
numeros = [10,20,30,40,50,60]
for numero in numeros:
    print(numero, numero**2)
10 100
20 400
30 900
40 1600
50 2500
60 3600

Note que la única diferencia radica, en que además del propio número, también imprimos su cuadrado.

Naturalmente, no sólo podemos "recorrer" listas, sino cualquier elemento que sea iterable, como es el caso de los strings.

In [9]:
nombres = ["Ana", "Lucas", "Catalina", "Javier"]
for nombre in nombres:
    print("Hola " + nombre)
Hola Ana
Hola Lucas
Hola Catalina
Hola Javier

En ocasiones tenemos iterables dentro de otro iterable. Es posible acceder a cada elemento del sub-iterable utilizando múltiple variables de ciclo. Por ejemplo:

In [22]:
puntos = [(0,0), (3,5), (-1,4), (10,2)]
for x,y in puntos:
    print("Px = {0},  Py ={1}".format(x,y))
Px = 0,  Py =0
Px = 3,  Py =5
Px = -1,  Py =4
Px = 10,  Py =2

Una utilidad muy común es la de la función enumerate:

In [24]:
notas = [10,8,10,9,10,7]
for k,nota in enumerate(notas):
    print("La nota en posición {0} es: {1}".format(k,nota))
La nota en posición 0 es: 10
La nota en posición 1 es: 8
La nota en posición 2 es: 10
La nota en posición 3 es: 9
La nota en posición 4 es: 10
La nota en posición 5 es: 7

De manera muy breve, la variable de ciclo k devuelve la posición del elemento para cada iteración.

Algunos ejemplos utilizando ciclos for

Una tabla de multiplicar

In [27]:
n = 2
for k in range(1,11):
    print("{0} x {1} = {2}".format(n,k,n*k))
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20

Un triángulo de caracteres

In [30]:
n = 10
for k in range(1,n+1):
    print("*"*k)
*
**
***
****
*****
******
*******
********
*********
**********

Contando vocales

In [46]:
frase = "Anita lava la tina"
k = 0
for letra in frase.lower():
    if letra in ("a","e","i","o","u"):
        k += 1

print("Hay {0} vocales".format(k))
Hay 8 vocales

La suma de los primeros cien enteros positivos

In [47]:
suma = 0
for num in range(1,101):
    suma += num

print(suma)
5050

Comentarios

Comments powered by Disqus