Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

CONTROL_INVENTARIO - Solución con while

listaLibros=[
    {'id':1,'nombre':'1984', 'cantidad':5},
    {'id':2,'nombre':'Cien años de soledad','cantidad':5},
    {'id':3,'nombre':'El Principito','cantidad':5},
    {'id':4,'nombre':'El Hobbit','cantidad':5},
    {'id':5,'nombre':'Orgullo y Prejuicio','cantidad':5}
]

while True:
  try:
    libroSeleccionado=int(input('Ingrese el código del libro que desea [1-5]: '))
    if libroSeleccionado in range(1,6):
      while listaLibros[libroSeleccionado-1]['cantidad']>0:
        listaLibros[libroSeleccionado-1]['cantidad']-=1
        print(f'¡Venta realizada! Inventario restante: {listaLibros[libroSeleccionado-1]["cantidad"]}')
      print('Inventario agotado')
      break
  except ValueError:
    print('Debe ingresar un valor numérico')
1 respuesta

¡Hola Eva, espero que estés bien!

Tu código está casi perfecto para lo que necesitas. Sin embargo, hay un pequeño detalle que podrías considerar ajustar para que el programa funcione de manera más efectiva. Actualmente, el bucle while interno sigue restando la cantidad hasta que se agota el inventario, pero no permite seleccionar otro libro una vez que el inventario de un libro específico se agota.

Para mejorar esto, podrías mover la selección del libro dentro del bucle principal y permitir que el usuario seleccione otro libro después de que uno se agote. Aquí tienes una pequeña modificación que podrías hacer:

listaLibros = [
    {'id': 1, 'nombre': '1984', 'cantidad': 5},
    {'id': 2, 'nombre': 'Cien años de soledad', 'cantidad': 5},
    {'id': 3, 'nombre': 'El Principito', 'cantidad': 5},
    {'id': 4, 'nombre': 'El Hobbit', 'cantidad': 5},
    {'id': 5, 'nombre': 'Orgullo y Prejuicio', 'cantidad': 5}
]

while True:
    try:
        libroSeleccionado = int(input('Ingrese el código del libro que desea [1-5]: '))
        if libroSeleccionado in range(1, 6):
            if listaLibros[libroSeleccionado - 1]['cantidad'] > 0:
                listaLibros[libroSeleccionado - 1]['cantidad'] -= 1
                print(f'¡Venta realizada! Inventario restante: {listaLibros[libroSeleccionado - 1]["cantidad"]}')
                if listaLibros[libroSeleccionado - 1]['cantidad'] == 0:
                    print('Inventario agotado para este libro')
            else:
                print('Inventario agotado para este libro')
    except ValueError:
        print('Debe ingresar un valor numérico')

Con esta modificación, el programa permitirá seguir vendiendo otros libros incluso después de que uno se haya agotado. Espero que esta sugerencia te sea útil.

¡Espero haber ayudado y buenos estudios!