Como muchos que pueden estar leyendo esto, soy alguien que quiere cambiar su calidad de vida y la de su familia a través del aprendizaje, gracias a esto conocí a Platzi y al mundo de la programación.
Quiero compartir como realizar un menú de opciones con un ciclo while, dicho menú me permitirá agregar, modificar, eliminar y verificar elementos dentro de un diccionario, soy consciente de que existen n formas de llegar a una misma solución, pero acá va mi aporte.
Inicialmente, se crea el diccionario que almacenará los datos, en este caso será productos de un supermercado, los cuales tendrán un nombre principal y se le asociará un costo y una cantidad.
diccionario = {
"Manzanas": {"Precio": 2000, "Cantidad": 6},
"Huevos": {"Precio": 600, "Cantidad": 15},
"Lavaplatos": {"Precio": 5100, "Cantidad": 1},
}
Posteriormente, se crea el ciclo while, podemos condicionarlo a una variable True; sin embargo, en este caso lo realizaré con un ciclo “Infinito” condicionándolo al valor booleano True, más adelante veremos como salir de este ciclo.
Dentro de dicho ciclo se genera inicialmente el menú de opciones para el usuario y la variable input que recibirá la opción ingresada por el usuario, de la siguiente manera:
while True:
print("Acá encontraras las opciones:")
print("")
print("(1) Ingresar datos.")
print("(2) Modificar datos.")
print("(3) Eliminar datos.")
print("(4) Listar datos.")
print("(5) Buscar datos.")
print("(6) Salir.")
print("")
opcion = input("Acá el usuario indicará que opcion desea ejecutar (1, 2, etc): ")
Siguiendo con el proceso veo dos caminos posibles, interactuar con la opción brindada por el usuario por medio de condicionales if o crear un match case, en este caso decidí usar los condicionales if, en el cual según la opción del usuario realizara la porción de código correspondiente, recordar que todo debe estar correctamente endentado dentro del ciclo while.
if opcion == "1":
# Codigo para Agregar elementospasselif opcion == "2":
# Codigo para Modificar elementospasselif opcion == "3":
# Codigo para Eliminar elementospasselif opcion == "4":
# Codigo para Listar elementospasselif opcion == "5":
# Codigo para Buscar elementospasselif opcion == "6":
print("Gracias por usar nuestro sistema! VUELVA PRONTO!")
break# para detener el cicloelse:
print("La opcion no es valida, intente nuevamente") # Si el usuario ingresa una opcion no valida el programa seguira ejecutando
if opcion == "1":
nombre, precio, cantidad = (
input("Nombre: "),
float(input("Precio: ")),
int(input("Cantidad: ")),
)
diccionario[nombre] = {"Precio" : precio, "Cantidad" : cantidad}
Se debe tener en cuenta que el input por defecto recibe datos en formato string o cadena de texto, por lo cual se hace indispensable castear los datos que sea necesario hacerlo, además acá se muestra como Python me permite crear diferentes variables en una sola instrucción por medio de n variables separadas por comas (,) igual al mismo número n de valores separados por comas (,). Al finalizar volverá al menú debido al ciclo anterior.
nombreDiccionario[clavePrincipal][claveInterna] = datoNuevoOModificar
Como continuación del ejercicio planteado se tabula dentro del elif correspondiente a la opción 2, se modificara la cantidad por medio de un input donde el usuario ingresa el nombre del producto que desea modificar, por medio de un if y el método .keys() se valida si este producto existe, si existe le permite al usuario modificar la cantidad y si no le indicara que el producto no está en el diccionario, a continuación vemos el código:
elif opcion == "2":
producto = input("Ingrese producto a modificar: ")
if producto in diccionario.keys():
cantidad = input("Ingrese nueva cantidad: ")
diccionario[producto]["Cantidad"] = cantidad
else:
print(f"{producto} no se encuentra en el diccionario")
Recordemos que el método .keys() arroja las llaves o claves de un diccionario, además el format (f" "), permite imprimir variables de forma dinámica dentro de un string o cadena de texto.
elif opcion == "3":
producto = input("Ingrese producto a eliminar: ")
if producto in diccionario.keys():
del diccionario[producto]
else:
print(f"{producto} no se encuentra en el diccionario")
elif opcion == "4":
for producto in diccionario.keys():
print(f"{producto} cuesta {diccionario[producto]["Precio"]} y hay {diccionario[producto]["Cantidad"]} unidades.")
El ciclo _for _junto con el método .keys() recorrerá uno a uno cada producto y dentro del format llamo el valor correspondiente a cada subclave.
elif opcion == "5":
producto = input("Ingrese producto a buscar: ")
if producto in diccionario.keys():
print(f"{producto} se encuentra en el inventario, cuesta {diccionario[producto]["Precio"]} y hay {diccionario[producto]["Cantidad"]} unidades.")
Por último mencioné que explicaría como salir de un ciclo infinito, para esto si el usuario ingresa la opción “6” accionará un break, el cual se encarga de salir del ciclo, además el _else _ en los condicionales principales me asegura que el usuario ingrese una opción válida.
El código completo queda de la siguiente manera:
diccionario = {
"Manzanas": {"Precio": 2000, "Cantidad": 6},
"Huevos": {"Precio": 600, "Cantidad": 15},
"Lavaplatos": {"Precio": 5100, "Cantidad": 1},
}
whileTrue:
print("Acá encontraras las opciones:")
print("")
print("(1) Ingresar datos.")
print("(2) Modificar datos.")
print("(3) Eliminar datos.")
print("(4) Listar datos.")
print("(5) Buscar datos.")
print("(6) Salir.")
print("")
opcion = input("Acá el usuario indicará que opcion desea ejecutar (1, 2, etc): ")
if opcion == "1":
nombre, precio, cantidad = (
input("Nombre: "),
float(input("Precio: ")),
int(input("Cantidad: ")),
)
diccionario[nombre] = {"Precio" : precio, "Cantidad" : cantidad}
elif opcion == "2":
producto = input("Ingrese producto a modificar: ")
if producto in diccionario.keys():
cantidad = input("Ingrese nueva cantidad: ")
diccionario[producto]["Cantidad"] = cantidad
else:
print(f"{producto} no se encuentra en el diccionario")
elif opcion == "3":
producto = input("Ingrese producto a eliminar: ")
if producto in diccionario.keys():
del diccionario[producto]
else:
print(f"{producto} no se encuentra en el diccionario")
elif opcion == "4":
for producto in diccionario.keys():
print(f"{producto} cuesta {diccionario[producto]["Precio"]} y hay {diccionario[producto]["Cantidad"]} unidades.")
elif opcion == "5":
producto = input("Ingrese producto a buscar: ")
if producto in diccionario.keys():
print(f"{producto} se encuentra en el inventario, cuesta {diccionario[producto]["Precio"]} y hay {diccionario[producto]["Cantidad"]} unidades.")
elif opcion == "6":
print("Gracias por usar nuestro sistema! VUELVA PRONTO!")
break# para detener el cicloelse:
print("La opcion no es valida, intente nuevamente")
Muchas gracias por tomarse el tiempo en leer este pequeño aporte, muchos éxitos en su camino de aprendizaje y en su presente y futuro laboral.