Questão de Programação — Linguagens de programação — FGV 2023
Programação›Linguagens de programação
Código
fg067777
Banca
FGV
Órgão
Receita Federal
Ano
2023
Nível
Superior
Cargo
Analista-Tributário (manhã)
Analise o código Python a seguir.Assinale a opção que indica os valores exibidos na execução desse código.
A[4, 6]
B[6, 2]
C[6, 4]
D[8, 4]
E[8, 6, 4, 2]
Revelar gabarito e comentário▾
GabaritoC — [6, 4]
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Python: range() e a construção de listas
Gabarito: letra C. O código exibe [6, 4] porque a função range(6, 2, -2) gera uma sequência decrescente que começa em 6, termina antes de 2 (ou seja, em 4) e decrementa de 2 em 2 — e a função list() converte essa sequência em uma lista. A pegadinha está em entender que o parâmetro stop (o valor 2) é exclusivo, ou seja, nunca é incluído no resultado.
A função range() é uma das funções embutidas (built-in) mais importantes do Python, usada para gerar sequências de números. Ela aceita até três argumentos: range(start, stop, step). O primeiro (start) é o valor inicial da sequência (inclusivo); o segundo (stop) é o limite final (exclusivo — a sequência para antes dele); e o terceiro (step) é o incremento (ou decremento, se negativo) entre os valores. Quando step é negativo, a sequência é decrescente, e o stop continua sendo exclusivo — a sequência termina no primeiro valor que seria menor que stop (no caso de decremento).
Vamos aplicar isso ao código da questão: range(6, 2, -2). O start é 6, o stop é 2 e o step é -2. A sequência começa em 6. O próximo valor seria 6 + (-2) = 4. O próximo seria 4 + (-2) = 2. Mas 2 é exatamente o stop, que é exclusivo — portanto, 2 não entra na sequência. A sequência gerada é [6, 4]. Ao aplicar list(), obtemos a lista [6, 4], que é exibida na tela.
Um erro comum é pensar que o stop é inclusivo, o que levaria a [6, 4, 2] (alternativa E). Outro erro é inverter a ordem ou esquecer que o step negativo faz a contagem regressiva. A banca explora exatamente essa confusão entre os parâmetros start, stop e step, e a natureza exclusiva do stop.
Para fixar: a função range() é frequentemente usada em laços for e na criação de listas. Entender a semântica de cada parâmetro é essencial, pois pequenas variações mudam completamente o resultado. A alternativa correta é a que reflete a sequência decrescente com stop exclusivo.
1start = 6 (inclusivo)
2step = -2 (decremento)
36 → 4
4stop = 2 (exclusivo)
5list() → [6, 4]
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
A lista [4, 6] seria gerada por range(4, 7) ou range(4, 6, 1) (sequência crescente de 4 até 5, mas com stop 7 incluiria o 6). No código, a sequência é decrescente e começa em 6, não em 4. O erro aqui é inverter a ordem dos elementos, ignorando o step negativo.
Alternativa B — ❌ Incorreta
A lista [6, 2] seria o resultado se o stop fosse inclusivo e o step fosse -4 (6, 2). Mas o step é -2, então o segundo elemento é 4, não 2. Além disso, o stop (2) é exclusivo, então 2 nunca aparece. O erro é tratar o stop como inclusivo e ignorar o valor do step.
Alternativa C — ✅ Correta ⟵ GABARITO
A sequência range(6, 2, -2) gera os valores 6 e 4, pois o step é -2 (decremento) e o stop (2) é exclusivo. A função list() converte essa sequência na lista [6, 4], que é exibida. Esta é a única alternativa que respeita todos os parâmetros: start=6, stop=2 (exclusivo) e step=-2.
Alternativa D — ❌ Incorreta
A lista [8, 4] não corresponde a nenhuma sequência gerada por range(6, 2, -2). O start é 6, não 8. O erro aqui é alterar o valor inicial, provavelmente confundindo com outra sequência ou somando o step ao start de forma incorreta.
Alternativa E — ❌ Incorreta
A lista [8, 6, 4, 2] seria gerada por range(8, 1, -2), mas o código usa range(6, 2, -2). O erro é incluir o stop (2) na sequência, tratando-o como inclusivo, e também começar em 8 em vez de 6. A banca explora a confusão sobre a exclusividade do stop e o valor do start.
NÃO CAIA NESSA!
A banca adora inverter o papel do stop — muitos candidatos acham que ele é inclusivo e incluem o 2 na lista, caindo na alternativa E. Lembre-se: o stop é sempre exclusivo, tanto em sequências crescentes quanto decrescentes. Com treino, você enxerga essa pegadinha de longe 💪
PEGA ESSA DICA!
Para resolver questões com range(), identifique os três parâmetros: start (início), stop (limite exclusivo) e step (incremento). Se o step for negativo, a sequência é decrescente. Monte a sequência passo a passo e verifique se o stop foi excluído. Essa técnica resolve qualquer variação da questão.