En esta lección se tratan los bucles for:
En general, un bucle es una estructura de control que repite un bloque de instrucciones. Un bucle for es un bucle que repite el bloque de instrucciones un número prederminado de veces. El bloque de instrucciones que se repite se suele llamar cuerpo del bucle y cada repetición se suele llamar iteración.
La sintaxis de un bucle for es la siguiente:
for variable in elemento iterable (lista, cadena, range, etc.): cuerpo del bucle
No es necesario definir la variable de control antes del bucle, aunque se puede utilizar como variable de control una variable ya definida en el programa.
El cuerpo del bucle se ejecuta tantas veces como elementos tenga el elemento recorrible (elementos de una lista o de un range(), caracteres de una cadena, etc.). Por ejemplo:
Ejemplo de bucle 1
print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola Hola Hola Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle 1 - Paso 1
print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Se ejecuta la primera instrucción del programa.
En este caso, imprime el párrafo de comienzo.
Ejemplo de bucle 1 - Paso 2
print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
A continuación se ejecuta el bucle. La variable de control toma el primer valor de la lista.
En este caso, la variable de control es i y toma el valor 0.
Ejemplo de bucle 1 - Paso 3
print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola
A continuación se ejecutan las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola".
Ejemplo de bucle 1 - Paso 4
print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola
A continuación la variable de control toma el segundo valor de la lista.
En este caso, la variable de control es i y toma el valor 1.
Ejemplo de bucle 1 - Paso 5
print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola
A continuación se ejecutan por segunda vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola".
Ejemplo de bucle 1 - Paso 6
print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola Hola
A continuación la variable de control toma el tercer y último valor de la lista.
En este caso, la variable de control es i y toma el valor 2.
Ejemplo de bucle 1 - Paso 7
print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola
A continuación se ejecutan por tercera y última vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola".
Ejemplo de bucle 1 - Paso 8
print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime un salto de línea, para que el siguiente print() imprima en la línea siguiente.
Si la lista está vacía, el bucle no se ejecuta ninguna vez. Por ejemplo:
Ejemplo de bucle 2
print("Comienzo")
for i in []:
print("Hola ", end="")
print()
print("Final")
Comienzo Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle 2 - Paso 1
print("Comienzo")
for i in []:
print("Hola ", end="")
print()
print("Final")
Comienzo
Se ejecuta la primera instrucción del programa.
En este caso, imprime el párrafo de comienzo.
Ejemplo de bucle 2 - Paso 2
print("Comienzo")
for i in []:
print("Hola ", end="")
print()
print("Final")
Comienzo
A continuación se ejecuta el bucle. Como la lista está vacía, la variable de control no toma ningún valor y el cuerpo del bucle no se ejecuta
Ejemplo de bucle 2 - Paso 3
print("Comienzo")
for i in []:
print("Hola ", end="")
print()
print("Final")
Comienzo
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime un salto de línea, para que el siguiente print() imprima en la línea siguiente.
En el primer ejemplo, los valores que toma la variable no son importantes, lo que importa es que la lista tiene tres elementos y por tanto el bucle se ejecuta tres veces. El siguiente programa produciría el mismo resultado que el anterior:
Ejemplo de bucle 3
print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola Hola Hola Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle 3 - Paso 1
print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Se ejecuta la primera instrucción del programa.
En este caso, imprime el párrafo de comienzo.
Ejemplo de bucle 3 - Paso 2
print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")
Comienzo
A continuación se ejecuta el bucle. La variable de control toma el primer valor de la lista.
En este caso, la variable de control es i y toma el valor 1.
Ejemplo de bucle 3 - Paso 3
print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola
A continuación se ejecutan las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola".
Ejemplo de bucle 3 - Paso 4
print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola
A continuación la variable de control toma el segundo valor de la lista.
En este caso, la variable de control es i y toma el valor 1.
Ejemplo de bucle 3 - Paso 5
print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola
A continuación se ejecutan por segunda vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola".
Ejemplo de bucle 3 - Paso 6
print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola Hola
A continuación la variable de control toma el tercer y último valor de la lista.
En este caso, la variable de control es i y toma el valor 1.
Ejemplo de bucle 3 - Paso 7
print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola
A continuación se ejecutan por tercera y última vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola".
Ejemplo de bucle 3 - Paso 8
print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime un salto de línea, para que el siguiente print() imprima en la línea siguiente.
Si la variable de control no se va a utilizar en el cuerpo del bucle, como en los ejemplos anteriores, se puede utilizar el guion (_) en vez de un nombre de variable. Esta notación no tiene ninguna consecuencia con respecto al funcionamiento del programa, pero sirve de ayuda a la persona que esté leyendo el código fuente, que sabe así que los valores no se van a utilizar. Por ejemplo:
Ejemplo de bucle 4
print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola Hola Hola Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle 4 - Paso 1
print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Se ejecuta la primera instrucción del programa.
En este caso, imprime el párrafo de comienzo.
Ejemplo de bucle 4 - Paso 2
print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
A continuación se ejecuta el bucle. El indicador _ toma el primer valor de la lista.
En este caso, el indicador _ toma el valor 0.
Ejemplo de bucle 4 - Paso 3
print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola
A continuación se ejecutan las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola".
Ejemplo de bucle 4 - Paso 4
print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola
A continuación el indicador _ toma el segundo valor de la lista.
En este caso, el indicador _ toma el valor 1.
Ejemplo de bucle 4 - Paso 5
print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola
A continuación se ejecutan por segunda vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola".
Ejemplo de bucle 4 - Paso 6
print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola Hola
A continuación el indicador _ toma el tercer y último valor de la lista.
En este caso, el indicador _ toma el valor 2.
Ejemplo de bucle 4 - Paso 7
print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola
A continuación se ejecutan por tercera y última vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola".
Ejemplo de bucle 4 - Paso 8
print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")
Comienzo Hola Hola Hola
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime un salto de línea, para que el siguiente print() imprima en la línea siguiente.
El indicador puede incluir cualquier número de guiones bajos (_, __, ___, ____, etc). Los más utilizados son uno o dos guiones (_ o __).
En los ejemplos anteriores, la variable de control "i" no se utilizaba en el bloque de instrucciones, pero en muchos casos sí que se utiliza. Cuando se utiliza, hay que tener en cuenta que la variable de control va tomando los valores del elemento recorrible. Por ejemplo:
Ejemplo de bucle 5
print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")
Comienzo Hola. Ahora i vale 3 y su cuadrado 9 Hola. Ahora i vale 4 y su cuadrado 16 Hola. Ahora i vale 5 y su cuadrado 25 Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle 5 - Paso 1
print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")
Comienzo
Se ejecuta la primera instrucción del programa.
En este caso, imprime el párrafo de comienzo.
Ejemplo de bucle 5 - Paso 2
print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")
Comienzo
A continuación se ejecuta el bucle. La variable de control toma el primer valor de la lista.
En este caso, la variable de control es i y toma el valor 3.
Ejemplo de bucle 5 - Paso 3
print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")
Comienzo
Hola. Ahora i vale 3 y su cuadrado 9
A continuación se ejecutan las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola ...".
Ejemplo de bucle 5 - Paso 4
print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")
Comienzo Hola. Ahora i vale 3 y su cuadrado 9
A continuación la variable de control toma el segundo valor de la lista.
En este caso, la variable de control es i y toma el valor 4.
Ejemplo de bucle 5 - Paso 5
print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")
Comienzo
Hola. Ahora i vale 3 y su cuadrado 9
Hola. Ahora i vale 4 y su cuadrado 16
A continuación se ejecutan por segunda vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola ...".
Ejemplo de bucle 5 - Paso 6
print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")
Comienzo Hola. Ahora i vale 3 y su cuadrado 9 Hola. Ahora i vale 4 y su cuadrado 16
A continuación la variable de control toma el tercer y último valor de la lista.
En este caso, la variable de control es i y toma el valor 5.
Ejemplo de bucle 5 - Paso 7
print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")
Comienzo
Hola. Ahora i vale 3 y su cuadrado 9
Hola. Ahora i vale 4 y su cuadrado 16
Hola. Ahora i vale 5 y su cuadrado 25
A continuación se ejecutan por tercera y última vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola ...".
Ejemplo de bucle 5 - Paso 8
print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")
Comienzo
Hola. Ahora i vale 3 y su cuadrado 9
Hola. Ahora i vale 4 y su cuadrado 16
Hola. Ahora i vale 5 y su cuadrado 25
Final
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime el párrafo final.
La lista puede contener cualquier tipo de elementos, no sólo números. El bucle se repetirá siempre tantas veces como elementos tenga la lista y la variable irá tomando los valores de uno en uno. Por ejemplo:
Ejemplo de bucle 6
print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")
Comienzo Hola. Ahora i vale Alba Hola. Ahora i vale Benito Hola. Ahora i vale 27 Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle 6 - Paso 1
print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")
Comienzo
Se ejecuta la primera instrucción del programa.
En este caso, imprime el párrafo de comienzo.
Ejemplo de bucle 6 - Paso 2
print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")
Comienzo
A continuación se ejecuta el bucle. La variable de control toma el primer valor de la lista.
En este caso, la variable de control es i y toma el valor "Alba".
Ejemplo de bucle 6 - Paso 3
print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")
Comienzo
Hola. Ahora i vale Alba
A continuación se ejecutan las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola ... Alba".
Ejemplo de bucle 6 - Paso 4
print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")
Comienzo Hola. Ahora i vale Alba
A continuación la variable de control toma el segundo valor de la lista.
En este caso, la variable de control es i y toma el valor "Benito".
Ejemplo de bucle 6 - Paso 5
print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")
Comienzo
Hola. Ahora i vale Alba
Hola. Ahora i vale Benito
A continuación se ejecutan por segunda vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola ... Benito".
Ejemplo de bucle 6 - Paso 6
print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")
Comienzo Hola. Ahora i vale Alba Hola. Ahora i vale Benito
A continuación la variable de control toma el tercer y último valor de la lista.
En este caso, la variable de control es i y toma el valor 27.
Ejemplo de bucle 6 - Paso 7
print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")
Comienzo
Hola. Ahora i vale Alba
Hola. Ahora i vale Benito
Hola. Ahora i vale 27
A continuación se ejecutan por tercera y última vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "Hola ... 27".
Ejemplo de bucle 6 - Paso 8
print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")
Comienzo
Hola. Ahora i vale Alba
Hola. Ahora i vale Benito
Hola. Ahora i vale 27
Final
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime el párrafo final.
La costumbre más extendida es utilizar la letra i como nombre de la variable de control, pero se puede utilizar cualquier otro nombre válido. Por ejemplo:
Ejemplo de bucle 7
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo 0 * 0 = 0 1 * 1 = 1 2 * 2 = 4 3 * 3 = 9 Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle 7 - Paso 1
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo
Se ejecuta la primera instrucción del programa.
En este caso, imprime el párrafo de comienzo.
Ejemplo de bucle 7 - Paso 2
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo
A continuación se ejecuta el bucle. La variable de control toma el primer valor de la lista.
En este caso, la variable de control es numero y toma el valor 0.
Ejemplo de bucle 7 - Paso 3
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo
0 * 0 = 0
A continuación se ejecutan las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "0 * 0 = 0".
Ejemplo de bucle 7 - Paso 4
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo 0 * 0 = 0
A continuación la variable de control toma el segundo valor de la lista.
En este caso, la variable de control es numero y toma el valor 1.
Ejemplo de bucle 7 - Paso 5
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo
0 * 0 = 0
1 * 1 = 1
A continuación se ejecutan por segunda vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "1 * 1 = 1".
Ejemplo de bucle 7 - Paso 6
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo 0 * 0 = 0 1 * 1 = 1
A continuación la variable de control toma el tercer valor de la lista.
En este caso, la variable de control es numero y toma el valor 2.
Ejemplo de bucle 7 - Paso 7
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo
0 * 0 = 0
1 * 1 = 1
2 * 2 = 4
A continuación se ejecutan por tercera vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "2 * 2 = 4".
Ejemplo de bucle 7 - Paso 8
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo 0 * 0 = 0 1 * 1 = 1 2 * 2 = 4
A continuación la variable de control toma el cuarto y último valor de la lista.
En este caso, la variable de control es numero y toma el valor 3.
Ejemplo de bucle 7 - Paso 9
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo
0 * 0 = 0
1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
A continuación se ejecutan por cuarta y última vez las instrucciones del bloque.
En este caso el bloque consta de una sola instrucción que imprime el texto "3 * 3 = 9".
Ejemplo de bucle 7 - Paso 10
print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")
Comienzo
0 * 0 = 0
1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
Final
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime el párrafo final.
La variable de control puede ser una variable empleada antes del bucle. El valor que tuviera la variable no afecta a la ejecución del bucle, pero cuando termina el bucle, la variable de control conserva el último valor asignado:
i = 10
print(f"El bucle no ha comenzado. Ahora i vale {i}")
for i in [0, 1, 2, 3, 4]:
print(f"{i} * {i} = {i ** 2}")
print(f"El bucle ha terminado. Ahora i vale {i}")
El bucle no ha comenzado. Ahora i vale 10 0 * 0 = 0 1 * 1 = 1 2 * 2 = 4 3 * 3 = 9 4 * 4 = 16 El bucle ha terminado. Ahora i vale 4
La variable de control se puede modificar en el interior del bucle, pero en cada iteración Python asigna a la variable de control el valor que le corresponde de acuerdo con el elemento iterable que define el bucle:
i = 10
print(f"El bucle no ha comenzado. Ahora i vale {i}")
for i in [0, 1, 2]:
print(f"Ahora i vale {i}")
i = 100
print(f"Ahora i vale {i}")
print(f"El bucle ha terminado. Ahora i vale {i}")
El bucle no ha comenzado. Ahora i vale 10 Ahora i vale 0 Ahora i vale 100 Ahora i vale 1 Ahora i vale 100 Ahora i vale 2 Ahora i vale 100 El bucle ha terminado. Ahora i vale 100
Cuando se escriben dos o más bucles seguidos, la costumbre es utilizar el mismo nombre de variable puesto que cada bucle establece los valores de la variable sin importar los valores anteriores:
for i in [0, 1, 2]:
print(f"{i} * {i} = {i ** 2}")
print()
for i in [0, 1, 2, 3]:
print(f"{i} * {i} * {i} = {i ** 3}")
0 * 0 = 0 1 * 1 = 1 2 * 2 = 4 0 * 0 * 0 = 0 1 * 1 * 1 = 1 2 * 2 * 2 = 8 3 * 3 * 3 = 27
En vez de una lista se puede escribir una cadena, en cuyo caso la variable de control va tomando como valor cada uno de los caracteres:
for i in "AMIGO":
print(f"Dame una {i}")
print("¡AMIGO!")
Dame una A Dame una M Dame una I Dame una G Dame una O ¡AMIGO!
En los ejemplos anteriores se ha utilizado una lista para facilitar la comprensión del funcionamiento de los bucles pero, si es posible hacerlo, se recomienda utilizar tipos range(), entre otros motivos porque durante la ejecución del programa ocupan menos memoria en el ordenador.
El siguiente programa es equivalente al programa del ejemplo anterior:
print("Comienzo")
for i in range(3):
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola
Final
Otra de las ventajas de utilizar tipos range() es que el argumento del tipo range() controla el número de veces que se ejecuta el bucle.
En el ejemplo anterior basta cambiar el argumento para que el programa salude muchas más veces.
print("Comienzo")
for i in range(10):
print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola
Final
Esto permite que el número de iteraciones dependa del desarrollo del programa. En el ejemplo siguiente es el usuario quien decide cuántas veces se ejecuta el bucle:
veces = int(input("¿Cuántas veces quiere que le salude? "))
for i in range(veces):
print("Hola ", end="")
print()
print("Adiós")
¿Cuántas veces quiere que le salude? 6 Hola Hola Hola Hola Hola Hola Adiós
En muchos programas se necesitan variables que indiquen si simplemente ha ocurrido algo (testigos), o que cuenten cuántas veces ha ocurrido algo (contadores), o que acumulen valores (acumuladores). Las situaciones pueden ser muy diversas, por lo que en este apartado simplemente se ofrecen unos ejemplos para mostrar la idea.
Se entiende por testigo una variable que indica simplemente si una condición se ha cumplido o no. Es un caso particular de contador, pero se suele hacer con variables lógicas en vez de numéricas (en este caso, la variable que hace de testigo es la variable sacaste_cinco):
Ejemplo de testigo
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 5 Tirada 3: 1 Ha salido al menos un 5. Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de testigo - Paso 1
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Se ejecuta la primera instrucción del programa.
En este caso, importa la biblioteca random.
Ejemplo de testigo - Paso 2
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo
Imprime el párrafo de comienzo.
Ejemplo de testigo - Paso 3
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo
La variable sacaste_cinco, que hace el papel de testigo, toma el valor inicial False.
Ejemplo de testigo - Paso 4
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo
A continuación se ejecuta el bucle.
La variable de control toma el primer valor del tipo range(). En este caso, la variable de control es i y toma el valor 0.
Ejemplo de testigo - Paso 5
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo
A continuación se ejecutan las instrucciones del bloque.
Se obtiene un valor al azar entre 1 y 6 que se guarda en la variable dado
Ejemplo de testigo - Paso 6
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo
Tirada 1: 3
Se imprime el número de tirada y el valor del dado obtenido (en este caso, 3). Para el número de tirada se aprovecha la variable {i}, aunque debemos aumentarla en una unidad.
Ejemplo de testigo - Paso 7
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3
Se comprueba si el valor del dado es 5. Como no lo es (3 no es igual que 5), el bloque dentro del if no se ejecuta.
Ejemplo de testigo - Paso 8
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3
A continuación se vuelve a ejecutar el bucle.
La variable de control toma el segundo valor del tipo range(3). En este caso, la variable de control es i y toma el valor 1.
Ejemplo de testigo - Paso 9
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3
A continuación se ejecutan las instrucciones del bloque.
Se obtiene un valor al azar entre 1 y 6 que se guarda en la variable dado
Ejemplo de testigo - Paso 10
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo
Tirada 1: 3
Tirada 2: 5
Se imprime el número de tirada y el valor del dado obtenido (en este caso, 5).
Ejemplo de testigo - Paso 11
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 5
Se comprueba si el valor del dado es 5. Como sí lo es (5 es igual que 5), el bloque dentro del if se ejecuta.
Ejemplo de testigo - Paso 12
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 5
A continuación se ejecuta el bloque dentro del if.
En este caso la variable sacaste_cinco (que valía False) pasa a valer True.
Ejemplo de testigo - Paso 13
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 5
A continuación se vuelve a ejecutar el bucle.
La variable de control toma el tercer y último valor del tipo range(3). En este caso, la variable de control es i y toma el valor 2.
Ejemplo de testigo - Paso 14
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 5
A continuación se ejecutan las instrucciones del bloque.
Se obtiene un valor al azar entre 1 y 6 que se guarda en la variable dado
Ejemplo de testigo - Paso 15
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo
Tirada 1: 3
Tirada 2: 5
Tirada 3: 1
Se imprime el número de tirada y el valor del dado obtenido (en este caso, 1).
Ejemplo de testigo - Paso 16
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 5 Tirada 3: 1
Se comprueba si el valor del dado es 5. Como no lo es (1 no es igual que 5), el bloque dentro del if no se ejecuta.
Ejemplo de testigo - Paso 17
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 5 Tirada 3: 1
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, comprueba el valor del testigo sacaste_cinco. Como es True, se ejecuta el bloque dentro del if.
Ejemplo de testigo - Paso 18
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo
Tirada 1: 3
Tirada 2: 5
Tirada 3: 1
Ha salido al menos un 5.
A continuación se ejecuta el bloque dentro del if.
Imprime el párrafo final indicando que ha salido al menos un 5.
Ejemplo de testigo - Paso final
import random
print("Comienzo")
sacaste_cinco = False
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
sacaste_cinco = True
if sacaste_cinco:
print("Ha salido al menos un 5.")
else:
print("No ha salido ningún 5.")
print("Final")
Comienzo
Tirada 1: 3
Tirada 2: 5
Tirada 3: 1
Ha salido al menos un 5.
Final
Por último, imprime el párrafo final.
Detalles importantes:
Se entiende por contador una variable que lleva la cuenta del número de veces que se ha cumplido una condición. El ejemplo siguiente es un ejemplo de programa con contador (en este caso, la variable que hace de contador es la variable cuenta_cincos):
Ejemplo de contador
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5 Tirada 2: 1 Tirada 3: 5 En total ha(n) salido 2 cinco(s). Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de contador - Paso 1
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Se ejecuta la primera instrucción del programa.
En este caso, importa la biblioteca random.
Ejemplo de contador - Paso 2
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo
Imprime el párrafo de comienzo.
Ejemplo de contador - Paso 3
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo
La variable cuenta_cincos, que hace el papel de contador, toma el valor inicial 0.
Ejemplo de contador - Paso 4
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo
A continuación se ejecuta el bucle.
La variable de control toma el primer valor del tipo range(). En este caso, la variable de control es i y toma el valor 0.
Ejemplo de contador - Paso 5
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo
A continuación se ejecutan las instrucciones del bloque.
Se obtiene un valor al azar entre 1 y 6 que se guarda en la variable dado
Ejemplo de contador - Paso 6
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo
Tirada 1: 5
Se imprime el número de tirada y el valor del dado obtenido (en este caso, 5). Para el número de tirada se aprovecha la variable {i}, aunque debemos aumentarla en una unidad.
Ejemplo de contador - Paso 7
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5
Se comprueba si el valor del dado es 5. Como lo es (5 es igual que 5), el bloque dentro del if se ejecuta.
Ejemplo de contador - Paso 8
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5
A continuación se ejecuta el bloque dentro del if.
En este caso, al aumentar la variable cuenta_cincos, que valía 0, pasa a valer 1.
Ejemplo de contador - Paso 9
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5
A continuación se vuelve a ejecutar el bucle.
La variable de control toma el segundo valor del tipo range(3). En este caso, la variable de control es i y toma el valor 1.
Ejemplo de contador - Paso 10
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5
A continuación se ejecutan las instrucciones del bloque.
Se obtiene un valor al azar entre 1 y 6 que se guarda en la variable dado
Ejemplo de contador - Paso 11
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo
Tirada 1: 5
Tirada 2: 1
Se imprime el número de tirada y el valor del dado obtenido (en este caso, 1).
Ejemplo de contador - Paso 12
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5 Tirada 2: 1
Se comprueba si el valor del dado es 5. Como no lo es (1 no es igual que 5), el bloque dentro del if no se ejecuta.
Ejemplo de contador - Paso 13
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5 Tirada 2: 1
A continuación se vuelve a ejecutar el bucle.
La variable de control toma el tercer y último valor del tipo range(3). En este caso, la variable de control es i y toma el valor 2.
Ejemplo de contador - Paso 14
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5 Tirada 2: 1
A continuación se ejecutan las instrucciones del bloque.
Se obtiene un valor al azar entre 1 y 6 que se guarda en la variable dado
Ejemplo de contador - Paso 15
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo
Tirada 1: 5
Tirada 2: 1
Tirada 3: 5
Se imprime el número de tirada y el valor del dado obtenido (en este caso, 5).
Ejemplo de contador - Paso 16
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5 Tirada 2: 1 Tirada 3: 5
Se comprueba si el valor del dado es 5. Como sí lo es (5 es igual que 5), el bloque dentro del if se ejecuta.
Ejemplo de contador - Paso 17
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo Tirada 1: 5 Tirada 2: 1 Tirada 3: 5
En este caso, al aumentar la variable cuenta_cincos, que valía 1, pasa a valer 2.
Ejemplo de contador - Paso 18
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo
Tirada 1: 5
Tirada 2: 1
Tirada 3: 5
En total ha(n) salido 2 cinco(s).
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
Imprime el párrafo indicando cuántos cincos han salido.
Ejemplo de contador - Paso final
import random
print("Comienzo")
cuenta_cincos = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
if dado == 5:
cuenta_cincos += 1
print(f"En total ha(n) salido {cuenta_cincos} cinco(s).")
print("Final")
Comienzo
Tirada 1: 5
Tirada 2: 1
Tirada 3: 5
En total ha(n) salido 2 cinco(s).
Final
Por último, imprime el párrafo final.
Detalles importantes:
Se entiende por acumulador una variable que acumula el resultado de una operación. El ejemplo siguiente es un ejemplo de programa con acumulador (en este caso, la variable que hace de acumulador es la variable total):
Ejemplo de acumulador
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 2 Tirada 3: 6 En total ha obtenido 11 punto(s). Final
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de acumulador - Paso 1
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Se ejecuta la primera instrucción del programa.
En este caso, importa la biblioteca random.
Ejemplo de acumulador - Paso 2
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo
Imprime el párrafo de comienzo.
Ejemplo de acumulador - Paso 3
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo
La variable total, que hace el papel de contador, toma el valor inicial 0.
Ejemplo de acumulador - Paso 4
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo
A continuación se ejecuta el bucle.
La variable de control toma el primer valor del tipo range(). En este caso, la variable de control es i y toma el valor 0.
Ejemplo de acumulador - Paso 5
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo
A continuación se ejecutan las instrucciones del bloque.
Se obtiene un valor al azar entre 1 y 6 que se guarda en la variable dado
Ejemplo de acumulador - Paso 6
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo
Tirada 1: 3
Se imprime el número de tirada y el valor del dado obtenido (en este caso, 3). Para el número de tirada se aprovecha la variable {i}, aunque debemos aumentarla en una unidad.
Ejemplo de acumulador - Paso 7
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo Tirada 1: 3
El valor del dado (3) se añade a la variable total, que pasa de valer 0, a valer 3.
Ejemplo de acumulador - Paso 8
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo Tirada 1: 3
A continuación se vuelve a ejecutar el bucle.
La variable de control toma el segundo valor del tipo range(3). En este caso, la variable de control es i y toma el valor 1.
Ejemplo de acumulador - Paso 9
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 2
A continuación se ejecutan las instrucciones del bloque.
Se obtiene un valor al azar entre 1 y 6 que se guarda en la variable dado
Ejemplo de acumulador - Paso 10
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo
Tirada 1: 3
Tirada 2: 2
Se imprime el número de tirada y el valor del dado obtenido (en este caso, 2).
Ejemplo de acumulador - Paso 11
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 2
El valor del dado (2) se añade a la variable total, que pasa de valer 3, a valer 5.
Ejemplo de acumulador - Paso 12
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 2
A continuación se vuelve a ejecutar el bucle.
La variable de control toma el tercer y último valor del tipo range(3). En este caso, la variable de control es i y toma el valor 2.
Ejemplo de acumulador - Paso 13
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 2
A continuación se ejecutan las instrucciones del bloque.
Se obtiene un valor al azar entre 1 y 6 que se guarda en la variable dado
Ejemplo de acumulador - Paso 14
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo
Tirada 1: 3
Tirada 2: 2
Tirada 3: 6
Se imprime el número de tirada y el valor del dado obtenido (en este caso, 6).
Ejemplo de acumulador - Paso 15
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo Tirada 1: 3 Tirada 2: 2 Tirada 3: 6
El valor del dado (6) se añade a la variable total, que pasa de valer 5, a valer 11.
Ejemplo de acumulador - Paso 16
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo
Tirada 1: 3
Tirada 2: 2
Tirada 3: 6
En total ha obtenido 11 punto(s).
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
Imprime el párrafo indicando cuántos puntos se han obtenido en total.
Ejemplo de acumulador - Paso final
import random
print("Comienzo")
total = 0
for i in range(3):
dado = random.randrange(1, 7)
print(f"Tirada {i + 1}: {dado}")
total += dado
print(f"En total ha obtenido {total} punto(s).")
print("Final")
Comienzo
Tirada 1: 3
Tirada 2: 2
Tirada 3: 6
En total ha obtenido 11 punto(s).
Final
Por último, imprime el párrafo final.
Detalles importantes: