Aprende Python · lección gratuita

Lección 32 · Mini-proyecto integrador

Resumen

En esta lección unimos todo lo aprendido para construir un mini sistema completo. Vamos a modelar un pequeño carrito de compras / inventario combinando funciones, listas, diccionarios, bucles y condicionales. La idea es ver cómo las piezas encajan: cada función resuelve una tarea, los datos viven en estructuras (list y dict), y el flujo se controla con for, if y return.

Conceptos

Cuando un programa crece, conviene descomponerlo en funciones pequeñas con una sola responsabilidad. En un carrito de compras típico tendremos funciones para: calcular el subtotal de un producto, sumar el total del carrito, buscar un producto por nombre y aplicar un descuento. Cada función toma datos (normalmente listas o diccionarios) y devuelve un valor.

Representamos cada producto como un diccionario y el carrito como una lista de esos diccionarios. Así podemos recorrer la lista con un for y acceder a cada campo con corchetes:

carrito = [
    {"nombre": "Café", "precio": 12.0, "cantidad": 2},
    {"nombre": "Pan",  "precio": 3.5,  "cantidad": 4},
]

def total_carrito(carrito):
    total = 0
    for item in carrito:
        total += item["precio"] * item["cantidad"]
    return total

print(total_carrito(carrito))  # 38.0

La clave del enfoque integrador es que cada función es independiente y comprobable: le pasas datos conocidos y verificas la salida. Cuando todas funcionan, las combinas para resolver el problema grande. En los ejercicios irás construyendo, una a una, las piezas de este sistema.

Ejemplos

# 1) Subtotal de un solo producto (precio * cantidad)
producto = {"nombre": "Lápiz", "precio": 0.5, "cantidad": 10}
subtotal = producto["precio"] * producto["cantidad"]
print(subtotal)  # 5.0

# 2) Recorrer el carrito y mostrar cada línea
carrito = [
    {"nombre": "Té", "precio": 8.0, "cantidad": 1},
    {"nombre": "Miel", "precio": 15.0, "cantidad": 2},
]
for item in carrito:
    print(item["nombre"], "->", item["precio"] * item["cantidad"])
# Té -> 8.0
# Miel -> 30.0

# 3) Buscar un producto por nombre
def buscar(carrito, nombre):
    for item in carrito:
        if item["nombre"] == nombre:
            return item
    return None

print(buscar(carrito, "Miel"))  # {'nombre': 'Miel', 'precio': 15.0, 'cantidad': 2}

# 4) Aplicar un descuento porcentual al total
def con_descuento(total, porcentaje):
    return total - total * porcentaje / 100

print(con_descuento(100.0, 10))  # 90.0
💡 Construye y prueba cada función por separado. Antes de unir todo, comprueba cada pieza con datos pequeños y conocidos; depurar funciones aisladas es mucho más simple que depurar todo el sistema a la vez.

Cheatsheet

TareaPatrón
Producto{"nombre": str, "precio": float, "cantidad": int}
Catálogo / carritolista = [dict, dict, ...]
Recorrerfor item in carrito:
Acceder a campoitem["precio"]
Acumular totaltotal += item["precio"] * item["cantidad"]
Buscarfor item in carrito: if ...: return item
Devolver resultadoreturn valor
Descuentototal - total * pct / 100

---

← Trabajar con datos: listas de diccionarios

Ver todas las lecciones de Aprende Python →