1.8 – Bucles

Un bucle es una estructura que repite un bloque de código.

En Python, usamos bucles para:

  • recorrer colecciones (listas, tuplas, sets, diccionarios, strings)
  • repetir acciones varias veces
  • ejecutar código hasta que se cumpla una condición
  • buscar elementos
  • construir resultados (sumas, contadores, filtros, etc.)

Los dos bucles principales en Python son:

  • for → cuando recorres una secuencia/iterable o sabes “cuántas vueltas”
  • while → cuando repites mientras una condición sea verdadera (número de vueltas “desconocido”)

1) Bucle for

for recorre un iterable (lista, tupla, cadena, rango, diccionario, etc.)

Recorrer una lista

for elemento in [1, 2, 3, 4]:
print(elemento)

Recorrer un rango

for i in range(5):   # 0,1,2,3,4
print(i)

Recorrer una cadena

palabra = "Python"
for letra in palabra:
print(letra)

1.1) range()

range() genera números sin crear una lista enorme en memoria.

  • range(fin) → 0 … fin-1
  • range(inicio, fin) → inicio … fin-1
  • range(inicio, fin, paso) → saltos controlados
for i in range(1, 11):
print(i) # 1..10
for i in range(10, 0, -1):
print(i) # 10..1

1.2) Recorrer con índice: enumerate()

Cuando necesitas índice + valor, enumerate() es la forma correcta.

nombres = ["Ana", "Luis", "Carlos"]for indice, nombre in enumerate(nombres):
print(indice, nombre)

Empezar desde 1 (muy útil para menús):

for i, nombre in enumerate(nombres, start=1):
print(i, nombre)

1.3) Recorrer varias listas a la vez: zip()

nombres = ["Ana", "Luis", "Carlos"]
edades = [20, 25, 30]for nombre, edad in zip(nombres, edades):
print(nombre, edad)

2) Bucle while

while repite mientras la condición sea verdadera.

Contador simple

contador = 0
while contador < 5:
print(contador)
contador += 1

Se usa mucho en:

  • validación de entrada (pedir hasta que sea correcto)
  • menús
  • bucles “hasta encontrar algo”
  • juegos (adivina el número)
  • lectura de datos hasta fin

3) Control del bucle: break, continue, pass

break (romper el bucle)

for n in range(10):
if n == 5:
break
print(n)

continue (saltar a la siguiente vuelta)

for n in range(10):
if n % 2 != 0:
continue
print(n) # solo pares

pass (no hacer nada, placeholder)

for n in range(3):
pass # "todavía no he programado esto"

4) El else en bucles (truco ninja de Python)

Un bucle puede tener else.
Se ejecuta solo si NO se ha hecho break.

Buscar un elemento

objetivo = 7for n in [1, 3, 5, 7, 9]:
if n == objetivo:
print("Encontrado")
break
else:
print("No encontrado")

5) Bucles anidados

Un bucle dentro de otro. Se usa en:

  • tablas (filas/columnas)
  • matrices
  • combinaciones
for i in range(3):
for j in range(2):
print(f"i={i}, j={j}")

Tabla de multiplicar

numero = 5
for i in range(1, 11):
print(f"{numero} x {i} = {numero*i}")

6) Iteradores: iter() y next()

Puedes recorrer manualmente un iterable con un iterador.

frutas = ["manzana", "banana", "cereza"]
it = iter(frutas)print(next(it)) # manzana
print(next(it)) # banana
print(next(it)) # cereza

Si te pasas, lanza StopIteration.


7) Operadores relacionados: in y not in

frutas = ["manzana", "banana", "cereza"]
if "pera" not in frutas:
    print("La pera no está en la lista")

8) Errores comunes y buenas prácticas

Error típico: bucle infinito con while

Si no actualizas la condición:

# cuidado: infinito
# while True:
# print("hola")

Buena práctica: evitar recorrer con índices si no hace falta

Mejor:

for fruta in frutas:
print(fruta)

En vez de:

for i in range(len(frutas)):
print(frutas[i])

9) Ejemplos guiados

Sumar lista de números

numeros = [1, 2, 3, 4, 5]
suma = 0for n in numeros:
suma += nprint(suma)

Filtrar pares

numeros = [10, 15, 20, 25, 30]
pares = []for n in numeros:
if n % 2 == 0:
pares.append(n)print(pares)

Recorrer diccionario

productos = {"manzana": 1.5, "banana": 0.8, "leche": 2.3}for producto, precio in productos.items():
print(producto, precio)

10) Ejercicios

Bloque 1: Iterar sobre listas

  1. Dada una lista de números, calcula la suma.

numeros = [1, 2, 3, 4, 5]

2. Dada una lista de nombres, imprime cada nombre en mayúsculas.
nombres = [«ana», «luis», «carlos»]

  1. Crea una lista con solo los pares.

numeros = [10, 15, 20, 25, 30]

Bloque 2: Iterar sobre diccionarios

1. Imprime producto y precio.
productos = {«manzana»: 1.5, «banana»: 0.8, «leche»: 2.3}

  1. Suma total de precios.
  2. Lista de productos cuyo precio sea mayor que 1.0.

Bloque 3: Iterar sobre cadenas

  1. Cuenta vocales en una cadena.

cadena = «Python es genial»

2. Invierte una cadena con un bucle.

cadena = «Hola Mundo»

3. Elimina espacios y genera una nueva.

cadena = «Hola a todos»

Bloque 4: Índices (`range` / `enumerate`)

1. Imprime del 1 al 10 con `range`.

2. Tabla del 5.
numero = 5

3. Con enumerate, imprime índice y valor.

frutas = [«manzana», «banana», «pera»]

Bloque 5: `while`

1. Imprime del 1 al 10.

2. Pide números hasta que introduzca 0 y suma todo.

3. Factorial con while.
numero = 5


Bloque 6: bucle infinito con break

  1. Contraseña correcta hasta acertar.

contrasena_correcta = «python123»

2. Genera aleatorios 1-10 hasta que salga > 8.
import random

3. Adivina número 1-20 o escribe «salir».