unoadiez = range(1,11)y la siempre presente salida:
for cuenta in unoadiez:
print cuenta
1La salida es muy familiar, pero el código es muy diferente. El primer renglón usa la función range. La función range usa dos argumentos del siguiente modo: range(comienzo,final). comienzo es el primer número producido. final es uno más que el último número. Observe que este programa puede ser más corto:
2
3
4
5
6
7
8
9
10
for cuenta in range(1,11):Estos son algunos ejemplos para mostrar lo que sucede con el comando range:
print cuenta
>>> range(1,10)El siguiente renglón
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(-32, -20)
[-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21]
>>> range(5,21)
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>> range(21,5)
[]
for cuenta in unoadiez:
usa la estructura
de control for. Una estructura de control for tiene
la siguiente apariencia for variable in lista:. listaes
recorrida empezando con el primer elemento hasta el final. A medida
que for recorre cada elemento de una lista, pone cada uno dentro
de variable. Esto permite que variable sea
usada cada vez que el rizo for da una vuelta. He aquí otro
ejemplo (este no tiene que escribirlo) como demostración:
demolista = ['vida',42, 'el universo', 6,'y',7,'todas las cosas']La salida es:
for articulo in demolista:
print "El articulo actualmente es:",
print articulo
El articulo actualmente es: vidaObserve cómo el rizo for recorre la lista y sucesivamente hace que cada elemento sea el valor de articulo. (Vea cómo, si no desea que print empiece otro renglón, añada una coma al final del enunciado(p. ej., si desea imprimir algo en el mismo renglón). ) Entonces, ¿para qué sirve for? (uf) El primer uso es para recorrer todos los elementos de una lista y hacer algo con ellos . Veamos un modo rápido para sumar todos los elementos:
El articulo actualmente es: 42
El articulo actualmente es: el universo
El articulo actualmente es: 6
El articulo actualmente es: y
El articulo actualmente es: 7
El articulo actualmente es: todas las cosas
lista = [2,4,6,8]y la salida es simplemente:
suma = 0
for num in lista:
suma = suma + num
print "La suma es: ",suma
La suma es: 20O pudiera escribir un programa para descubrir si hay duplicados en una lista, tal como el siguiente programa:
lista = [4, 5, 7, 8, 9, 1,0,7,10]y para que vean que sí funciona:
lista.sort()
prev = lista[0]
del lista[0]
for cosa in lista:
if prev == cosa:
print "Encontre un duplicado de ",prev
prev = cosa
Encontre un duplicado de 7Muy bien, entonces, ¿cómo funciona? Le presento una versión especial para depuración para explicar mejor (no necesita escribir esto):
l = [4, 5, 7, 8, 9, 1,0,7,10]y la salida es:
print "l = [4, 5, 7, 8, 9, 1,0,7,10]","\tl:",l
l.sort()
print "l.sort()","\tl:",l
prev = l[0]
print "prev = l[0]","\tprev:",prev
del l[0]
print "del l[0]","\tl:",l
for elemento in l:
if prev == elemento:
print "Encontre un duplicado de ",prev
print "si prev == elemento:","\tprev:",prev,"\telemento:",elemento
prev = elemento
print "prev = elemento","\t\tprev:",prev,"\telemento:",elemento
l = [4, 5, 7, 8, 9, 1,0,7,10] l: [4, 5, 7, 8, 9, 1, 0, 7, 10]La razón por la cual puse tantos enunciados print en el código es para que usted pueda ver lo que sucede a cada paso. (Por cierto, si alguna vez no puede descubrir porqué un programa no funciona, intente poniendo muchos enunciados print para que pueda ver lo que está sucediendo). Primero el programa empieza con una aburrida lista. Luego el programa ordena la lista, esto es para que los duplicados sean consecutivos. El programa luego declara la variable (para el valor) prev(io). Luego, el primer elemento de la lista es borrado para no pensar incorrectamente que es un duplicado. Luego entramos en el rizo for. Cada elemento de la lista es comparado contra el valor previo. Si es igual, hemos encontrado un duplicado. Cambiamos entonces el valor de prev de modo que a la siguiente vuelta del rizo, el valor de prev sea el elemento previo al actual. Como era de esperarse, encontramos un duplicado para 7. (Vea cómo
#sort() reduce el numero de comparaciones,
#porque asi los duplicados seran elementos consecutivos
l.sort() l: [0, 1, 4, 5, 7, 7, 8, 9, 10]
prev = l[0] prev: 0
del l[0] l: [1, 4, 5, 7, 7, 8, 9, 10]
si prev == elemento: prev: 0 elemento: 1
prev = elemento prev: 1 elemento: 1
si prev == elemento: prev: 1 elemento: 4
prev = elemento prev: 4 elemento: 4
si prev == elemento: prev: 4 elemento: 5
prev = elemento prev: 5 elemento: 5
si prev == elemento: prev: 5 elemento: 7
prev = elemento prev: 7 elemento: 7
Duplicate of 7 Found
si prev == elemento: prev: 7 elemento: 7
prev = elemento prev: 7 elemento: 7
si prev == elemento: prev: 7 elemento: 8
prev = elemento prev: 8 elemento: 8
si prev == elemento: prev: 8 elemento: 9
prev = elemento prev: 9 elemento: 9
si prev == elemento: prev: 9 elemento: 10
prev = elemento prev: 10 elemento: 10
\t
es usado para imprimir un "tab".)
El otro modo de usar rizos for es para hacer algo un cierto número de veces. Aquí está el código para imprimir los primeros 11 números de la serie de Fibonacci:
a = 1y la sorprendente salida:
b = 1
for c in range(1,10):
print a,
n = a + b
a = b
b = n
1 1 2 3 5 8 13 21 34Todo lo que uno pueda hacer con rizos for lo puede uno hacer con rizos while pero los rizos for proporcionan un modo muy fácil de recorrer todos los elementos de una lista o hacer algo un cierto número de veces.