Saltar a contenido
 No os perd谩is mi futuro contenido, seguidme en y Youtube 馃榿

Iteraciones

Iterar significa realizar una acci贸n varias veces. Cada vez que se repite se denomina iteraci贸n.

Sentencia while (mientras)

Se basa en repetir un bloque a partir de evaluar una condici贸n l贸gica, siempre que 茅sta sea True. Queda en las manos del programador decidir el momento en que la condici贸n cambie a False para hacer que el While finalice.

Note

c = 0
while c <= 5:
    c+=1
    print("c vale", c)
c vale 1
c vale 2
c vale 3
c vale 4
c vale 5
c vale 6

Uso de else en while

Se encadena al While para ejecutar un bloque de c贸digo una vez la condici贸n ya no devuelve True (normalmente al final):

Note

c = 0
while c <= 5:
    c+=1
    print("c vale", c)
else:
    print("Se ha completado toda la iteraci贸n y c vale", c)
c vale 1
c vale 2
c vale 3
c vale 4
c vale 5
c vale 6
Se ha completado toda la iteraci贸n y c vale 6

Instrucci贸n break

Sirve para "romper" la ejecuci贸n del While en cualquier momento. No se ejecutar谩 el Else, ya que 茅ste s贸lo se llama al finalizar la iteraci贸n.:

Note

c = 0
while c <= 5:
    c+=1
    if (c==4):
        print("Rompemos el bucle cuando c vale", c)
        break
    print("c vale",c)
else:
    print("Se ha completado toda la iteraci贸n y c vale", c)
c vale 1
c vale 2
c vale 3
Rompemos el bucle cuando c vale 4

Instrucci贸n continue

Sirve para "saltarse" la iteraci贸n actual sin romper el bucle.

Note

c = 0
while c <= 5:
    c+=1
    if c==3 or c==4:
        # print("Continuamos con la siguiente iteraci贸n", c)
        continue
    print("c vale",c)
else:
    print("Se ha completado toda la iteraci贸n y c vale", c)
c vale 1
c vale 2
c vale 5
c vale 6
Se ha completado toda la iteraci贸n y c vale 6

Ejemplo men煤 interactivo

Note

print("Bienvenido al men煤 interactivo")
while(True):
    print("""驴Qu茅 quieres hacer? Escribe una opci贸n
    1) Saludar
    2) Sumar dos n煤meros
    3) Salir""")
    opcion = input()
    if opcion == '1':
        print("Hola, espero que te lo est茅s pasando bien")
    elif opcion == '2':
        n1 = float(input("Introduce el primer n煤mero: "))
        n2 = float(input("Introduce el segundo n煤mero: "))
        print("El resultado de la suma es: ",n1+n2)
    elif opcion =='3':
        print("隆Hasta luego! Ha sido un placer ayudarte")
        break
    else:
        print("Comando desconocido, vuelve a intentarlo")
Bienvenido al men煤 interactivo
驴Qu茅 quieres hacer? Escribe una opci贸n
    1) Saludar
    2) Sumar dos n煤meros
    3) Salir
1
Hola, espero que te lo est茅s pasando bien
驴Qu茅 quieres hacer? Escribe una opci贸n
    1) Saludar
    2) Sumar dos n煤meros
    3) Salir
2
Introduce el primer n煤mero: 10
Introduce el segundo n煤mero: 5
El resultado de la suma es:  15.0
驴Qu茅 quieres hacer? Escribe una opci贸n
    1) Saludar
    2) Sumar dos n煤meros
    3) Salir
kdjsk
Comando desconocido, vuelve a intentarlo
驴Qu茅 quieres hacer? Escribe una opci贸n
    1) Saludar
    2) Sumar dos n煤meros
    3) Salir
3
隆Hasta luego! Ha sido un placer ayudarte

Sentencia for (para)

for con listas

Para ilustrar la utilidad de esta sentencia vamos a empezar mostrando como recorrer los elementos de una lista utilizando While:

Note

numeros = [1,2,3,4,5,6,7,8,9,10]
indice = 0
while indice < len(numeros):
    print(numeros[indice])
    indice+=1
1
2
3
4
5
6
7
8
9
10

Lo mismo utilizando el For:

Note

for numero in numeros:  # Para [variable] en [lista]
    print(numero)
1
2
3
4
5
6
7
8
9
10

驴Mucho m谩s f谩cil no?

Para asignar un nuevo valor a los elementos de una lista mientras la recorremos, podr铆amos intentar asignar al n煤mero el nuevo valor:

Note

for numero in numeros:
    numero *= 10   
numeros
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Sin embargo, esto no funciona. La forma correcta de hacerlo es haciendo referencia al 铆ndice de la lista en lugar de la variable:

Note

indice = 0
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for numero in numeros:
    numeros[indice] *= 10
    indice+=1
numeros
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

Podemos utilizar la funci贸n enumerate() para conseguir el 铆ndice y el valor en cada iteraci贸n f谩cilmente:

Note

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for indice,numero in enumerate(numeros):
    numeros[indice] *= 10
numeros
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

for con cadenas

Funciona exactamente igual que con las listas, pero con caracteres en lugar de elementos:

Note

cadena = "Hola amigos"
for caracter in cadena:
    print(caracter)
H
o
l
a

a
m
i
g
o
s

Pero debemos recordar que las cadenas son inmutables:

Note

for i, c in enumerate(cadena):
    cadena[i] = "*"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-8ba888c46579> in <module>()
      1 for i,c in enumerate(cadena):
----> 2     cadena[i] = "*"
TypeError: 'str' object does not support item assignment

Sin embargo siempre podemos generar una nueva cadena:

Note

cadena = "Hola amigos"
cadena2 = ""
for caracter in cadena:
    cadena2 += caracter * 2 
'HHoollaa  aammiiggooss'

La funci贸n range()

Sirve para generar una lista de n煤meros que podemos recorrer f谩cilmente, pero no ocupa memoria porque se interpreta sobre la marcha:

Note

for i in range(10):
    print(i)
0
1
2
3
4
5
6
7
8
9

Esta funci贸n devuelve un generador, una estructura manejada en tiempo de ejecuci贸n:

Note

range(10)
range(0, 10)

Si queremos conseguir la lista literal podemos transformar el range a una lista:

Note

list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

脷ltima edici贸n: 22 de Septiembre de 2018