Trabajo Práctico 9

Completar el trabajo práctico en GitHub Classroom

Link al TP 9

Diccionarios

En este ejercicio, administrarás un sistema de inventario.

El inventario debe estar organizado por el nombre del artículo y debe llevar un seguimiento del número de artículos disponibles.

Tendrás que gestionar la adición de artículos a un inventario. Cada vez que un artículo aparezca en una lista dada, aumenta la cantidad del artículo en 1 en el inventario. Luego, tendrás que gestionar la eliminación de artículos de un inventario.

Para finalizar, tendrás que implementar una función que devuelva todos los pares clave-valor en un inventario como una lista de tuplas.

1. Crear un inventario basado en una lista

Implementa la función create_inventory que crea un “inventario” a partir de una lista de artículos. Debe devolver un dict que contenga cada nombre de artículo emparejado con su cantidad respectiva.

>>> create_inventory(["coal", "wood", "wood", "diamond", "diamond", "diamond"])
{"coal":1, "wood":2, "diamond":3}

2. Añadir artículos a partir de una lista a un diccionario existente

Implementa la función add_items que agrega una lista de artículos a un inventario:

>>> add_items({"coal":1}, ["wood", "iron", "coal", "wood"])
{"coal":2, "wood":2, "iron":1}

3. Decrementar artículos del inventario

Implementa la función decrement_items que toma una lista de artículos. La función debe restar uno de la cantidad disponible en el inventario por cada vez que un artículo aparezca en la lista:

>>> decrement_items({"coal":3, "diamond":1, "iron":5}, ["diamond", "coal", "iron", "iron"])
{"coal":2, "diamond":0, "iron":3}

Las cantidades de los artículos en el inventario no deben caer por debajo de 0. Si la cantidad de veces que un artículo aparece en la lista excede la cantidad disponible, la cantidad listada para ese artículo debe permanecer en 0 y las solicitudes adicionales para eliminar cantidades deben ser ignoradas.

>>> decrement_items({"coal":2, "wood":1, "diamond":2}, ["coal", "coal", "wood", "wood", "diamond"])
{"coal":0, "wood":0, "diamond":1}

4. Eliminar por completo un artículo del inventario

Implementa la función remove_item que elimina un artículo y su cantidad completamente de un inventario:

>>> remove_item({"coal":2, "wood":1, "diamond":2}, "coal")
{"wood":1, "diamond":2}

Si el artículo no se encuentra en el inventario, la función debe devolver el inventario original sin cambios.

>>> remove_item({"coal":2, "wood":1, "diamond":2}, "gold")
{"coal":2, "wood":1, "diamond":2}

5. Devolver el contenido del inventario

Implementa la función list_inventory que toma un inventario y devuelve una lista de tuplas (artículo, cantidad). La lista solo debe incluir los artículos disponibles (con una cantidad mayor a cero):

>>> list_inventory({"coal":7, "wood":11, "diamond":2, "iron":7, "silver":0})
[('coal', 7), ('diamond', 2), ('iron', 7), ('wood', 11)]