1.9 – Patrones mentales de los bucles

1. Patrón ACUMULADOR (sumar / combinar resultados)

Se usa cuando quieres acumular un resultado progresivamente.

Ejemplos típicos:

  • Sumar números
  • Calcular media
  • Concatenar texto
  • Multiplicar valores

Ejemplo: suma de una lista

numeros = [10, 20, 30, 40]
suma = 0   # ← acumulador
for n in numeros:
    suma += nprint(suma)

Idea mental:

resultado = valor_inicial
repetir:
resultado = resultado + algo

2. Patrón CONTADOR (contar ocurrencias)

Se usa cuando quieres contar cuántas veces ocurre algo.

Ejemplos:

  • Contar pares
  • Contar vocales
  • Contar aprobados

Ejemplo: contar pares

numeros = [1,2,3,4,5,6]
contador = 0
for n in numeros:
    if n % 2 == 0:
        contador += 1print(contador)

Idea mental:

contador = 0
si ocurre algo → contador++

3. Patrón CENTINELA (parar cuando ocurre algo)

Se usa cuando no sabes cuántas iteraciones habrá y paras cuando aparece una condición especial.

Muy común con while.

Ejemplos:

  • Leer hasta introducir 0
  • Leer hasta EOF
  • Menús interactivos
  • Contraseña correcta

Ejemplo: sumar hasta que el usuario introduzca 0

suma = 0
while True:
    n = int(input("Número (0 para salir): "))
    if n == 0:
        break
    suma += nprint(suma)

Idea mental:

repetir hasta que aparezca señal_de_parada

La señal = centinela.


4. Patrón BÚSQUEDA (encontrar algo)

Se usa cuando quieres localizar un elemento.

Ejemplos:

  • Buscar número en lista
  • Buscar palabra en texto
  • Buscar usuario en base de datos

Ejemplo: buscar un número

numeros = [5, 8, 3, 9, 2]
objetivo = 9
encontrado = False
for n in numeros:
    if n == objetivo:
        encontrado = True
        breakprint(encontrado)

Idea mental:

encontrado = False
recorrer:
si coincide → parar

5. Patrón FILTRADO (seleccionar algunos)

Se usa cuando quieres quedarte solo con elementos que cumplen condición.

Ejemplos:

  • Solo pares
  • Solo mayores de edad
  • Solo palabras largas

Ejemplo: filtrar pares

numeros = [1,2,3,4,5,6]
pares = []
for n in numeros ():
    if n % 2 == 0:
        pares.append(n)print(pares)

Idea mental:

resultado = []
si cumple condición → guardar

6. Patrón CONSTRUCCIÓN (generar algo nuevo)

Se usa cuando quieres crear una nueva estructura a partir de otra.

Ejemplos:

  • Crear lista de cuadrados
  • Convertir texto a lista
  • Transformar datos

Ejemplo: cuadrados

numeros = [1,2,3,4]
cuadrados = []for n in numeros:
cuadrados.append(n**2)print(cuadrados)

Versión avanzada (list comprehension):

cuadrados = [n**2 for n in numeros]

Idea mental:

resultado = []
por cada elemento:
    transformar
    guardar

Resumen mental

PatrónPregunta mental
Acumulador¿Estoy combinando resultados?
Contador¿Estoy contando ocurrencias?
Centinela¿Debo parar cuando pase algo?
Búsqueda¿Estoy intentando encontrar algo?
Filtrado¿Solo quiero algunos elementos?
Construcción¿Estoy creando una nueva colección?

Ejercicio de pensamiento (muy potente)

Para cada problema, identifica primero el patrón:

  1. Sumar precios de una lista → Acumulador
  2. Contar aprobados → Contador
  3. Pedir contraseña hasta acertar → Centinela
  4. Buscar usuario → Búsqueda
  5. Quedarse con números > 10 → Filtrado
  6. Crear lista de cuadrados → Construcción