Python - Estara bien esta solucion a este ejercicio ?

 
Vista:
sin imagen de perfil

Estara bien esta solucion a este ejercicio ?

Publicado por samnpy96 (2 intervenciones) el 11/07/2022 04:38:53
Un negocio de barrio te ha pedido un programa para controlar su stock.
- tu programa debe leer un archivo llamado stock.csv y usarlo para calculos.
- cada linea representa un producto y contiene en cada una de sus posiciones:
- el nombre
- cantidad
- precio de compra

por ejemplo:
Leche 1L, 2, 900
Cafe 170gr, 4, 3800
Leche 1L, 3, 1000
Leche 1L, 10, 950
Cafe 170gr, 5, 4000

1 - Tu programa debe mostrar un menu como el siguiente y terminar al escoger la opcion 2:
Bienvenida(o)
(1) Revisar Producto
(2) Salir
Por favor ingresa opcion:

2 - Si se escoge la opcion 1, tu programa debe pedir el nombre del producto e imprimir su stock total y el precio de venta sugerido. el precio pagado por el producto mas un 30% de utilidad. luego de imprimir el resultado , el programa debe volver al menu.

Considerando el archivo del ejemplo anterior, tu programa debiera imprimir lo siguiente:

Ingrese el producto: Leche 1L
El stock de Leche 1L es: 15
El precio de venta sugerido es: 1300




csv

Leche 1L, 2, 900
Cafe 170gr, 4, 3800
Leche 1L, 10, 1000
Leche 1L, 3, 950
Cafe 170gr, 5, 4000


Mi solucion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import csv
 
dic_productos = {"Leche 1L": [0, 0], "Cafe 170gr": [0, 0]}
 
with open("stock.csv") as f:
    reader = csv.reader(f)
    for row in reader:
        dic_productos[row[0]][0] += int(row[1])
 
        if int(dic_productos[row[0]][1]) < int(row[2]):
            dic_productos[row[0]][1] = int(row[2])
 
 
 
def revisar_producto():
    print("Seleccione un producto")
    for key in dic_productos.keys():
        print(f"\t{key}")
 
    nombre_producto = input("Ingrese el nombre del producto\n>>> ")
 
    if nombre_producto in dic_productos.keys():
        print(f"Nombre: {nombre_producto}, Stock: {dic_productos[nombre_producto][0]}")
        print(f"Precio maximo: {int(dic_productos[nombre_producto][1]) + (int(dic_productos[nombre_producto][1])  * 0.30)}")
    else:
        print("El producto ingresado no existe.\n")
 
 
 
opciones = "1- Revisar el producto\n2- Salir"
 
while True:
    print(opciones)
 
    opcion = int(input("\nSeleccione una opcion:\n>>> "))
 
    if opcion == 1:
        revisar_producto()
    elif opcion == 2:
        print("Adios.")
        break
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Estara bien esta solucion a este ejercicio ?

Publicado por tincopasan (1082 intervenciones) el 11/07/2022 07:34:27
No puedo decir que tu código está mal, ya que funciona, basicamente se usa bien o mal sino funciona, lo que hay son códigos complicados o con mala lógica e inentendibles.
En este caso sin modificar demasiado este código te digo que cambiaría.
1) la forma de creación del diccionario, ya que estás declarando de forma predeterminada lo que contiene el diccionario, ¿y si cambian la cantidad de artículos? o sea se pueden eliminar o agregar artículos y tendrás que hacerlo modificando el script, crearé el diccionario a partir de la lectura del archivo.
2)Cambiaré la forma de lectura de las opciones, para simplificar verificación de errores en caso de que lo haya.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#-*- coding: utf  -8 -*-
 
import csv
 
dic_productos = {}
with open("stock.csv") as f:
    reader = list(csv.reader(f))
    for z in reader:
        nombre,stock,precio=z[0],z[1],z[2]
        if nombre not in dic_productos:
            dic_productos[nombre]=[int(stock),int(precio)]
        else:
            sumar,compara=dic_productos.get(nombre)
            real=int(sumar) + int(stock)
            if int(precio) < int(compara):
                valor=compara
            else :
                valor= precio
            dic_productos[nombre]=[real,valor]
 
def revisar_producto():
    print("Seleccione un producto")
    for key in dic_productos.keys():
        print(f"\t{key}")
 
 
    nombre_producto = input("Ingrese el nombre del producto\n>>> ")
    if nombre_producto in dic_productos.keys():
        print(f"Nombre: {nombre_producto}, Stock: {dic_productos[nombre_producto][0]}")
        print(f"Precio maximo: {int(dic_productos[nombre_producto][1]) + (int(dic_productos[nombre_producto][1])  * 0.30)}\n")
    else:
        print("El producto ingresado no existe.\n")
 
opciones = "1- Revisar el producto\n2- Salir"
 
while True:
    print(opciones)
    opcion = input("\nSeleccione una opción:\n>>> ")
    #lo dejo como cadena para que no genere error y no usar try
    if opcion == "1":
        revisar_producto()
    elif opcion == "2":
        print("Adios.")
        break
    else: print("Opción incorrecta.\n")

Por supuesto se puede desarrollar de otras formas, pero traté de no cambiar tanto, aunque repito, no está mal tu código, solo creo que se pueden evitar ciertas dificultades.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 233
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Estara bien esta solucion a este ejercicio ?

Publicado por smn (62 intervenciones) el 16/07/2022 20:21:50
Gracias por tu respuesta, una consulta como puedo saber si mi código tiene mala lógica o no se entiende ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar