Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

199
Visualizações
¿Cómo escribir una función que tenga 2 funciones anidadas dentro y permita calcular la suma / diferencia para cualquier número de elementos dados?

Tengo que escribir una función que tenga 2 funciones anidadas dentro y calcule solo la suma o la diferencia de tantos números como queramos. Cada ecuación termina con "=". Escribí algo así pero todavía no funciona. ¿Que estoy haciendo mal?

 def calculator(x: int): def operation(operator: str): def calculation(y: int): while operator != "=": if operators[i] == "=": result -= digits[j] elif operators[i] == "+": result += digits[j] else: break return result return operator return calculator(result)

La función debería funcionar así:

 calculator(1)('+')(4)('-')(2)('=')

El resultado es 3. No puedo usar ninguna importación de paquetes o variables globales.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

También puede usar un diccionario para definir sus operaciones y hacer una función muy legible y simple con espacio para expansión:

 def calc(a: int): return lambda op: { '+': lambda b: calc(a+b), '-': lambda b: calc(ab), '/': lambda b: calc(a/b), '*': lambda b: calc(a*b), }.get(op, a) print(calc(2)('+')(3)('-')(10)('/')(10)('*')(-100)('='))
over 4 years ago · Santiago Trujillo Relatório

0

Deduciendo de la forma de la entrada, debe devolver "funciones" cada vez. Una forma de hacerlo es usar lambda :

 def calculator(x: int): def operation(op: str, x: int): if op == '=': return x else: return lambda _: calculation(_, op, x) def calculation(y: int, op: str, x: int): if op == '+': return lambda _: operation(_, x + y) else: return lambda _: operation(_, x - y) # mind the order of x & y return lambda _: operation(_, x) print(calculator(1)('+')(4)('-')(2)('=')) # 3 print(calculator(3)('-')(10)('+')(6)('=')) # -1

Por ejemplo, considere calculator(1)('+')(4)('-')(2)('=') . La primera parte calculator(1)('+') significa que calculator(1) en sí misma es una función, que luego se aplica con un argumento ('+') . Entonces la calculator(x) necesita devolver una operation de función.

También es posible que desee registrar el resultado ( 1 en este caso), pasándolo a operation ; es por eso que agregué un parámetro x (que significa el resultado actual) a la operation . Luego usé lambda x: operation(_, x) para devolver una "función parcial".

Por el mismo razonamiento, operation devuelve calculation , que a su vez devuelve operation y así sucesivamente, hasta que se da operation con '=' .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda