Diccionarios
Requisitos de finalización
18. Repaso Segundo Parcial
Consigna:
Se desea tener un registro de productos de almacén. Se quiere almacenar un ID (número de producto autoincremental)
Los datos del producto son:
- Id
- Descripción o nombre del producto
- Precio de compra
- Cantidad disponible
Se debe presentar un menú con las siguientes opciones:
1) Cargar un producto
2) Listar los productos que tengan un stock por debajo de x. Donde x se ingresa por teclado.
3) Mostrar el producto mas económico
4) Mostrar el producto mas caro
5) Mostrar los productos cargados
6) Mostrar el valor del fondo de comercio del almacén: Precio de compra x Cantidad disponible de todos los productos
7) Modificar la cantidad en stock de un producto.
S) Salir
Solución
producto = {}
opcion = ""
while opcion != "s":
print("\n ", producto)
print("\n \t --------- Menú ---------")
print("""
1) Cargar un producto
2) Listar los productos que tengan un stock por debajo de x. Donde x se ingresa por teclado.
3) Mostrar el producto mas económico
4) Mostrar el producto mas caro
5) Mostrar los productos cargados
6) Mostrar el valor del fondo de comercio del almacén: Precio de compra x Cantidad disponible de todos los productos
7) Modificar la cantidad en stock de un producto
S) Salir""")
opcion = input("\n Ingrese una Opción: ").lower()
if opcion == "1":
ID = len(producto)
nombre = input("\n Ingrese el nombre del producto: ").capitalize()
precio = -1
while precio <= 0:
try:
precio = float(input("\n Ingrese el precio del producto: "))
except ValueError:
print("\n Debe ingresar un valor flotante. Reingrese.")
else:
if precio <= 0:
print("\n El precio del producto no puede ser negativo.")
cantidad = -1
while cantidad < 0:
try:
cantidad = int(input("\n Ingrese la cantidad del producto: "))
except ValueError:
print("\n Debe ingresar un valor entero. Reingrese.")
else:
if cantidad < 0 :
print("\n La cantidad del producto no puede ser negativa.")
producto[ID + 1] = [nombre, precio, cantidad]
elif opcion == "2":
if producto:
Bandera_stock = False
x = -1
while x <= 0:
try:
x = int(input("\n Ingrese un valor: "))
except ValueError:
print("\n Debe ingresar un valor entero. Reingrese.")
else:
if x <= 0:
print("\n El valor ingresado no puede ser negativo. Reingrese. ")
for clave in producto:
if producto[clave][2] < x:
temporal = producto[clave]
print(f"El producto '{temporal[0]}' posee un stock de '{temporal[2]}' que es menor al valor '{x}'")
Bandera_stock = True
if not (Bandera_stock):
print(f"\n No hay ningún producto con un stock menor al valor '{x}'")
else:
print("\n No se ha registrado ningún producto, por favor, ejecute la opción 1")
elif opcion == "3":
if producto:
Bandera_menor = True
for lista in producto.values():
if Bandera_menor:
menor = lista[1]
nombre_temporal = lista[0]
Bandera_menor = False
else:
if menor > lista[1]:
menor = lista[1]
nombre_temporal = lista[0]
print(f"\n El producto más económico es '{nombre_temporal}' con un precio de '{menor}' ")
else:
print("\n No se ha registrado ningún producto, por favor, ejecute la opción 1")
elif opcion == "4":
if producto:
Bandera_mayor = True
for lista in producto.values():
if Bandera_mayor:
mayor = lista[1]
nombre_temporal = lista[0]
Bandera_mayor = False
else:
if mayor < lista[1]:
mayor = lista[1]
nombre_temporal = lista[0]
print(f"\n El producto más económico es '{nombre_temporal}' con un precio de '{mayor}' ")
else:
print("\n No se ha registrado ningún producto, por favor, ejecute la opción 1")
elif opcion == "5":
if producto:
print("\n El Almacén cuenta con los siguientes productos:")
for lista in producto.values():
print(f"\n Nombre: {lista[0]} - Precio: {lista[1]} - Cantidad: {lista[2]}")
else:
print("\n No se ha registrado ningún producto, por favor, ejecute la opción 1")
elif opcion == "6":
if producto:
suma = 0
for lista in producto.values():
suma += lista[1] * lista[2]
print(f"\n El fondo de comercio del almacén es: {suma} ")
else:
print("\n No se ha registrado ningún producto, por favor, ejecute la opción 1")
elif opcion == "7":
if producto:
print("\n Elija algún producto de la siguiente lista del almacén, mediante su 'ID' para modificar el stock del producto.")
for clave, lista in producto.items():
print(f"\n ID: {clave} - Producto: {lista}")
ID = -1
while ID not in producto:
try:
ID = int(input("\n Ingrese el ID del producto que desea modificar: "))
except ValueError:
print("\n Debe ingresar un valor numérico. Por favor, reingrese.")
else:
if ID not in producto:
print("\n El ID que ingresó no se encuentra en el almacén")
cantidad = -1
while cantidad <= 0:
try:
cantidad = int(input(f"\n Ingrese la nueva cantidad del stock para el producto '{producto[ID][0]}': "))
except ValueError:
print("\n Debe ingresar un valor numérico. Por favor, reingrese.")
else:
if cantidad <= 0:
print("\n La cantidad ingrasada no puede ser negativa. Reingrese. ")
producto[ID][2] = cantidad
else:
print("\n No se ha registrado ningún producto, por favor, ejecute la opción 1")
elif opcion == "s":
print("\n Finalizando... ")
else:
print("\n Opción no válida")