Volver al índice Bucle for

En esta lección aprenderás:


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 lista (o cadena) :
  cuerpo del bucle

El cuerpo del bucle se ejecuta tantas veces como elementos tenga la lista que utilices (o caracteres tenga la cadena que utilices). Por ejemplo, el programa

for i in [0,1,2,3,4] :
  print "Hola",

produce el resultado siguiente:

Hola Hola Hola Hola Hola

Este programa también daría el mismo resultado

for i in "amigo" :
  print "Hola",

La lista se puede a su vez generar con una función range(). El programa anterior se puede escribir así:

for i in range(5):
  print "Hola",

Cambiando el argumento de la función range, puedes hacer que el programa salude muchas más veces.

for i in range(20):
  print "Hola",

Ahora el programa produce el resultado siguiente:

Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola


Un bucle for se limita a repetir el bloque de instrucciones, pero además, en cada iteración, la variable va tomando cada uno de los valores de la lista. Por ejemplo, el programa:

for i in range(5):
  print "Hola. Ahora i vale",i,"y su cuadrado", i**2

produce el resultado siguiente:

Hola. Ahora i vale 0 y su cuadrado 0

Hola. Ahora i vale 1 y su cuadrado 1

Hola. Ahora i vale 2 y su cuadrado 4

Hola. Ahora i vale 3 y su cuadrado 9

Hola. Ahora i vale 4 y su cuadrado 16


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, el programa:

for i in ['Alba', 'Benito', 'Carmen', 27]:
  print "Hola. Ahora i vale",i,". Adios."

produce el resultado siguiente:

Hola. Ahora i vale Alba . Adios.

Hola. Ahora i vale Benito . Adios.

Hola. Ahora i vale Carmen . Adios.

Hola. Ahora i vale 27 . Adios.


Contadores y acumuladores

En muchos programas necesitarás utilizar 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 que veas cuál es la idea.

Acumulador

Este es un ejemplo de programa con acumulador:

suma = 0
for i in range(10):
  suma = suma + i
print "La suma de los números de 0 a 10 es", suma

En cada iteración, el valor de i se añade a la variable suma. Es muy importante que antes del bucle definas el valor inicial del acumulador (en este caso, la variable suma).

Contador

Este es un ejemplo de programa con contador:

cuenta = 0
for i in range(1000):
  if i%7 == 0:
    cuenta = cuenta + 1
print "Entre 0 y 1000 hay", cuenta, "múltiplos de 7"

En cada iteración, el programa comprueba si i es múltiplo de 7. Si lo es, la variable cuenta aumenta una unidad. Es muy importante que antes del bucle definas el valor inicial del contador (en este caso, la variable cuenta).


Bucles anidados

Un bucle anidado es un bucle situado en el cuerpo de otro bucle. Por ejemplo el programa:

for i in range(3):
  for j in range(2):
    print "i vale", i, "y j vale", j

escribiría:

i vale 0 y j vale 0
i vale 0 y j vale 1
i vale 1 y j vale 0
i vale 1 y j vale 1
i vale 2 y j vale 0
i vale 2 y j vale 1

Es decir que el bucle interno se ejecuta en este caso 3 veces y la instrucción print 6 veces (2 veces por bucle interno = 3 x 2 = 6 veces).

Puedes tener tantos bucles anidados como desees.


Puedes utilizar la variable del bucle externo para controlar el bucle interno. Por ejemplo, el programa:

for i in range(4):
  for j in range(i):
    print "i vale", i, "y j vale", j

escribiría:

i vale 1 y j vale 0
i vale 2 y j vale 0
i vale 2 y j vale 1
i vale 3 y j vale 0
i vale 3 y j vale 1
i vale 3 y j vale 2

La variable i toma los valores de 0 a 3 y la variable j toma los valores de 0 a i, por lo que cada vez el bucle interno se ejecuta un número diferente de veces:


En Python puedes utilizar la misma variable en los dos bucles anidados porque Python las trata como si fueran independientes. El programa:

for i in range(3):
  for i in range(2):
    print "i vale", i,

escribiría:

i vale 0
i vale 1
i vale 0
i vale 1
i vale 0
i vale 1

Aún así, es mejor utilizar siempre nombres de variables distintas.


Ejercicios relacionados con este tema: Ejercicios bucle for.
Siguiente lección: Listas

Autor: Bartolomé Sintes Marco
Última modificación de esta página: 21 de octubre de 2002