Considere o trecho do código escrito na linguagem Python 3.1...
Considere o trecho do código escrito na linguagem Python 3.10 apresentado a seguir:
def my(x):
---return lambda y: sum(range(x)) + y
not_my=my(1)
print(not_my(10))
Indique a alternativa que apresenta CORRETAMENTE o resultado da sua execução:
- Gabarito Comentado (1)
- Aulas (1)
- Comentários (0)
- Estatísticas
- Cadernos
- Criar anotações
- Notificar Erro
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é: B - 10
Vamos entender o porquê desta resposta:
O código fornecido é o seguinte:
def my(x): return lambda y: sum(range(x)) + y not_my = my(1) print(not_my(10))
Primeiro, observe a função my(x)
. Ela retorna uma função lambda que recebe um argumento y
. Essa função lambda calcula a soma dos números em um intervalo de 0
até x-1
(usando sum(range(x))
) e adiciona y
ao resultado.
Passo a passo da execução:
1. not_my = my(1)
: Chama a função my
com x
valendo 1
. A função my
retorna a função lambda lambda y: sum(range(1)) + y
. Assim, not_my
se torna essa função lambda.
2. print(not_my(10))
: Agora estamos chamando a função lambda armazenada em not_my
com y = 10
. Vamos calcular o valor dessa função passo a passo:
- sum(range(1))
é a soma dos números de 0
a 0
, que é apenas 0
.
- Então, a expressão se torna 0 + 10
, que resulta em 10.
As alternativas incorretas são:
A - 1: Esta alternativa está incorreta porque ela parece confundir a soma dos elementos do range(1)
com o valor final da expressão. No entanto, o valor final da expressão é a soma de sum(range(1))
e y
, não apenas sum(range(1))
.
C - 11: Esta alternativa está incorreta porque parece considerar que sum(range(1))
é 1
, quando na verdade é 0
.
D - Será apresentada uma mensagem de erro de sintaxe: Este é claramente um equívoco, pois o código é sintaticamente correto e executável.
E - NaN: NaN
significa "Not a Number" e é normalmente usado em contextos de operações inválidas com números. Não há nada no código que levaria a um resultado de NaN
.
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