Considere o código Python 2.7 a seguir. L=[6,5,4,3,2,1] for k in range(-3,3): print L[k] A execução desse código exibe os números:
- A)1 1 1 6 5 4;
Errada: esses valores nao correspondem aos indices -3 a 2 da lista dada.
- B)1 2 3 4 5 6;
Errada: essa seria a ordem crescente dos elementos, mas o codigo usa indices negativos primeiro.
- C)3 2 1 6 5 4;
Certa: os indices de -3 a 2 acessam 3, 2, 1, 6, 5 e 4, nessa ordem.
- D)6 5 4 3 2 1;
Errada: isso mostraria a lista original, mas o laço nao percorre os indices nessa sequencia.
- E)6 5 4 6 5 4.
Errada: repete o trecho inicial da lista, mas os tres primeiros acessos sao aos elementos finais via indices negativos.
Gabarito: C
Em Python, listas aceitam indice negativo. O -1 aponta para o ultimo elemento, o -2 para o penultimo, e assim por diante. No caso da lista L = [6,5,4,3,2,1], isso significa que L[-1] = 1, L[-2] = 2 e L[-3] = 3. O comando range(-3,3) gera a sequencia -3, -2, -1, 0, 1, 2. Ou seja, o laço vai imprimir seis valores, sempre pegando o elemento da lista correspondente a cada indice. Em Python 2.7, o print aparece sem parenteses, mas a logica da indexacao é a mesma. Fazendo a leitura na ordem: L[-3] = 3, L[-2] = 2, L[-1] = 1, L[0] = 6, L[1] = 5 e L[2] = 4. Portanto, a saida exibida é 3 2 1 6 5 4. A alternativa C esta correta porque combina exatamente a regra dos indices negativos com a sequencia produzida por range(-3,3). A questao é classica de indice em lista: a banca testa se voce sabe que a contagem negativa anda de tras para frente, sem segredo e sem magia.