Con motivo de lo de los tutoriales revivo, se supone que esto va en contra de las reglas, pero creo que en este caso es razonable.
Sentencias While y For
En el cap pasado vimos sentencias que permitían que trozos de código no se ejecuten siempre, pero sólo cuando se cumplan o no ciertas condiciones. Ahora veremos cómo se puede hacer que una parte del código se ejecute VARIAS veces, con ligeras diferencias.
Primero tenemos la sentencia "while", que es lo mismo que el "if", pero con una salvedad, que una vez termine de ejecutar el código que tenga dentro, volverá a mirar si la condición es cierta. Me explico:
b=int(raw_input('Introduce un numero entero')) # Pide un numero entero
i=0
while b>0:
b=b/10
i=i+1
print 'El numero tenia '+str(c)+' cifras'
Veamos. Esto lo que hace es contar el número de cifras del número entero que le des(si le das un negativo dice que tiene 0). ¿Cómo lo hace? Primero se crea una variable llamada "i', que ahora es igual a 0, y iniciamos una sentencia "while" que se ejecutará si b es mayor a 0. Si b es mayor a cero, dividirá b entre 10(el decimal que quede no cuenta, Python lo redondeará), sumará 1 a i
y volverá a comprobar si b es mayor a 0. Si lo es, volverá a dividir b, sumar 1 a i y comprobar. Así irá contando y eliminando todas las cifras del número una por una.
El while también se puede usar para hacer un bucle infinito, haré uno para algo tan útil como floodearte la consola.
while True: print 'flood'
Pongo True para que se entienda mejor, pero dónde puse True podría haber puesto cualquier valor menos False, '', [], 0 y creo que algún otro. Podría haber puesto "while 1" o incluso "while 'flood' "(con las comillas, si pongo "while flood" y no existe una variable llamada así dará error). Ese código lo que hace es escribir "flood" hasta que cierres la consola o pares el programa de alguna manera.
La otra sentencia es "for". Sirve para repetir la instrucción un número contado de veces. Explico cómo es.
for i in range(10): # range(10) da como resultado un array[0,1,2,3,4,5,6,7,8,9,10]
print 'Este es el mensaje numero '+str(i)
Esto lo que hace es:
-Crea una variable llamada i, con el valor 0
-Comprueba si i está dentro de range(10), es decir, si i es 0, 10, o cualquiera de los números de en medio.
-Si lo está, ejecuta la acción, que es escribir "Este es el mensaje numero 0", ya que ahora i es 0.
-Incrementa el valor de i en 1.
-Comprueba si i está dentro de range(10), es decir, si i es 0, 10, o cualquiera de los números de en medio.
-Si lo está, ejecuta otra vez la acción, que es escribir "Este es el mensaje numero 1", ya que ahora i es 1.
-Incrementa el valor de i en 1.
-Sigue así hasta que i no esté en range(10) y entonces borra la variable i de la memoria y para de repetir el código.
La variable no tiene por qué llamarse i, puede llamarse j, k, l, o cualquier cosa, como si quieres llamarla "ecchi", pero normalmente se usa "i" o letras siguientes si haces varios for uno dentro de otro, por convención(es decir, porque normalmente es eso lo que se hace y el código se entiende mejor así).
Dejo un pequeño ejercicio para que comprueben si lo han entendido:
-Hacer un programa que reciba un entero por raw_input y sume ese entero y todos los anteriores(si recibe 4, que de la suma de 1+2+3+4). Recordar que range(x) devuelve una lista con todos los números desde 0 hasta x, 0 y x inclusive, aka: range(1) da [0,1], range(3) da [0,1,2,3] y así.