¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Bucles en Python: for y while

Después de esta lección: Puedo repetir un trabajo con bucles for y while.

Lección de 55 min5 comandosLaboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

Qué es un bucle y para qué sirve

Un bucle repite un trozo de código tantas veces como haga falta. En Python hay dos: for repite sobre una lista de valores y while repite mientras una condición se cumpla.

Sin bucles, sumar los gastos de un año serían 365 líneas. Con uno son tres.

Al final de esta lección

Nota

Puedo repetir un trabajo con bucles for y while.

Palabras clave

PalabraQué significaEjemplo
Bucleun bloque de código que se repite
Iteraciónuna vuelta del bucle
Acumuladoruna variable que va sumando valorestotal = total + 1
rangeuna secuencia de números enteros seguidosrange(1, 4)
breakuna orden que sale del bucle antes de tiempo

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

for repite el bloque con cada valor

Escribe for, un nombre para el valor de cada vuelta, in, una lista y dos puntos. Las líneas con sangría se repiten una vez por valor.

Para sumar usa un acumulador: una variable que empieza en 0 y va creciendo en cada iteración.

Suma los gastos de una semana

Código: python
# Suma los gastos de la semana con un bucle for.
total = 0
for spent in [12, 8, 15, 5]:
    total = total + spent
    print("Llevas", total, "euros")
print("Total de la semana:", total)
# Añade un gasto de 10 a la lista y ejecuta otra vez.

Ejemplo resuelto: la traza del bucle de gastos

Vueltaspenttotal antestotal después
112012
281220
3152035
453540

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

range crea una serie de números

range(1, 4) da los números 1, 2 y 3. Empieza en el primero y se detiene antes del segundo. Con un tercer número, range(0, 10, 3), das el salto.

Con range puedes repetir algo diez veces sin escribir una lista de diez números.

Cuenta del 1 al 3 con range

Comando
python3 -c "for i in range(1, 4): print(i)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cuenta de 3 en 3

Comando
python3 -c "print(list(range(0, 10, 3)))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que range(1, 4) incluye el 4. No lo incluye: se para antes. Si quieres llegar hasta el 20, escribe range(1, 21).

Cuenta los múltiplos de 4

Código: python
# Cuenta cuántos números del 1 al 20 son múltiplos de 4.
count = 0
for number in range(1, 21):
    if number % 4 == 0:
        count = count + 1
print(count)
# Cambia 4 por 3 y piensa antes qué saldrá.

while repite mientras la condición se cumpla

Un while pregunta antes de cada vuelta. Si la condición es True, ejecuta el bloque y vuelve a preguntar. Si es False, sigue por debajo.

Dentro del bloque debe cambiar algo que acabe haciendo False la condición. Si no, el bucle no termina nunca.

Gasta un saldo con un while

Código: python
# Un saldo que baja hasta que no hay dinero para otro billete.
balance = 20
ticket = 1.5
trips = 0
while balance >= ticket:
    balance = balance - ticket
    trips = trips + 1
print(trips, "viajes y sobran", balance, "euros")
# Cambia ticket a 2 y calcula antes los viajes.

Escribe una cuenta atrás

Comando
printf 'n = 3\nwhile n > 0:\n    print(n)\n    n = n - 1\nprint("despegue")\n' > ~/cuenta.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejecuta la cuenta atrás

Comando
python3 ~/cuenta.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

break sale y los bucles se anidan

La orden break sale del bucle en el momento en que se ejecuta. Sirve para parar cuando ya has encontrado lo que buscabas.

Un bucle dentro de otro se llama anidado. El de dentro hace todas sus vueltas por cada vuelta del de fuera.

Una tabla de multiplicar con dos números

Comando
python3 -c "for a in range(1, 4): print(a, a * 2, a * 3)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sobre este laboratorio y su código: Laboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.