Aprende Python · lección gratuita
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.
funciones, listas, diccionarios, bucles y condicionales.dict con claves como "nombre", "precio" y "cantidad".list de diccionarios representa todo el catálogo o el carrito.for/if y devuelven un resultado con return.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.
# 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.
| Tarea | Patrón |
|---|---|
| Producto | {"nombre": str, "precio": float, "cantidad": int} |
| Catálogo / carrito | lista = [dict, dict, ...] |
| Recorrer | for item in carrito: |
| Acceder a campo | item["precio"] |
| Acumular total | total += item["precio"] * item["cantidad"] |
| Buscar | for item in carrito: if ...: return item |
| Devolver resultado | return valor |
| Descuento | total - total * pct / 100 |
---