Gestor de inventario
Orla Hola. La bodega de carga es un desastre. Se nos están acabando cosas que no sabemos que se nos están acabando y pedimos duplicados de cosas que tenemos de sobra. Necesito una herramienta de inventario en condiciones. Agregar artículos, actualizar cantidades, guardar todo en un archivo entre sesiones. Algo que toda la tripulación pueda usar de verdad 📦
Lo que vas a construir
Comandos: add / update / list / remove / quit
> add
Item name: Widget A
Quantity: 100
Price: 2.49
Added.
> list
Widget A qty: 100 £2.49 each total value: £249.00
> update
Item: Widget A
New quantity: 85
Updated.
> quit
Inventory saved to inventory.json.Lo que vas a necesitar
- Clases y objetos — una clase
Itempara productos individuales, una claseInventorypara gestionar la colección - Archivos y excepciones — guardar y cargar desde JSON, capturar un archivo faltante en la primera ejecución
- Diccionarios y listas — los datos subyacentes antes y después de envolverlos en clases
- Números y aritmética — calcular el valor total por artículo
- Flujo de control y funciones — el bucle de comandos, una función por cada comando
Pistas
Un Item es una clase con tres atributos. Nombre, cantidad, precio. El Inventory gestiona una lista de Items y expone métodos: add, update, remove, list.
Guarda al salir, carga al iniciar. Envuelve la carga del archivo en un try/except para que un archivo faltante en la primera ejecución no haga fallar el script — simplemente empieza con un inventario vacío.
El valor total es una cuestión de visualización. Calcula quantity × price al momento de imprimir. No hace falta guardarlo como atributo, siempre se podrá derivar.
Yendo más allá
Una vez que la herramienta básica funcione:
- Alertas de stock bajo. Al mostrar la lista, marca cualquier artículo cuya cantidad caiga por debajo de un umbral que tú definas.
- Búsqueda. Agrega un comando
searchque encuentre artículos por nombre, con coincidencia parcial. - Exportar reporte. Agrega un comando
exportque escriba un resumen en texto plano del stock actual a un archivo.txt.

