Analise o código Python a seguir.def f(x):return pow(x,2)def...
Analise o código Python a seguir.
def f(x):
return pow(x,2)
def newfunc(function,*y):
v=[]
for i,e in enumerate(y):
v+=[function(e) if i%2==0 else 1]
return sum(v)
print(newfunc(f,4,1,3,2))
Após a execução do código, a saída é
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa Correta: B - 27.
Vamos entender o funcionamento do código Python apresentado. Para isso, precisamos analisar cada parte do código e como elas interagem.
A função f(x) é bastante simples, ela retorna o quadrado de x usando a função pow(x, 2).
Já a função newfunc(function, *y) recebe uma função e uma lista de argumentos variáveis. Dentro desta função:
- Uma lista vazia
vé inicializada. - Um loop
forpercorre todos os elementosy, enumerando-os para obter tanto o índiceiquanto o elementoe. - Dentro do loop, se o índice
ifor par (i % 2 == 0), a funçãofunction(e)é aplicada e o resultado é adicionado à listav. Caso contrário, o valor1é adicionado à lista. - Finalmente, a soma dos elementos da lista
vé retornada.
Agora, vamos aplicar esses conceitos ao trecho print(newfunc(f, 4, 1, 3, 2)):
- Para
i = 0(par),e = 4:f(4) = 4^2 = 16 - Para
i = 1(ímpar),e = 1:1 - Para
i = 2(par),e = 3:f(3) = 3^2 = 9 - Para
i = 3(ímpar),e = 2:1
A lista v após o loop será [16, 1, 9, 1]. A soma dos elementos da lista v é 16 + 1 + 9 + 1 = 27. Portanto, a saída do código é 27, confirmando que a alternativa correta é a B.
Justificativa das Alternativas Incorretas:
- A - 7: Este valor não corresponde à soma correta dos elementos de
v, que deveria ser27. - C - 5: Mesmo motivo acima, este valor não reflete a soma correta dos elementos processados.
- D - 30: Novamente, este valor não corresponde ao resultado da soma correta, que é
27.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo