Bucle for (1)

En esta lección se tratan los bucles for:

El bucle 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.

Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

Ejemplo de bucle 1 - Paso 9

print("Comienzo")
for i in [0, 1, 2]:
    print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola
Final

La última instrucción del programa imprime el párrafo final.

Anterior


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.

Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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.

Anterior Siguiente

Ejemplo de bucle 2 - Paso 4

print("Comienzo")
for i in []:
    print("Hola ", end="")
print()
print("Final")
Comienzo

Final

La última instrucción del programa imprime el párrafo final.

Anterior


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.

Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

Ejemplo de bucle 3 - Paso 9

print("Comienzo")
for i in [1, 1, 1]:
    print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola
Final

La última instrucción del programa imprime el párrafo final.

Anterior


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.

Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

Ejemplo de bucle 4 - Paso 9

print("Comienzo")
for _ in [0, 1, 2]:
    print("Hola ", end="")
print()
print("Final")
Comienzo
Hola Hola Hola
Final

La última instrucción del programa imprime el párrafo final.

Anterior

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.

Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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 ...".

Anterior Siguiente

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.

Anterior Siguiente

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 ...".

Anterior Siguiente

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.

Anterior Siguiente

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 ...".

Anterior Siguiente

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.

Anterior


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.

Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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".

Anterior Siguiente

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".

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior


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.

Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior Siguiente

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".

Anterior Siguiente

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.

Anterior


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

Testigos, contadores y acumuladores

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.

Testigo

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.

Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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).

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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).

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior

Detalles importantes:

Contador

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.

Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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).

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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).

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior

Detalles importantes:

Acumulador

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.

Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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).

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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

Anterior Siguiente

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).

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior Siguiente

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.

Anterior

Detalles importantes: