Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
KeyError: 'precio'
#1
Lightbulb 
Hola, estoy practicando Python poco a poco

Por ahora estoy entrampado en este código, que es por consola y aparentemente no hay errores pero al hacer el debug si hay.
Uso Visual Studio Code,

Código:
def mostrar_menu(opciones):
    print("| Menú:                        |")
    for opcion, detalle in opciones.items():
        descripcion = detalle["descripción"]
        precio = detalle["precio"]
        print(f"| {opcion}. {descripcion.ljust(18)}: {precio} soles |")
def obtener_opcion():
    opcion = input("Selecciona una opción: ")
    return opcion
def mostrar_submenu(opciones):
    print("| Submenú:                     |")
    for opcion, detalle in opciones.items():
        descripcion = detalle["descripción"]
        precio = detalle["precio"]
        print(f"| {opcion}. {descripcion.ljust(18)}: {precio} soles |")
opciones_desayuno = {
    "1": {"descripción": "Café", "precio": 4.5},
    "2": {"descripción": "Chocolate", "precio": 5.0},
    "3": {"descripción": "Jugo de Fresas", "precio": 9.0},
    "4": {"descripción": "Jugo de Papaya", "precio": 8.0},
    "5": {"descripción": "Pan con Pollo", "precio": 7.0},
    "6": {"descripción": "Pan con Jamón", "precio": 7.0},
    "7": {"descripción": "Pan con Tortilla", "precio": 7.0},
    "8": {"descripción": "Volver al Menú Principal", "precio": 0.0},
}
opciones_almuerzo = {
    "1": {"descripción": "Plato de pollo", "precio": 12.0},
    "2": {"descripción": "Plato de carne", "precio": 14.0},
    "3": {"descripción": "Plato de pescado", "precio": 15.0},
    "4": {"descripción": "Ensalada mixta", "precio": 8.0},
    "5": {"descripción": "Sopa del día", "precio": 6.0},
    "6": {"descripción": "Arroz con pollo", "precio": 10.0},
    "7": {"descripción": "Volver al Menú Principal", "precio": 0.0},
}
opciones_cena = {
    "1": {"descripción": "Pizza margarita", "precio": 10.0},
    "2": {"descripción": "Hamburguesa clásica", "precio": 8.0},
    "3": {"descripción": "Sushi variado", "precio": 15.0},
    "4": {"descripción": "Ensalada César", "precio": 9.0},
    "5": {"descripción": "Pasta bolognesa", "precio": 12.0},
    "6": {"descripción": "Plato de mariscos", "precio": 18.0},
    "7": {"descripción": "Volver al Menú Principal", "precio": 0.0},
}
# Menú principal del programa
opciones_principal = {
    "1": {"descripción": "Desayuno", "opciones": opciones_desayuno},
    "2": {"descripción": "Almuerzo", "opciones": opciones_almuerzo},
    "3": {"descripción": "Cena", "opciones": opciones_cena},
    "4": {"descripción": "Salir", "opciones": {}}
}
carrito = []
total_consumido = 0.0
while True:
    mostrar_menu(opciones_principal)
    opcion_principal = obtener_opcion()
    if opcion_principal == "4":
        break
    if opcion_principal in opciones_principal:
        submenu = opciones_principal[opcion_principal]["opciones"]
        mostrar_submenu(submenu)
        opcion_submenu = obtener_opcion()
        if opcion_submenu in submenu:
            item_seleccionado = submenu[opcion_submenu]
            carrito.append(item_seleccionado)
            total_consumido += item_seleccionado["precio"]
            print(f"Has seleccionado: {item_seleccionado['descripción']} - {item_seleccionado['precio']} soles")
        elif opcion_submenu == "7":
            print("Volviendo al Menú Principal...")
        else:
            print("Opción inválida. Intenta nuevamente.")
    else:
        print("Opción inválida. Intenta nuevamente.")
print("Has finalizado tu pedido. Aquí está tu resumen de consumo:")
print("Ítems consumidos:")
for item in carrito:
    print(f"{item['descripción']} - {item['precio']} soles")
print(f"Total consumido: {total_consumido} soles")
 De antemano agradezco su apoyo.
Responder
#2
Hola, bienvenido/a.

¿Cuál es el mensaje de error completo? ¿En qué momento del programa ocurre?
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
Algo pasa que no me deja poner el mensaje.

Lo pondre como imagen[Imagen: AJFCJaXY1LYYJsnuqRFlVbnfFguZLywRIM8D6wky...authuser=0]
Responder
#4
Algunos de tus diccionarios no tienen la clave "precio", entonces arroja ese error. Por ejemplo este:

Código:
{"descripción": "Desayuno", "opciones": opciones_desayuno}
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#5
Gracias lo revisare.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)