Questão nº 45
Questão de Tecnologia da Informação · FGV TJ-AP 2024 (nº 45)
Analise o código Python a seguir.
```
L=[0,1,1,2,3]
for k in range(4, -4, -1):
print (L[k] + L[k % len(L)])
```
O resultado da execução desse código, na ordem, é:
- A4, 2, 2, 0, 6, 4;
- B6, 4, 2, 2, 0, 6, 4, 2, 2;
- C6, 4, 2, 2, 0, 6, 4, 2; (alternativa correta)
- D6, 4, 2, 2, 6, 4, 2;
- E6, 4, 2, 0, 6, 4, 2.
Resposta comentada
Gabarito Alternativa C
Em Python, índices negativos em listas contam os elementos a partir do final (por exemplo, L[-1] é o último elemento). O operador módulo (%) com números negativos em Python sempre retorna um resultado com o mesmo sinal do divisor (se o divisor for positivo, o resultado será positivo ou zero), o que é útil para "enrolar" índices em listas.
(A) Incorreta: Esta alternativa está incorreta porque a sequência de resultados não corresponde aos cálculos do loop, sendo mais curta e com valores iniciais diferentes.
(B) Incorreta: Esta alternativa está incorreta porque inclui um valor extra ('2') no final da sequência, o que não ocorre na execução do código. A função range(4, -4, -1) gera os números 4, 3, 2, 1, 0, -1, -2, -3, totalizando 8 iterações, e não 9.
(C) Correta: Esta é a alternativa correta. Vamos analisar passo a passo:
A lista é L = [0, 1, 1, 2, 3], e len(L) é 5.
O loop for k in range(4, -4, -1) faz k assumir os valores: 4, 3, 2, 1, 0, -1, -2, -3.
- k = 4:
L[4](que é 3) +L[4 % 5](que éL[4], ou 3) =3 + 3 = 6 - k = 3:
L[3](que é 2) +L[3 % 5](que éL[3], ou 2) =2 + 2 = 4 - k = 2:
L[2](que é 1) +L[2 % 5](que éL[2], ou 1) =1 + 1 = 2 - k = 1:
L[1](que é 1) +L[1 % 5](que éL[1], ou 1) =1 + 1 = 2 - k = 0:
L[0](que é 0) +L[0 % 5](que éL[0], ou 0) =0 + 0 = 0 - k = -1:
L[-1](que é 3, o último elemento) +L[-1 % 5](que éL[4], ou 3, pois-1 % 5em Python é 4) =3 + 3 = 6 - k = -2:
L[-2](que é 2, o penúltimo elemento) +L[-2 % 5](que éL[3], ou 2, pois-2 % 5em Python é 3) =2 + 2 = 4 - k = -3:
L[-3](que é 1, o antepenúltimo elemento) +L[-3 % 5](que éL[2], ou 1, pois-3 % 5em Python é 2) =1 + 1 = 2
A sequência de resultados é 6, 4, 2, 2, 0, 6, 4, 2.
(D) Incorreta: Esta alternativa está incorreta porque a sequência de resultados não corresponde aos cálculos do loop, faltando o valor '0' e tendo um comprimento diferente.
(E) Incorreta: Esta alternativa está incorreta porque a sequência de resultados não corresponde aos cálculos do loop, faltando um '2' e tendo um comprimento diferente.
Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Desenvolvimento de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.