range() en Python: guía completa con ejemplos

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
Logo do Python com expressão pensativa e o texto range(), representando a função range no Python

range() en Python crea una secuencia inmutable de números enteros. Su uso más conocido aparece en los bucles for, pero también sirve para repetir acciones, generar índices, contar hacia atrás, construir intervalos y trabajar con secuencias numéricas sin almacenar todos los valores en memoria.

La función parece sencilla, aunque muchos errores de principiantes surgen por olvidar que el límite final no se incluye o por usar un paso con una dirección incompatible. En esta guía aprenderás las tres formas de range(), secuencias ascendentes y descendentes, indexación, pertenencia, comprensión de listas y situaciones donde enumerate() expresa mejor la intención.

Sintaxis de range()

La documentación oficial de Python sobre range define tres formas:

range(stop)
range(start, stop)
range(start, stop, step)

Los argumentos deben ser enteros o valores compatibles con enteros. La secuencia incluye start, pero excluye stop. Esta convención también aparece en el slicing de Python.

Usar range(stop)

Con un argumento, la secuencia comienza en cero:

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

El resultado es 0, 1, 2, 3 y 4. El valor 5 no aparece. Esta forma resulta útil para repetir una operación una cantidad fija de veces:

for _ in range(3):
    print("Procesando...")

El guion bajo comunica que el valor de la variable no se utiliza.

Usar range(start, stop)

for numero in range(3, 8):
    print(numero)

La salida contiene 3, 4, 5, 6 y 7. Para incluir 8, el límite debe ser 9:

for numero in range(3, 9):
    print(numero)

Una regla práctica es pensar: empieza en start y continúa mientras el siguiente valor permanezca antes de stop.

Usar el paso

for numero in range(0, 11, 2):
    print(numero)

El resultado son los números pares desde 0 hasta 10. El paso no puede ser cero:

range(1, 10, 0)  # ValueError

Un paso cero impediría que la secuencia avanzara, por lo que Python lo rechaza.

Contar hacia atrás

Utiliza un paso negativo:

for numero in range(10, 0, -1):
    print(numero)

print("¡Comienza!")

La secuencia termina en 1 porque 0 es el límite excluido. El inicio debe ser mayor que el final cuando el paso es negativo. Esta expresión genera una secuencia vacía:

list(range(1, 10, -1))  # []

El paso negativo se aleja del límite 10. Python no invierte automáticamente una configuración incoherente.

Convertir range en lista

numeros = range(1, 6)
print(numeros)          # range(1, 6)
print(list(numeros))    # [1, 2, 3, 4, 5]

No conviertas siempre. Un objeto range almacena principalmente inicio, final y paso. Una lista guarda cada entero. Para secuencias grandes, esta diferencia afecta de forma importante al consumo de memoria.

Por qué range es eficiente

enorme = range(1_000_000_000)

Esta línea no crea mil millones de objetos enteros. Los valores se calculan cuando se necesitan. Por eso puedes recorrer un intervalo grande sin reservar memoria para toda la secuencia. La sección del tutorial oficial sobre range() explica este comportamiento.

Longitud, pertenencia e índices

valores = range(10, 31, 5)

print(len(valores))   # 5
print(20 in valores)  # True
print(21 in valores)  # False
print(valores[0])     # 10
print(valores[-1])    # 30
print(valores[1:4])   # range(15, 30, 5)

Los objetos range se comportan como secuencias: admiten longitud, pertenencia, índices y slicing. La comprobación de pertenencia aprovecha la estructura aritmética y no necesita recorrer todos los elementos.

Repetir intentos

for intento in range(1, 4):
    print(f"Intento {intento} de 3")

Las f-strings permiten insertar valores con claridad. Consulta la guía de depuración con f-strings para formatos y representaciones.

Crear una tabla de multiplicar

numero = 7

for multiplicador in range(1, 11):
    resultado = numero * multiplicador
    print(f"{numero} x {multiplicador} = {resultado}")

Sumar un intervalo

total = sum(range(1, 101))
print(total)

El límite se establece en 101 porque la intención es incluir 100.

Crear coordenadas con bucles anidados

for fila in range(3):
    for columna in range(4):
        print(fila, columna)

Los bucles anidados son útiles en cuadrículas, aunque el número de iteraciones se multiplica. La guía de bucles en Python explica for, while, break y continue.

range(len()) o enumerate()

lenguajes = ["Python", "Java", "JavaScript"]

for indice in range(len(lenguajes)):
    print(indice, lenguajes[indice])

El código funciona, pero enumerate() suele ser más claro:

for indice, lenguaje in enumerate(lenguajes):
    print(indice, lenguaje)

Usa range(len(...)) cuando necesitas operaciones con posiciones, como comparar un elemento con el anterior. Usa enumerate() cuando solo necesitas el valor y su índice. Consulta la guía de enumerate() en Python.

Comparar elementos consecutivos

temperaturas = [18, 21, 20, 24, 27]

for indice in range(1, len(temperaturas)):
    anterior = temperaturas[indice - 1]
    actual = temperaturas[indice]
    cambio = actual - anterior
    print(f"Día {indice}: {cambio:+d}")

Comenzar en 1 evita que indice - 1 apunte accidentalmente al último valor mediante índices negativos.

Crear un range desde la entrada del usuario

try:
    inicio = int(input("Inicio: "))
    final = int(input("Final: "))
    paso = int(input("Paso: "))

    if paso == 0:
        raise ValueError("El paso no puede ser cero")

    for numero in range(inicio, final, paso):
        print(numero)
except ValueError as error:
    print(f"Valor inválido: {error}")

La guía de manejo de excepciones explica cómo validar conversiones sin ocultar errores inesperados.

range y comprensiones

cuadrados = [numero ** 2 for numero in range(1, 11)]

multiplos = [
    numero
    for numero in range(1, 31)
    if numero % 3 == 0
]

Las comprensiones son adecuadas para transformaciones breves. La guía de list comprehensions muestra alternativas y reglas de legibilidad.

Errores frecuentes

  • Esperar que stop se incluya: range(1, 5) termina en 4.
  • Usar decimales: range genera enteros y no acepta un paso como 0.5.
  • Olvidar la dirección: range(10, 0) está vacío porque el paso predeterminado es positivo.
  • Crear una lista enorme: recorre el range directamente.
  • Usar índices sin necesidad: recorre los valores cuando la posición no importa.
  • Usar paso cero: produce ValueError inmediatamente.

Mini proyecto: cuenta regresiva

import time

segundos = 5

for restante in range(segundos, 0, -1):
    print(restante)
    time.sleep(1)

print("¡Tiempo terminado!")

Este ejemplo combina un range descendente con una espera fija. En interfaces gráficas o aplicaciones asíncronas, evita bloquear el hilo principal, pero el patrón muestra claramente inicio, final y paso.

Conclusión

range() representa una secuencia eficiente definida por inicio, final y paso. Recuerda que el límite final se excluye, que el paso determina la dirección y que cero no es válido. Recorre el objeto directamente para ahorrar memoria, utiliza enumerate() cuando necesites valores e índices y conviértelo en lista solamente cuando otra operación requiera almacenar todos los números.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Ilustração que representa um algoritmo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Qué es un algoritmo en programación: guía práctica

    Aprende qué es un algoritmo en programación con ejemplos cotidianos, pseudocódigo, diagramas, Python, complejidad, pruebas y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    texto 'operadores em Python' com os simbolos de operadores e o logo do Python à direita
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operadores en Python: tipos y ejemplos prácticos

    Aprende los operadores en Python: aritméticos, comparación, asignación, lógicos, pertenencia, identidad, bits, sets y precedencia.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    texto 'None' centralizado com um fundo com as cores do Pyton
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    None en Python: significado y buenas prácticas

    Aprende qué significa None en Python, cómo compararlo, usar parámetros opcionales, distinguir valores ausentes y evitar errores comunes.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Ilustração representando conjuntos (sets) em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Sets en Python: guía completa para principiantes

    Aprende sets en Python: valores únicos, pertenencia, unión, intersección, diferencia, subconjuntos, frozenset, comprensiones y ejemplos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Programador resolvendo problemas com Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Lógica de programación con Python para principiantes

    Aprende lógica de programación con Python: algoritmos, pseudocódigo, variables, condiciones, bucles, funciones, validación y un proyecto práctico.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Código Python com valores Boolean True e False em tela de computador
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Booleanos en Python: True, False y lógica

    Aprende booleanos en Python con True, False, comparaciones, operadores lógicos, valores truthy y falsy, cortocircuito y validación.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026