es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

        def editar_inventario(self):
            nombre_item = input('Ingrese el nombre del artículo: ')
    
            try:
                acciones = {
                    'add': self.agregar_cantidad,
                    'remove': self.remover_cantidad,
                }
                entrada_usuario = input('Escriba \'ADD\' o \'REMOVE\' para cambiar la cantidad: ').lower()
                acciones[entrada_usuario](nombre_item)
    
            except KeyError:
                print('El artículo no está en stock. Verifique el stock actual para el inventario actual.')
            except ValueError:
                print('Respuesta inválida.')
    
        def agregar_cantidad(self, nombre_item):
            cantidad = int(input('Ingrese cuántos desea agregar: '))
            self.stock[nombre_item] += cantidad
    
        def remover_cantidad(self, nombre_item):
            cantidad = int(input('Ingrese cuántos desea eliminar: '))
            self.stock[nombre_item] -= cantidad
    

    En este ejemplo, definimos dos métodos auxiliares (agregar_cantidad y remover_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.

Comments are closed.