FC ConcursosFC Concursos

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

  1. erro de sintaxe.
  2. erro de execução.
  3. a exibição do número 12 somente.
  4. a exibição de dois números, 14 e 12, nessa ordem.
  5. 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

Continue aprendendo