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


En el ejemplo anterior, 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 2

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 2 - 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 2 - 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 2 - 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 2 - 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 2 - 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 2 - 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 2 - 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 2 - 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 2 - 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 lista está vacía, el bucle no se ejecuta ninguna vez. Por ejemplo:

Ejemplo de bucle 3

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 3 - 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 3 - 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 3 - 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 3 - 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 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 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
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 4 - 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 4 - 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 4 - 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 4 - 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 4 - 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 4 - 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 4 - 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 4 - 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 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
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 5 - 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 5 - 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 5 - 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 5 - 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 5 - 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 5 - 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 5 - 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 5 - 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 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
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 6 - 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 6 - 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 6 - 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 6 - 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 6 - 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 6 - 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 6 - 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 6 - 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 6 - 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 6 - 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

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("Adios")
¿Cuántas veces quiere que le salude? 6
Hola Hola Hola Hola Hola Hola
Adios

Contadores y acumuladores

En muchos programas se necesitan variables que cuenten cuántas veces ha ocurrido algo (contadores) o que acumulen valores (acumuladores). Las situaciones pueden ser muy diversas, por lo que simplemente hay aquí un par de ejemplos para mostrar la idea.

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

Ejemplo de contador

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo
Desde 1 hasta 5 hay 2 múltiplos de 2

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

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

Se ejecuta la primera instrucción del programa.

En este caso, imprime el párrafo de comienzo.

Anterior Siguiente

Ejemplo de contador - Paso 2

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecuta la siguiente instrucción

La variable cuenta, que hace el papel de acumulador, toma el valor inicial 0.

Anterior Siguiente

Ejemplo de contador - Paso 3

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
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 1.

Anterior Siguiente

Ejemplo de contador - Paso 4

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecutan las instrucciones del bloque.

En este caso se comprueba si la variable i es múltiplo de 2 (comprobando si el resto de la división por 2 es igual a 0). Como no lo es, (1 no es múltiplo de 2) el bloque dentro del if no se ejecuta.

Anterior Siguiente

Ejemplo de contador - Paso 5

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecuta el bucle.

La variable de control toma el segundo valor del tipo range(). En este caso, la variable de control es i y toma el valor 2.

Anterior Siguiente

Ejemplo de contador - Paso 6

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecutan las instrucciones del bloque.

En este caso se comprueba si la variable i es múltiplo de 2 (comprobando si el resto de la división por 2 es igual a 0). Como sí lo es (2 es múltiplo de 2), el bloque dentro del if se ejecuta.

Anterior Siguiente

Ejemplo de contador - Paso 7

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecuta el bloque dentro del if.

En este caso a la variable cuenta (que valía 0) se le añade 1, por lo que ahora cuenta vale 1.

Anterior Siguiente

Ejemplo de contador - Paso 8

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecuta el bucle.

La variable de control toma el tercer valor tipo range(). En este caso, la variable de control es i y toma el valor 3.

Anterior Siguiente

Ejemplo de contador - Paso 9

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecutan las instrucciones del bloque.

En este caso se comprueba si la variable i es múltiplo de 2 (comprobando si el resto de la división por 2 es igual a 0). Como no lo es, (3 no es múltiplo de 2) el bloque dentro del if no se ejecuta.

Anterior Siguiente

Ejemplo de contador - Paso 10

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecuta el bucle.

La variable de control toma el cuarto valor del tipo range(). En este caso, la variable de control es i y toma el valor 4.

Anterior Siguiente

Ejemplo de contador - Paso 11

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecutan las instrucciones del bloque.

En este caso se comprueba si la variable i es múltiplo de 2 (comprobando si el resto de la división por 2 es igual a 0). Como sí lo es (4 es múltiplo de 2), el bloque dentro del if se ejecuta.

Anterior Siguiente

Ejemplo de contador - Paso 12

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecuta el bloque dentro del if.

En este caso a la variable cuenta (que valía 1) se le añade 1, por lo que ahora cuenta vale 2.

Anterior Siguiente

Ejemplo de contador - Paso 13

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

La variable de control toma el quinto y último valor del tipo range(). En este caso, la variable de control es i y toma el valor 5.

Anterior Siguiente

Ejemplo de contador - Paso 14

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo

A continuación se ejecutan las instrucciones del bloque.

En este caso se comprueba si la variable i es múltiplo de 2 (comprobando si el resto de la división por 2 es igual a 0). Como no lo es, (5 no es múltiplo de 2) el bloque dentro del if no se ejecuta.

Anterior Siguiente

Ejemplo de contador - Paso final

print("Comienzo")
cuenta = 0
for i in range(1, 6):
    if i % 2 == 0:
        cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")
Comienzo
Desde 1 hasta 5 hay 2 múltiplos de 2

Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.

En este caso, imprime el párrafo final. En total, la variable contador ha aumentado hasta 2 (los dos múltiplos de 2 que hay entre 1 y 5).

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 suma):

Ejemplo de acumulador

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo
La suma de los números de 1 a 4 es 10

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

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo

Se ejecuta la primera instrucción del programa.

En este caso, imprime el párrafo de comienzo.

Anterior Siguiente

Ejemplo de acumulador - Paso 2

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo

A continuación se ejecuta la siguiente instrucción

La variable suma, que hace el papel de acumulador, toma el valor inicial 0.

Anterior Siguiente

Ejemplo de acumulador - Paso 3

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
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 acumulador - Paso 4

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo

A continuación se ejecutan las instrucciones del bloque.

En este caso a la variable suma (que valía 0) se le añade i (que vale 1), por lo que ahora suma vale 1.

Anterior Siguiente

Ejemplo de acumulador - Paso 5

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo

A continuación se ejecuta el bucle.

La variable de control toma el segundo valor de la lista. En este caso, la variable de control es i y toma el valor 2.

Anterior Siguiente

Ejemplo de acumulador - Paso 6

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo

A continuación se ejecutan las instrucciones del bloque.

En este caso a la variable suma (que valía 1) se le añade i (que vale 2), por lo que ahora suma vale 3.

Anterior Siguiente

Ejemplo de acumulador - Paso 7

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo

A continuación se ejecuta el bucle.

La variable de control toma el tercer valor de la lista. En este caso, la variable de control es i y toma el valor 3.

Anterior Siguiente

Ejemplo de acumulador - Paso 8

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo

A continuación se ejecutan las instrucciones del bloque.

En este caso a la variable suma (que valía 3) se le añade i (que vale 3), por lo que ahora suma vale 6.

Anterior Siguiente

Ejemplo de acumulador - Paso 9

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo

A continuación se ejecuta el bucle.

La variable de control toma el cuarto y último valor de la lista. En este caso, la variable de control es i y toma el valor 4.

Anterior Siguiente

Ejemplo de acumulador - Paso 10

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo

A continuación se ejecutan por última vez las instrucciones del bloque.

En este caso a la variable suma (que valía 6) se le añade i (que vale 4), por lo que ahora suma vale 10.

Anterior Siguiente

Ejemplo de acumulador - Paso 11

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
    suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")
Comienzo
La suma de los números de 1 a 4 es 10

Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.

En este caso, imprime el párrafo final. En total, en la variable suma se han sumado los valores 1, 2, 3 y 4.

Anterior

Detalles importantes: