Pular para o conteúdo principal

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

ProgramaçãoPython
Código
qg349453
Banca
Quadrix
Órgão
CREFITO - 18ª Região (AC e RO)
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação
O comando, em Python, utilizado para criar uma lista de números de 1 a 10, inclusive, é
  1. Alist(range (1, 10))
  2. Blist(range (1, 11))
  3. Clist(range (0, 10))
  4. Drange(0, 10)
  5. Erange(1, 10)
Revelar gabarito e comentário

GabaritoB — list(range (1, 11))

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 criação de listas

Gabarito: letra B. Em Python, a função range(1, 11) gera a sequência de números inteiros de 1 a 10, pois o parâmetro stop é exclusivo — ou seja, a sequência vai até o valor imediatamente anterior ao limite final. Ao envolver com list(), obtemos exatamente [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], que é a lista pedida no enunciado.

A função range() é uma das funções embutidas mais utilizadas em Python, especialmente em laços for. Ela pode ser chamada de três formas distintas: range(stop), range(start, stop) e range(start, stop, step). Em todas as variações, o parâmetro stop nunca é incluído na sequência gerada — essa é a característica central que define o comportamento da função e o ponto exato que a banca explora nesta questão.

Vamos entender o funcionamento com um exemplo prático. Se escrevemos range(1, 11), o Python gera a sequência começando em 1 e adicionando 1 a cada passo, até chegar ao valor 10. O número 11, que é o stop, fica de fora. O resultado é a sequência 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Para transformar essa sequência em uma lista, usamos a função list(), que converte qualquer objeto iterável em uma lista. Assim, list(range(1, 11)) produz [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].

A confusão mais comum neste tema é esquecer que o limite superior é exclusivo. Muitos candidatos, ao verem range(1, 10), acreditam que a sequência inclui o 10, mas na verdade ela termina no 9. Essa é a pegadinha clássica: o número que aparece como segundo argumento não faz parte da sequência. Para incluir o número 10, é necessário usar 11 como limite superior.

Outra distinção importante é entre range() e list(). A função range() retorna um objeto do tipo range, que é um iterável que gera os números sob demanda — ele não armazena todos os valores na memória de uma vez. Já list() materializa esses valores em uma lista real, que ocupa espaço na memória e pode ser indexada, modificada e percorrida como qualquer outra lista. Nesta questão, o enunciado pede explicitamente uma "lista", então é obrigatório usar list() para converter o objeto range em uma lista de fato.

A banca explora exatamente essa fronteira entre o que a função range() gera e o que a função list() materializa. As alternativas que usam apenas range() sem list() estão incorretas porque não produzem uma lista, e as que usam range() com o limite superior errado estão incorretas porque não incluem o número 10. A única alternativa que acerta os dois pontos — usar list() e usar o limite superior correto — é a letra B.

  1. 1range(1, 11)
  2. 2stop é exclusivo
  3. 3list() converte
  4. 4[1..10]
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

list(range(1, 10)) gera a lista [1, 2, 3, 4, 5, 6, 7, 8, 9]. O erro está no limite superior: como o stop é exclusivo, o número 10 não é incluído. Para incluir o 10, seria necessário usar range(1, 11). Esta alternativa é a pegadinha mais comum, pois o candidato vê o número 10 no código e assume que ele faz parte da sequência.

Alternativa B — ✅ Correta ⟵ GABARITO

list(range(1, 11)) gera exatamente a sequência 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 e a converte em uma lista. O range(1, 11) começa em 1 e vai até 10 (o 11 é exclusivo), e o list() materializa esses valores em uma lista. Esta é a única alternativa que atende aos dois requisitos do enunciado: ser uma lista e conter os números de 1 a 10, inclusive.

Alternativa C — ❌ Incorreta

list(range(0, 10)) gera a lista [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]. Há dois erros: começa em 0 (o enunciado pede de 1 a 10) e termina em 9 (o 10 não é incluído). O limite superior 10 é exclusivo, então o último elemento é 9.

Alternativa D — ❌ Incorreta

range(0, 10) não é uma lista, é um objeto do tipo range. Além disso, mesmo que fosse convertido com list(), geraria [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], que não atende ao enunciado. O erro é duplo: falta o list() e o intervalo está errado.

Alternativa E — ❌ Incorreta

range(1, 10) também não é uma lista, é um objeto range. E, mesmo convertido, geraria [1, 2, 3, 4, 5, 6, 7, 8, 9], sem o número 10. O erro é duplo: falta o list() e o limite superior está errado.

A regra de ouro para questões com range(): o segundo argumento é sempre exclusivo. Para incluir o número N na sequência, use range(início, N+1). E, se o enunciado pedir uma lista, não esqueça de envolver com list().

NÃO CAIA NESSA!

A banca explora a confusão entre o limite superior exclusivo do range() e a inclusão do número 10. O candidato vê range(1, 10) e assume que o 10 está incluído, mas na verdade a sequência termina no 9. Para incluir o 10, é preciso usar range(1, 11). Essa é a armadilha clássica desta questão — e a alternativa A é exatamente a isca.

PEGA ESSA DICA!

Na hora da prova, teste mentalmente com um exemplo pequeno: range(1, 5) gera [1, 2, 3, 4] — o 5 fica de fora. Essa lógica se aplica a qualquer intervalo. Se o enunciado pedir "de 1 a 10, inclusive", o segundo argumento deve ser 11. E lembre-se: range() sozinho não é lista; use list() para converter.

Gabarito: letra B

Link permanente: /questoes/qg349453