Estruturas de repetição e listas em Python
Gabarito: letra B. O código percorre a lista nomes usando range(len(nomes)), que gera os índices de 0 a 4, e imprime apenas os elementos cujo índice é par (0, 2 e 4), ou seja, “Ana”, “Carlos” e “Eduardo”. A assertiva I está incorreta porque o código não imprime todos os elementos, apenas os de índice par. As assertivas II, III, IV e V estão corretas.
O trecho de código apresentado é um exemplo clássico de iteração sobre uma lista em Python, combinando a função range() com a função len() para percorrer os índices, e o operador módulo (%) para filtrar elementos. Vamos entender cada parte:
nomes = [“Ana”, “Bruno”, “Carlos”, “Diana”, “Eduardo”]: cria uma lista com 5 elementos. Em Python, a indexação começa em 0, então “Ana” está no índice 0, “Bruno” no índice 1, “Carlos” no índice 2, “Diana” no índice 3 e “Eduardo” no índice 4.
for i in range(len(nomes)):: a função len(nomes) retorna o número de elementos da lista, que é 5. A função range(5) gera uma sequência de números inteiros de 0 até 4 (o limite superior é exclusivo). Portanto, o laço for itera com a variável i assumindo os valores 0, 1, 2, 3 e 4, um por vez.
if i % 2 == 0:: o operador % (módulo) retorna o resto da divisão de i por 2. Se o resto for 0, significa que i é um número par. A condição i % 2 == 0 é verdadeira apenas para os índices pares: 0, 2 e 4.
print(nomes[i]): esta linha imprime o elemento da lista localizado na posição i. Como a condição do if só permite a execução quando i é par, apenas os elementos nos índices 0, 2 e 4 serão impressos: “Ana”, “Carlos” e “Eduardo”.
A pegadinha desta questão está na assertiva I, que afirma que o código imprime todos os elementos. O candidato apressado pode ler o laço for e concluir que ele percorre a lista inteira, esquecendo-se da condição if que filtra os índices. É essencial analisar o código linha por linha, simulando a execução, para identificar exatamente quais elementos são impressos.
Na prática, se você executar este código, a saída será:
Ana
Carlos
Eduardo
Perceba que “Bruno” (índice 1) e “Diana” (índice 3) não são impressos porque seus índices são ímpares. Essa é a distinção crucial entre percorrer a lista e imprimir todos os elementos versus percorrer e imprimir apenas os que atendem a uma condição.
Guarde este critério: a presença de uma estrutura condicional (if) dentro do laço de repetição altera o comportamento do código, e é exatamente nesse ponto que as assertivas se dividem.
Item I — ❌ Incorreto
A assertiva afirma que o código percorre a lista e imprime todos os elementos. Isso é falso. O laço for percorre todos os índices, mas a condição if i % 2 == 0 restringe a impressão apenas aos índices pares. Portanto, os elementos “Bruno” e “Diana” não são impressos. O erro está na palavra “todos”, que generaliza indevidamente o comportamento do código.
Item II — ✅ Correto
A função range(len(nomes)) gera os índices de 0 a 4. Como len(nomes) retorna 5, range(5) produz a sequência 0, 1, 2, 3, 4. O limite superior (5) é exclusivo, ou seja, o último número gerado é 4. A assertiva está correta.
Item III — ✅ Correto
A condição i % 2 == 0 verifica se o índice i é par. O operador % retorna o resto da divisão de i por 2. Se o resto for 0, o número é par. A assertiva está correta.
Item IV — ✅ Correto
Os nomes “Ana”, “Carlos” e “Eduardo” serão impressos. Eles estão nos índices 0, 2 e 4, respectivamente, que são pares. A condição i % 2 == 0 é verdadeira para esses índices, então o print(nomes[i]) será executado para cada um deles. A assertiva está correta.
Item V — ✅ Correto
A função print(nomes[i]) imprime diretamente o nome localizado no índice atual i. A variável i é o índice corrente do laço, e nomes[i] acessa o elemento da lista nessa posição. A assertiva está correta.
Conclusão: Corretos: II, III, IV e V → portanto a alternativa é a letra B.
Gabarito: letra B