Considere o código em Python, a seguir:O resultado da sua ex...

Próximas questões
Com base no mesmo assunto
Q4038033 Programação

Considere o código em Python, a seguir:



Imagem associada para resolução da questão



O resultado da sua execução (os dois valores gerados pelas execuções da função print) será:

Alternativas

Comentários

Veja os comentários dos nossos alunos

Essa questão é clássica de funções como parâmetro + composição de funções. Vou direto ao ponto e depois destrincho passo a passo.

---

✅ Resposta correta:

Alternativa A → 70; 65

---

Vamos entender o código

1. Funções principais

def funcao1(funcao, dado):

return funcao(dado + 5)

Soma 5 ao dado e depois aplica a função recebida.

---

def funcao2(funcao, dado):

return funcao(dado * 2)

Multiplica o dado por 2 e depois aplica a função recebida.

---

def funcao3(dado):

return dado * 3

Multiplica o número por 3.

---

2. Funções auxiliares

def auxiliar_funcao2(dado):

return funcao2(lambda x: x, dado)

Aqui ele usa uma função identidade (lambda x: x), ou seja:

Não altera o valor

Só aplica o comportamento da funcao2

Então: auxiliar_funcao2(dado) = dado * 2

---

def auxiliar_funcao1(dado):

return funcao1(lambda x: x, dado)

Mesma ideia: auxiliar_funcao1(dado) = dado + 5

---

Agora o cálculo

▶️ Primeira linha:

funcao1(auxiliar_funcao2, funcao3(10))

Passo a passo:

1. funcao3(10) 10 * 3 = 30

2. Agora:

funcao1(auxiliar_funcao2, 30)

3. Dentro da função: 30 + 5 = 35

4. Aplica auxiliar_funcao2(35): 35 * 2 = 70

⚠️ Até aqui daria 70... MAS cuidado: isso parece correto superficialmente — porém tem um detalhe importante:

auxiliar_funcao2 chama funcao2, que aplica a função depois da multiplicação

Vamos reavaliar corretamente:

auxiliar_funcao2(35)

→ funcao2(lambda x: x, 35)

→ (35 * 2) = 70

→ lambda x: x → mantém 70

✔️ Resultado final da primeira: 70

---

▶️ Segunda linha:

funcao2(auxiliar_funcao1, funcao3(10))

1. funcao3(10) = 30

2. Agora:

funcao2(auxiliar_funcao1, 30)

3. Dentro da função: 30 * 2 = 60

4. Aplica auxiliar_funcao1(60):

→ funcao1(lambda x: x, 60)

→ 60 + 5 = 65

→ lambda mantém 65

✔️ Resultado: 65

✔️ Resultado correto seria: 70; 65 (Alternativa A)

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo