Questão FC331160
Analise o código Python a seguir. x = lambda a, b: a + [a[-1] + a[-2] + b] y=[-1,0] for i in range(7): y = x(y, i) print (y) O resultado produzido pela execução desse código na IDL
Linguagens de Programação
FGV · 2022
Analise o código Python a seguir.
x = lambda a, b: a + [a[-1] + a[-2] + b]
y=[-1,0]
for i in range(7):
y = x(y, i)
print (y)
O resultado produzido pela execução desse código na IDLE Shell 3.9.9 é:
- [-1, 0, -1, -1, -2, -3, -5, -8, -13]
- [0, -1, 4, 9, 18, 33, 51, 84]
- [-1, 0, -1, -2, -3, -5, -8, -13, -21]
- [-1, 0, -1, 0, 1, 4, 9, 18, 33]
- [-1, 0, -1, 4, 9, 18, 33, 51]
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
O código usa uma função lambda que concatena duas listas: \(x(a,b)=a+[a[-1]+a[-2]+b]\). A variável y inicia em [-1,0] e o laço for i in range(7) percorre \(i=0\) a \(6\).
Em cada iteração é calculado um novo elemento igual à soma dos dois últimos valores atuais de y mais o valor de i, e esse elemento é anexado à lista. Ou seja, novo = \(a[-1]+a[-2]+i\).
Aplicando passo a passo: i=0 → adiciona \(-1\) → [-1,0,-1]; i=1 → adiciona 0 → [-1,0,-1,0]; i=2 → adiciona 1 → [-1,0,-1,0,1]; i=3 → adiciona 4 → [-1,0,-1,0,1,4]; i=4 → adiciona 9 → [-1,0,-1,0,1,4,9]; i=5 → adiciona 18 → [-1,0,-1,0,1,4,9,18]; i=6 → adiciona 33 → [-1,0,-1,0,1,4,9,18,33].
Portanto, a saída impressa é: [-1, 0, -1, 0, 1, 4, 9, 18, 33].
Conteúdo do catálogo FC Concursos · Atualizado em