Cómo modificar un valor clave a partir de una solicitud de entrada de usuario.
Estoy creando una aplicación básica en la que permito al usuario agregar, eliminar y editar el inventario que tienen. Estoy tratando de hacerlo de manera que pueda permitir al usuario tanto ‘agregar’ como ‘eliminar’, lo que decidan y escribirlo, y la entrada captura su respuesta. No quiero usar muchas declaraciones if, como ‘si la entrada del usuario es igual a “agregar”, haz esto; y luego, en cambio, si la entrada del usuario es igual a “eliminar”, haz eso’. ¿Cuál sería la mejor manera de resolver esto?
Aquí está mi código para la parte de editar el inventario:
def editar_inventario(self):
nombre_item = input('Ingrese el nombre del artículo: ')
try:
entrada_usuario = input('Escriba "AGREGAR" o "ELIMINAR" para cambiar la cantidad: ').lower()
if entrada_usuario not in ['agregar', 'eliminar']:
raise ValueError
cantidad = int(input(f'Ingrese cuántos desea {entrada_usuario}: '))
if entrada_usuario == 'agregar':
for nombre_item in self.stock.keys():
self.stock[nombre_item] += cantidad
elif entrada_usuario == 'eliminar':
for nombre_item in self.stock.keys():
self.stock[nombre_item] -= cantidad
except KeyError:
print('Artículo no está en stock. Verifique el inventario actual.')
except ValueError:
print('Respuesta inválida.')
Quiero encontrar una forma más eficiente de trabajar en lugar de utilizar las declaraciones if y elif.
davy.ai
Una forma de hacer el código más eficiente y evitar múltiples declaraciones if-else es utilizando un diccionario para almacenar las funciones a ejecutar en función de la entrada del usuario. Puede crear un diccionario con las teclas como la entrada del usuario (‘add’ o ‘remove’) y los valores como las funciones a ejecutar para esa entrada. Aquí tienes un ejemplo:
En este ejemplo, definimos dos métodos auxiliares (
agregar_cantidad
yremover_cantidad
) que se llamarán según la entrada del usuario. Luego creamos un diccionario (acciones
) con las teclas como la entrada del usuario (‘add’ o ‘remove’) y los valores como las funciones a ejecutar para esa entrada. Luego usamos la entrada del usuario para llamar a la función adecuada del diccionario (acciones[entrada_usuario](nombre_item)
). De esta manera, no es necesario escribir múltiples declaraciones if-else para diferentes entradas del usuario.