Programação e inteligência artificial

Função Range Python: Guia Prático com Exemplos

A função range Python é um dos recursos mais utilizados por quem está aprendendo ou desenvolvendo com a linguagem. Ela permite gerar uma sequência numérica de maneira eficiente, especialmente em estruturas de repetição, como o laço for. Embora sua sintaxe pareça simples, compreender os parâmetros start, stop e step evita erros frequentes de lógica, melhora a legibilidade do código e abre espaço para soluções mais elegantes. Neste guia, você entenderá como usar range(), verá exemplos práticos e aprenderá quando essa função é a escolha mais apropriada.

Como funciona a função range Python

Em Python, range() cria um objeto que representa uma progressão de números inteiros. Esse objeto não produz, obrigatoriamente, todos os valores de uma vez na memória. Em vez disso, ele descreve a sequência e fornece cada número conforme necessário. Por essa razão, a função é uma alternativa eficiente para percorrer intervalos extensos em laços de repetição.

A assinatura geral é range(start, stop, step). O argumento start define o primeiro valor da sequência, stop estabelece o limite final exclusivo e step determina a variação entre um elemento e outro. Os dois últimos elementos da expressão merecem atenção: o valor de parada não é incluído, enquanto o passo pode ser positivo ou negativo, desde que não seja zero.

Na forma mais curta, range(5), o Python considera implicitamente que o início é zero e que o passo é um. Assim, a sequência gerada corresponde aos números 0, 1, 2, 3 e 4. Esse comportamento é muito útil para repetir uma ação um número conhecido de vezes. Por exemplo:

for indice in range(5):
    print(indice)

O código imprime cinco linhas, começando em zero. Esse padrão é coerente com a indexação de listas e outras coleções em Python, que também começa no índice zero. A documentação oficial da linguagem explica que range representa uma sequência imutável de números e pode ser consultada no manual oficial de tipos embutidos do Python.

Quando é necessário iniciar em outro número, informe dois argumentos. Em range(1, 6), a sequência é 1, 2, 3, 4 e 5. Esse formato é comum ao mostrar contagens para usuários, pois normalmente uma contagem humana começa em um. Já range(2, 11, 2) gera os números pares de 2 até 10, avançando de dois em dois.

É importante diferenciar o objeto retornado de uma lista. Em versões modernas da linguagem, range(10) não exibe diretamente uma lista com dez números; ele retorna um objeto range. Caso seja realmente necessário visualizar ou manipular todos os valores como lista, pode-se usar list(range(10)). Ainda assim, a conversão deve ser feita somente quando fizer sentido, pois elimina parte da eficiência de memória oferecida pelo objeto original.

Parâmetros e exemplos práticos de intervalos

O parâmetro start é opcional. Se ele for omitido, a sequência começa em zero. O stop é obrigatório e define onde a progressão deve terminar, sem incluir esse número. O parâmetro step também é opcional e, quando não informado, equivale a um. Conhecer essas regras é essencial para construir um intervalo de números sem falhas de limite.

Considere um sistema que precisa validar as idades de 18 a 65 anos. A instrução range(18, 66) é correta porque 66 é o limite exclusivo. Usar range(18, 65) deixaria de fora a idade 65, um erro conhecido como falha de fronteira. Em algoritmos, esse tipo de detalhe pode causar resultados incompletos, principalmente ao percorrer índices de coleções ou processar dados em lotes.

O terceiro argumento permite selecionar valores com espaçamento específico. Para imprimir múltiplos de cinco entre 0 e 50, use range(0, 51, 5). Para efetuar uma contagem regressiva, o passo deve ser negativo: range(10, 0, -1) produz 10 até 1. Observe que o limite continua exclusivo. Caso a intenção seja também imprimir zero, a forma adequada será range(10, -1, -1).

Veja um exemplo de aplicação em uma rotina de processamento de registros:

nomes = ["Ana", "Bruno", "Carla"]
for posicao in range(len(nomes)):
    print(posicao, nomes[posicao])

O código funciona, mas existe uma observação importante: quando o índice não é necessário, é mais claro percorrer a lista diretamente com for nome in nomes. Quando índice e valor são necessários, enumerate(nomes) costuma ser mais expressivo que combinar range() e len(). Portanto, saber usar a função range Python também significa reconhecer quando outra ferramenta torna o código mais legível.

Em cenários didáticos, range() aparece frequentemente em exercícios de tabuada, contagem de pares, soma acumulada, criação de matrizes e simulações. Na prática profissional, é útil em rotinas de paginação, tentativas controladas, processamento por blocos e geração de identificadores temporários. Seu uso deve transmitir claramente a intenção do algoritmo, e não apenas repetir uma ação por hábito.

Boas práticas ao usar range em laços

  • Revise o limite final: lembre-se de que stop não faz parte da sequência. Para incluir um valor máximo, normalmente será necessário adicionar um ao limite em progressões crescentes.
  • Escolha um passo coerente: utilize step para percorrer pares, ímpares, múltiplos ou posições alternadas sem criar condições desnecessárias dentro do laço.
  • Evite passo zero: a expressão range(1, 10, 0) provoca ValueError, pois uma sequência não pode avançar sem variação.
  • Use passo negativo em regressões: em uma contagem decrescente, o valor inicial deve ser maior que o limite e o passo precisa ser negativo.
  • Não converta para lista sem necessidade: iterar diretamente sobre range() é mais econômico do que criar uma lista apenas para alimentar um for.
  • Prefira enumerate quando houver coleção: para obter índice e item de uma lista, enumerate() comunica melhor o objetivo do código.
  • Teste casos de fronteira: experimente sequências vazias, limites iguais e números negativos antes de levar uma rotina para produção.

Comparação das formas de range()

SintaxeSequência produzidaUso recomendado
range(5)0, 1, 2, 3, 4Repetir uma operação cinco vezes.
range(1, 6)1, 2, 3, 4, 5Contagens iniciadas em um e limites inclusivos aparentes.
range(0, 11, 2)0, 2, 4, 6, 8, 10Percorrer números pares ou intervalos fixos.
range(1, 10, 2)1, 3, 5, 7, 9Gerar números ímpares.
range(10, 0, -1)10, 9, 8, 7, 6, 5, 4, 3, 2, 1Executar contagem regressiva.
range(5, 5)Sequência vaziaRepresentar um intervalo sem elementos ou tratar limites dinâmicos.
funcao range python sequencia numerica

Uma característica relevante é que range aceita verificações de pertencimento eficientes, como 7 in range(0, 10). A expressão retorna verdadeiro sem exigir, necessariamente, a criação de uma lista. Além disso, o objeto oferece recursos como len(), indexação e fatiamento em diversos contextos. Para aprofundar conceitos de laços e controle de fluxo, vale consultar o tutorial oficial de estruturas de controle do Python.

Dúvidas comuns sobre a função range Python

O último número é incluído na função range Python?

Não. O argumento stop é sempre exclusivo. Por exemplo, range(1, 5) gera 1, 2, 3 e 4. Para incluir o número 5 em uma sequência crescente de passo um, utilize range(1, 6).

É possível usar números decimais em range()?

Não diretamente. A função range() trabalha com números inteiros. Para criar sequências decimais, pode-se usar um laço com atualização manual, bibliotecas especializadas ou ferramentas como numpy.arange(), avaliando com cuidado possíveis imprecisões de ponto flutuante.

Qual é a diferença entre range e list(range())?

range() retorna um objeto que representa a progressão numérica e é adequado para iteração eficiente. Já list(range()) materializa todos os valores em uma lista. A lista é útil quando os elementos precisam ser alterados ou reutilizados como coleção concreta, mas consome mais memória.

Por que range(10, 0) não imprime nada?

Porque o passo padrão é positivo, igual a um. Como o início é maior que o fim, não há como avançar nessa direção. Para descer de 10 até 1, escreva range(10, 0, -1).

Quando devo evitar range em um laço for?

Evite-o quando a intenção for apenas percorrer itens de uma coleção. Em for produto in produtos, o código é mais simples do que usar índices. Se precisar do índice e do valor, prefira enumerate(produtos). Use range() principalmente para gerar sequência numérica ou controlar repetições.

Conclusão: domínio de sequências em Python

Dominar a função range Python é fundamental para escrever laços previsíveis, eficientes e fáceis de manter. A regra principal é simples: o início é opcional, o final não entra na sequência e o passo controla a progressão. A partir disso, torna-se possível gerar sequências numéricas crescentes, decrescentes ou alternadas para resolver diversas tarefas de programação. Ao aplicar boas práticas, revisar limites e escolher entre range, iteração direta e enumerate conforme o contexto, você produzirá códigos mais claros e confiáveis.

Referências e materiais para consulta

Isenção de responsabilidade

Este conteúdo tem finalidade educacional e informativa. Os exemplos apresentados sobre a função range Python foram preparados para demonstrar conceitos gerais da linguagem e podem exigir adaptações conforme a versão do Python, as bibliotecas utilizadas e os requisitos de cada projeto. Antes de implementar rotinas em ambientes de produção, realize testes, valide regras de negócio e consulte a documentação oficial atualizada.

Compartilhar este post

Stéfano Barcellos

Pesquisador, empresário e escritor focado em educação, orientação sobre negócios. Escreve sobre diversos assuntos com abordagem prática e acessível para o público brasileiro.

Posts relacionados