07 - Bucles (2: for)
Versión en video (3:48 min):
Fund.Prog con Python 2020
07 - Bucles (2: for)
Vamos a tener nuestro primer contacto con un segundo tipo de bucles, que es lo que llamaremos los bucles "for".
Los bucles "for" tienen básicamente dos usos:
-
Por una parte, para hacer contadores.
- Por otra parte, para recorrer listas.
Vamos a empezar por el uso como contador y más adelante, cuando sepamos lo que es una lista. Volveremos a revisitar la orden "for" para ver más detalles de su uso.
¿Cuál es la idea de un contador? En otros lenguajes se puede hacer cosas como decir "quiero ir en una variable, por ejemplo, n, recorriendo desde el valor 1 hasta el valor 20"... y para eso lo que quiero hacer es que me muestres cuánto es el valor de n".
Esa estructura no existe en Python tal cual, No existe un "quiero que n vaya desde 1 hasta 20", pero existe una forma de imitarlo.
Realmente tiene más miga por debajo lo que parece, realmente estamos usando "listas" de esas que estamos dejando para más adelante, pero aun así, nos permitirá hacer algo varias veces de forma sencilla.
¿Cuál va a ser la forma en Python?
Pues pondremos "quiero que mis valores de n los saques de un cierto rango de datos" y ese rango va a ser:
for n in range(a,b):
vamos a probar con 1 a 10 y veremos qué ocurre.
for n in range(1,10):
print(n)
Esta será la forma más cercana en Python hacer un contador como los que permiten otros lenguajes de programación. ¿Qué va a ocurrir si yo lanzo este programa? Pues que va a empezar el 1. Va a seguir dentro de ese rango por el valor 2, valor 3, valor 4, pero no alcanza el valor 10.
1
2
3
4
5
6
7
8
9
Cuando digo toma valores para n en el rango desde 1 hasta 10 el primer valor, ese 1 si que está incluido siempre, pero el valor 10 no está incluido.
Vamos a hacer otra prueba.
Voy a decirle que me muestre desde el 10 hasta el 20.
for n in range(10,20):
print(n)
Verás que empieza en 10, pero no alcanza el 20, parará antes de llegar al 20. Empieza en 10, sigue por 11, 12, 13 y acaba en 19.
10
11
12
13
14
15
16
17
18
19
Hay más variantes, volveremos al orden "for" más adelante, insisto. Pero de momento sí me interesa que conozcas por lo menos un detalle más, que es que se puede poner un tercer detalle opcional, que es el incremento que quiero. Por ejemplo, yo podré decir quiero que vayas de 10 hasta 20 (recuerda: el 20 no incluido) y además quiero que vayas de tres en tres.
for n in range(10,20,3):
print(n)
Eso lo que hará es que escribirá el 10, no escribirá el 11 ni el 12 y pasará al 13, luego pasará al 16, luego pasará al 19. Vamos a comprobarlo...
10
13
16
19
Ahí lo tienes. ¿Qué ocurre si pongo quiero que vaya hasta 10 al 20 y con un salto de 10? Pues el primer dato que escribiría sería el 10, el segundo será el 20, pero el 20 ya está fuera de rango, con lo cual sólo escribirá el 10, no llegará a escribir nada más.
Una última curiosidad antes de salir de la orden "for": ¿Qué ocurre si yo pongo un incremento negativo? Podría hacerlo, podría decir "quiero que mi rango vaya desde 20 hasta 10 con un salto de menos 1". Si lanzamos este programa, veremos que las ideas son las mismas que antes: empieza en el 20, como el incremento es menos uno, baja al 19, luego al 18, luego al 17, pero no llega a alcanzar el 10.
for n in range(20,10,-1):
print(n)
Termina en el 11, que es el último valor antes de ese valor límite de ese 10 que, ya sabes, nunca se alcanza.
20
19
18
17
16
15
14
13
12
11
Ejercicio propuesto 7.1. Crea un programa que pida al usuario que introduzca su nombre y un número entero, y escriba su nombre en pantalla tantas veces como indique ese número entero.
Ejercicio propuesto 7.2. Pide al usuario un número entero (por ejemplo, 5) y muestra la tabla de multiplicar de ese número (desde "5 x 1 = 5" hasta "5 x 10 = 50").
Ejercicio propuesto 7.3. Pide al usuario un número entero (por ejemplo, 58) y responde todos los múltiplos de 7 que haya entre el número 1 y ese número (incluido).