Considere o trecho do código escrito na linguagem Python 3.1...

Próximas questões
Com base no mesmo assunto
Q2639289 Arquitetura de Software

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:

Alternativas

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