Questão FC331194
Analise o código Python a seguir. L1 = [10,12,13,14,15,18,20] L2 = [10,12,14,18,21] for k in range(-1, -len(L1), -1): if L1[k] in L2[-5:-2]: print L1[k] O comando de execução desse
Linguagens de Programação
FGV · 2018
Analise o código Python a seguir.
L1 = [10,12,13,14,15,18,20]
L2 = [10,12,14,18,21]
for k in range(-1, -len(L1), -1):
if L1[k] in L2[-5:-2]:
print L1[k]
O comando de execução desse código produz
- erro de sintaxe.
- erro de execução.
- a exibição do número 12 somente.
- a exibição de dois números, 14 e 12, nessa ordem.
- a exibição de três números, 18, 12 e 10, nessa ordem.
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
O código imprime 14 e 12 nessa ordem porque a iteração e as fatias usam índices negativos.
A expressão len(L1) é 7, então range(-1, -len(L1), -1) equivale a \([-1,-2,-3,-4,-5,-6]\), ou seja, percorre L1 de trás para frente, sem incluir o índice -7.
Índices negativos acessam elementos de trás para frente: L1[-1]=20, L1[-2]=18, L1[-3]=15, L1[-4]=14, L1[-5]=13, L1[-6]=12.
A fatia L2[-5:-2] pega os elementos nos índices -5, -4 e -3 de L2, ou seja, \( [10,12,14] \).
Ao testar if L1[k] in L2[-5:-2], somente L1[-4]=14 e L1[-6]=12 pertencem à fatia, portanto o programa imprime primeiro 14 e depois 12.
Conteúdo do catálogo FC Concursos · Atualizado em