Comenzaremos la clase trabajandando con el bucle for
. Para ello trabajaremos con la idea de "pertenencia" en teoría de conjuntos.
Por ejemplo, si consideramos el conjunto $A=\{a,b,1,2\}$, es claro que el 1 es un elemento del conjunto $A$. La anterior idea se expresa como $1\in A$, donde el símbolo "$\in$" se lee como "está". Así $1\in A$ se puede leer como "el uno está en el conjunto $A$". De tal manera podemos decir que $1\in A, 2\in A, a\in A, b\in A$, sin embargo es un hecho que $3\notin A$: "el tres no está en el conjunto $A$". Ahora bien, en la clase 6 vimos brevemente cómo trabajar con listas en Python. Por ejemplo podemos crear la lista
A = ["a", "b", 1, 2]
print(A)
['a', 'b', 1, 2]
Sabemos que $a\in A$, luego, podemos utilizar
print("a" in A)
True
para ver si la cadena de texto "a"
es un elemento de la lista A
. Si sí lo es, entonces se nos arrojará el valor lógico True
, si "a"
no es un elemento de A
entonces se nos arrojará False
. Notemos que "a" in A
puede leerse como "a está en A".
La palabra in
en español significa, en este contexto, "en/está". De tal manera tenemos que
in
se puede interpretar como "en o está" dentro del lenguaje Python.y ambas ideas coinciden.
Por otro lado, el bucle for presenta la siguiente estructura básica
for <variable> in <serie de valores>:
operaciones
Nuevamente, de acuerdo a su sintaxis, la interpretación de cómo funciona el bucle for
es muy intuitiva. Puede decirse que el código anterior se lee como: para la variable <variable>
en el conjunto <serie de valores>
, realizamos las siguientes operaciones. Por ejemplo
# creamos una lista
A = ["a", "b", 1, 2]
# implementamos un bucle for
for x in A:
print(x)
a b 1 2
el cual actúa como: para la variable x
en la lista A
imprime x
. Donde la variable del bucle for
"recorre" todos los elementos de la lista A
.
Antes de pasar a más ejemplos observemos el diagrama de flujo del bucle for
Luego, del ejemplo que vimos podemos considerar el diagrama
Es por ello que nuestro primer for
actúo sobre todos los elementos de la lista A
pues, en nuestro caso, se imprime la variable x
cuando x = "a"
, luego se pregunta si ya hemos alcanzado todos los elementos de la lista, como la respuesta es que no, continuamos ahora con x = "b"
y así consecutivamente hasta alcanzar el último elemento de la lista. En otras palabras
Donde el bucle finalizará una vez que se imprima el valor de x
cuando x = 2
, el cual es el último elemento de la lista. De tal manera, la variable dentro del bucle for
recorrerá todos los elementos de la serie de valores que ocupemos.
Antes de continuar veamos una alternativa al código del ejemplo anterior:
# creamos una lista
A = ["a", "b", 1, 2]
# implementamos un bucle for
for x in A:
print(x, " ", end = "")
a b 1 2
Notemos ahora que la impresión ha sido horizontal en vez de vertical, lo cual se ha conseguido dado que hemos agregado end=""
como parámetro del print()
.
Por otro lado, podemos trabajar con conjuntos de número enteros y considerarlos así para la <serie de valores>
del bucle for
, lo cual conseguimos usando range( , )
. Por ejemplo range(0,5)
crea un conjunto de números que comienza en el 0, después va el 1, el 2, el 3 y termina en el 4. Entonces, la segunda entrada de range( , )
indica el límite de valor el cual podremos alcanzar en dicho conjunto, sin incluir dicho valor en el conjunto. En otras palabra, si $x\in\mathbb{Z}^{+}$, el intervalo $0\leq x<5$ representa el rango de valores que puede tomar $x$; o en código tendríamos que for x in range(0,5)
.
for i in range(0 , 5):
print(i, " ", end = " ")
0 1 2 3 4
o también
for i in range(0 , 5):
print(i)
0 1 2 3 4
Podemos agregar una entrada más a range( , )
la cual indicara el valor del incremento que se realice, por ejemplo
for i in range(0 , 11, 2):
print(i, " ", end = " ")
0 2 4 6 8 10
Cuando deseamos implementar un bucle for
no siempre queremos que la variable del bucle sea empleada dentro de las operaciones del mismo. Por ejemplo, puede que sólo nos interese repetir una acción.
print("hola")
print()
print("hola")
print()
print("hola")
print()
print("hola")
hola hola hola hola
Lo anterior puede reemplazarse como
for _ in range(0 , 5):
print("hola")
print()
hola hola hola hola hola
y alternativamente
for _ in range(0 , 5):
print("hola", " ", end = " ")
hola hola hola hola hola
Donde colocamos la variable _
que se conoce como variable anónima, consiguiendo así sólo repetir la acción que deseabamos sin incluir una variable al bucle.