Generar reporte
Parte de la sección Logic & Flow del Journey de Python de Coddy — lección 71 de 78.
Desafío
DifícilEl sistema de inventario ya tiene estos componentes implementados:
- Un diccionario global
inventorydonde:- Las claves son nombres de artículos (cadenas de texto)
- Los valores son diccionarios que contienen:
"price": El precio del artículo (float)"stock": Cantidad actual en stock (entero)
- Una función
add_item(item, price, stock)que añade nuevos artículos al inventario - Una función
update_stock(item, quantity)que actualiza el nivel de stock - Una función
check_availability(item)que devuelve el nivel de stock actual
Tu tarea es implementar la función sales_report(sales) que:
- Recibe un diccionario
salesdonde:- Las claves son nombres de artículos
- Los valores son cantidades vendidas
- Para cada artículo en el diccionario de ventas:
- Verifica si el artículo existe en el inventario
- Verifica si hay suficiente stock
- Actualiza el inventario reduciendo los niveles de stock
- Calcula los ingresos basados en el precio y la cantidad vendida
- Devuelve una cadena formateada con los ingresos totales
Maneja estos errores específicos:
- Si un artículo no existe en el inventario, imprime:
"Error: Item '{item}' not found." - Si no hay suficiente stock, imprime:
"Error: Insufficient stock for '{item}'."
La salida debe ser una cadena formateada como: “Total revenue: ${total:.2f}”
Añade (reemplaza) el siguiente bloque de código al final de tu código:
add_item("Apple", 0.5, 50)
add_item("Banana", 0.2, 60)
sales = {"Apple": 30, "Banana": 20, "Orange": 10} # Orange should print an error
print(sales_report(sales)) # Should output: Total revenue: $19.00
print(inventory)Pruébalo tú mismo
inventory = {}
def add_item(item, price, stock):
if item in inventory:
print(f"Error: Item '{item}' already exists.")
return
try:
inventory[item] = {"price": float(price), "stock": int(stock)}
print(f"Item '{item}' added successfully.")
except ValueError:
print("Error: Price and stock must be numeric.")
def update_stock(item, quantity):
if item not in inventory:
print(f"Error: Item '{item}' not found.")
return
try:
new_stock = inventory[item]["stock"] + int(quantity)
if new_stock < 0:
print(f"Error: Insufficient stock for '{item}'.")
else:
inventory[item]["stock"] = new_stock
print(f"Stock for '{item}' updated successfully.")
except ValueError:
print("Error: Quantity must be an integer.")
def check_availability(item):
if item not in inventory:
return "Item not found"
return inventory[item]["stock"]
add_item("Apple", 0.5, 100)
add_item("Banana", 0.2, 50)
update_stock("Apple", -20)
update_stock("Banana", 30)
print(check_availability("Apple")) # Should return 80
print(check_availability("Banana")) # Should return 80
print(check_availability("Orange")) # Should return "Item not found"Todas las lecciones de Logic & Flow
1Exploración de variables
ConstantesAsignación de múltiples variablesIntercambio de variablesVariables de marcador de posiciónRedondear númerosCasting de listas4Aplicación de Agenda de Contactos
Mostrar MenúAgregar Contacto7Conjuntos Parte 2
Operaciones matemáticas Parte 1Operaciones matemáticas Parte 2Resumen - Búsqueda del tesoroSubconjuntos y superconjuntosIterar sobre conjuntosResumen - Rastreador de torneos10Comprensión de listas básica
La sintaxisCreación de listas simplesAñadir condicionesUso de agregación de datosResumen - La casa de las listasResumen - Elementos de libertad13Sistema de Gestión de Inventarios
Descripción general del proyectoAgregar artículo2Diccionarios Parte 1
¿Qué es un diccionario?Crear un diccionarioAcceder a los valoresModificar diccionariosResumen - Gestor de recetas5Toma de decisiones avanzada
Operador ternarioComprobaciones de pertenenciaComprobaciones de identidadErrores de sangríaRepaso - Filtro de vacaciones8Gestor de registros de estudiantes
Descripción general del proyectoAñadir estudiante11Funciones avanzadas
Retornar múltiples valoresFunciones Lambda Parte 1Funciones Lambda Parte 2Desafío de repaso - Lambda SortFunciones recursivas Parte 1Funciones recursivas Parte 2Repaso - Sumar listas anidadas14Funciones de orden superior
La función MapLa función FilterRepaso - Validador de emailsRepaso - Procesador de números3Diccionarios Parte 2
Métodos de diccionariosDiccionarios anidadosVerificación de clavesIterar sobre diccionariosResumen - Contador de frecuencia6Conjuntos - Parte 1
¿Qué es un conjunto?Operaciones básicasMétodos de conjuntosResumen - Eliminar duplicados9Agregación de datos avanzada
Uso de SumBúsqueda de mínimo y máximoOrdenar datos de manera eficienteRepaso - Ordenador de diccionarios