Pular para o conteúdo principal

Questão de Programação — Python — Quadrix 2023

ProgramaçãoPython
Código
qg026004
Banca
Quadrix
Órgão
CREA-GO
Ano
2023
Nível
Superior
Cargo
Analista de Área - T.I
No que concerne à linguagem de programação Python e à linguagem de modelagem unificada (UML), julgue o item.O comando range(n), em Python, gera uma lista (implícita) com os valores de 0 até n−1.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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: a função range() e a geração de sequências

Gabarito: ✅ CERTO. O comando range(n) gera uma sequência (objeto do tipo range) com os valores de 0 até n−1, pois o parâmetro stop é exclusivo — ou seja, o último valor gerado é sempre n-1. Essa é a semântica padrão da função embutida range() do Python, que pode ser usada diretamente em laços for ou convertida em lista com list(range(n)).

A função range() é um dos recursos mais fundamentais da linguagem Python, usada para gerar sequências numéricas de forma eficiente. Ela aceita até três argumentos: range(start, stop, step). Quando apenas um argumento é passado, como em range(n), o start assume o valor padrão 0 e o step assume 1. O argumento stop é sempre exclusivo: a sequência vai de start até stop - 1. Por isso, range(5) gera os valores 0, 1, 2, 3 e 4 — exatamente o que o enunciado afirma.

É importante notar que, nas versões modernas do Python (3.x), range() não retorna uma lista, mas sim um objeto iterável do tipo range. Esse objeto é eficiente em memória porque não armazena todos os valores de uma vez; ele os gera sob demanda durante a iteração. Para obter uma lista de fato, é necessário usar list(range(n)). O enunciado usa a expressão "lista (implícita)", o que é uma forma de reconhecer que, embora não seja uma lista materializada, o comportamento é equivalente para fins de iteração.

A pegadinha clássica dessa questão é confundir o comportamento do stop exclusivo com um stop inclusivo. Muitos candidatos, por analogia com outras linguagens ou com a contagem humana, acham que range(5) gera 1, 2, 3, 4, 5 — mas isso está errado. O Python segue a convenção de intervalos semiabertos [start, stop), que é amplamente usada em programação por facilitar o cálculo de tamanhos e a composição de intervalos. Por exemplo, len(range(5)) retorna 5, e os valores vão de 0 a 4.

Outro ponto que merece atenção é a diferença entre range() e outras formas de gerar sequências, como listas por compreensão ou a função enumerate(). Enquanto range() gera apenas números inteiros em progressão aritmética, listas por compreensão podem gerar qualquer tipo de elemento. Já enumerate() é usada para obter índices e valores simultaneamente durante a iteração sobre uma sequência existente. Essas distinções são frequentemente cobradas em provas de programação.

Na prática, range() é onipresente em laços for quando se precisa repetir um bloco um número determinado de vezes. Por exemplo, for i in range(3): executa o bloco três vezes, com i assumindo os valores 0, 1 e 2. Também é comum usar range(len(lista)) para iterar pelos índices de uma lista, embora em Python idiomático se prefira iterar diretamente sobre os elementos ou usar enumerate().

Guarde o critério decisivo: o stop é sempre exclusivo. É exatamente essa regra que torna a afirmação do enunciado correta — e é nela que a banca costuma armar a pegadinha em questões sobre range().

  1. 1range(n) gera 0 até n−1
  2. 2stop é exclusivo
  3. 3start=0, step=1 (padrão)
  4. 4Objeto iterável (não lista)
  5. 5list(range(n)) materializa
LEVEL · soulevel.com.br

Item — ✅ CERTO

A afirmação está correta. range(n) gera uma sequência de números inteiros de 0 até n−1, pois o argumento stop (n) não é incluído. Isso está de acordo com a documentação oficial do Python e com o comportamento padrão da função. O termo "lista (implícita)" é aceitável porque, embora o objeto retornado seja do tipo range e não uma lista materializada, ele se comporta como uma sequência iterável que pode ser convertida em lista com list(range(n)). Portanto, o item está CERTO.

Gabarito: ✅ CERTO

Link permanente: /questoes/qg026004