Bucles

Los bucles permiten iterar rápidamente una y otra vez sobre una estructura de datos. En Python hay dos tipos de bucles: for y while.


In [1]:
# antes de nada, creo unas cuantas variables con listas para jugar
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(numeros)

# fíjate en esta forma nueva de crear una lista a partir de una cadena
# el método .split() me permite "romper" una cadena en una lista de cadenas
# cuando usamos .split() sin más, estamos tokenizando una cadena de texto
semana = "lunes martes miercoles jueves viernes sabado domingo".split()
print(semana)

oracion = "Green colorless ideas sleep furiously".split()
print(oracion)

# sin embargo, puedo especificar una subcadena como separador 
emails = "sandra@mail.com; ana@mail.com; pepe@mail.es".split("; ")
print(emails)


[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
['lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado', 'domingo']
['Green', 'colorless', 'ideas', 'sleep', 'furiously']
['sandra@mail.com', 'ana@mail.com', 'pepe@mail.es']

In [2]:
# puedo acceder a los elementos de la lista a través de índices
print("El tercer número de mi lista es", numeros[2])
print("Y el último email es", emails[-1])


El tercer número de mi lista es 3
Y el último email es pepe@mail.es

Si necesitamos recorrer todos y cada uno de los elementos de la lista, es más sencillo usar un bucle for.

Bucles for.

La instrucción for permite recorrer los elementos de cualquier secuencia ordenada de uno en uno y por orden. La sintaxis de un bloque de código for-in es la siguiente:

for ELEMENTO in SECUENCIA:
    # ejecuta las instrucciones tantas veces como elementos tenga la secuencia
    INSTRUCCIONES

Las palabras reservadas for y in son obligatorias. SECUENCIA puede ser cualquier estructuras de datos que sea una secuencia ordenada (por ejemplo, cadenas, las listas y las tuplas). ELEMENTO es el con el que designamos cada uno de los elementos de SECUENCIA. Ten en cuenta de ELEMENTO adopta, en cada paso del bucle, un valor diferente.


In [3]:
for numero in numeros:
    print("Voy por el numero", numero)


Voy por el numero 1
Voy por el numero 2
Voy por el numero 3
Voy por el numero 4
Voy por el numero 5
Voy por el numero 6
Voy por el numero 7
Voy por el numero 8
Voy por el numero 9
Voy por el numero 10

In [4]:
for dia in semana:
    print("Me gusta el", dia)


Me gusta el lunes
Me gusta el martes
Me gusta el miercoles
Me gusta el jueves
Me gusta el viernes
Me gusta el sabado
Me gusta el domingo

In [5]:
cajon = ["una bicicleta", 234, "el número pi", 23, "un libro", "otro libro"]

# añado un café a mi lista de cosas
cajon.append("un café")

# elimino el segundo elemento
cajon.pop(1)

cajon.remove("un libro")

print("Tengo", len(cajon), "cosas guardadas en un cajón:")
for elemento in cajon:
    print("-", elemento)


Tengo 5 cosas guardadas en un cajón:
- una bicicleta
- el número pi
- 23
- otro libro
- un café

In [6]:
alumnos = "Pepito:Raúl:Ana:Antonio:María".split(":")
print(alumnos)


for alumno in alumnos:
    if alumno == "Paco":
        print("Paco ha venido a clase")
    else:
        print("Pero", alumno, "sí ha venido")


['Pepito', 'Raúl', 'Ana', 'Antonio', 'María']
Pero Pepito sí ha venido
Pero Raúl sí ha venido
Pero Ana sí ha venido
Pero Antonio sí ha venido
Pero María sí ha venido

In [7]:
alumnos = "Pepito:Raúl:Ana:Antonio:María".split(":")

#haVenidoPaco = False

for alumno in alumnos:
    if alumno == "Paco":
        haVenidoPaco = True
        
#if haVenidoPaco == True:
if haVenidoPaco:
    print("Es verdad que Paco ha venido")
else:
    print("Parece que Paco NO ha venido hoy")


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-7-cb6ceda642b3> in <module>()
      8 
      9 #if haVenidoPaco == True:
---> 10 if haVenidoPaco:
     11     print("Es verdad que Paco ha venido")
     12 else:

NameError: name 'haVenidoPaco' is not defined

In [8]:
if "Paco" in alumnos:
    print("Es verdad que Paco ha venido")
else:
    print("Parece que Paco NO ha venido hoy")


Parece que Paco NO ha venido hoy

In [9]:
for letra in "abcdefghijklmnopqrstuvwxyz":
    print(letra)


a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z

In [10]:
d = {"clave1": 1, "clave2":2, "clave3":3 }

for elemento in d:
    print(elemento)
    
print("------------------------")

for clave in d.keys():
    print(clave)
    

print("------------------------")

for valor in d.values():
    print(valor)

    
print("------------------------")

for k, v in d.items():
    print(k, "guarda el valor", v)


clave1
clave2
clave3
------------------------
clave1
clave2
clave3
------------------------
1
2
3
------------------------
clave1 guarda el valor 1
clave2 guarda el valor 2
clave3 guarda el valor 3

Bucles while.

La instrucción while permite establecer un bucle que repita un conjunto de instrucciones siempre que se dé determinada condición. La sintaxis de un bloque de código while es la siguiente:

while CONDICIÓN:
    # ejecuta las instrucciones a continuación mientras CONDICIÓN sea verdadera
    INSTRUCCIONES

Apenas la vamos a utilizar, pero sirva el siguiente ejemplo para ilustrar su uso.


In [11]:
numero = 1
limite = 5

while numero <= limite:
    print("El número", numero, "es menor o igual que", limite)
    numero = numero + 1


El número 1 es menor o igual que 5
El número 2 es menor o igual que 5
El número 3 es menor o igual que 5
El número 4 es menor o igual que 5
El número 5 es menor o igual que 5