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")