Los rangos en Python son estructuras de datos que representan una secuencia de números enteros. Al igual que las rebanadas de listas, los rangos se definen especificando un inicio, un final y los pasos que se van a utilizar para generar la secuencia. Esta inmutabilidad nos brinda una ventaja significativa en términos de eficiencia de memoria, dado que conocemos la cantidad exacta de memoria necesaria para almacenar el rango de antemano.
¿Cómo se define un rango?
Crear un rango en Python es sencillo gracias a la función range(). Este método requiere tres parámetros principales:
Inicio: el número donde comienza la secuencia.
Final: el número donde termina la secuencia (no inclusivo).
Pasos: el incremento entre cada número en la secuencia.
Por ejemplo:
mi_rango =range(1,5)
Este rango irá del 1 al 4, ya que el final (5) no se incluye. Dentro de un ciclo for, puedes recorrer este rango para ver sus valores:
for numero in mi_rango:print(numero)
Imprimirá:
1234
¿Cómo se manipulan y comparan los rangos?
Los rangos en Python son útiles y eficientes para varias operaciones. Pongamos otro ejemplo práctico, donde se crean dos rangos diferentes:
rango_a =range(0,7,2)rango_b =range(0,8,2)
En un principio, parecería que estos rangos son diferentes. Sin embargo, si imprimimos los valores de cada uno obtendremos la misma secuencia: 0, 2, 4, 6. Esto se debe a que, aunque los límites superiores son distintos, los pasos de 2 hacen que ambos generen la misma serie de valores.
Podemos verificar la igualdad de los valores (no de los objetos) con:
print(rango_a == rango_b)# Esto imprime True
No obstante, si deseamos comprobar si son el mismo objeto en memoria, utilizamos el operador is:
print(rango_a is rango_b)# Esto imprime False, ya que son objetos distintos en memoria
¿Cómo generar una secuencia específica como números pares?
Generar secuencias de números específicos como pares es muy sencillo. Por ejemplo, todos los números pares del 0 al 100:
for numero inrange(0,101,2):print(numero)
Este fragmento de código recorrerá todos los números pares de 0 a 100, saltando de dos en dos.
Reto práctico
Te dejamos un desafío: genera un rango con todos los números impares del 1 al 99 e intenta hacerlo tan eficiente como sea posible. Comparte tu solución en los comentarios. Además, si tienes preguntas, no dudes en utilizar el sistema de comentarios para obtener ayuda. Recuerda que la práctica constante y la interacción con la comunidad son claves en tu camino de aprendizaje. ¡Ánimo y sigue explorando las maravillas de Python!
Así como lo planteas solo arroja valores pares o divisibles entre 2. Yo lo hice de la siguiente manera:
for (i) in range (0, 100, 2):
print(i+1)
A la impresión de los pares le agregue el número uno lo cual a todo par le suma uno y me arroja todos los impares
Como lo tiene planteado está bien, le arroja todos los números impares. En caso de que comenzara el rango desde 0 si sería incorrecto. De hecho así se ahorra sumarle 1 a cada número par.
Buscando imprimir los nones de 1 a 99 en pocas líneas, me encontré con dos modificadores de la función print en Python 3.x, que son: \t para imprimir un tabulador y end="" para evitar el salto de línea
hubiera sido mas facil usar o "llamar" a tu primera funcion pares() dentro de tu segunda funcion impares() sumando +1.
sino de que sirve que lo hagas en funciones si no lo reutilizas xD
Saludos a todos, aquí comparto mi código. Gracias por toda esta información que es de muchísima utilidad.
My_range = range(0,100,2)
for i in My_range:
print(i+1)
Hola a todos!
Cree este programa que le pide al usuario un numero dentro del conjunto de los enteros (es decir, que incluye a los números negativos) y te muestra los números pares e impares dependiendo del numero que haya escogido el usuario sin importar si es un numero negativo o positivo.
Espero les sirva de ayuda
def pares(numero):""" Imprime todos los numeros pares del 0 hasta n o de n hasta 0
int n
returns n
"""
if numero <0 and numero %2!=0:for i inrange(numero+1,0,2):print(i) elif numero <0 and numero %2==0:for i inrange(numero,0,2):print(i)else:for i inrange(0, numero,2):print(i)def impares(numero):"""imprime todo los numeros impares desde 1 hasta n o desde n hasta 1
int n
returns n
"""
if numero <0 and numero %2==0:for i inrange(numero+1,1,2):print(i) elif numero <0 and numero %2!=0:for i inrange(numero,1,2):print(i)else:for i inrange(1, numero,2):print(i)if __name__ =='__main__': num =int(input('Escribe un entero: '))impares(num)print('Numeros Impares\n')pares(num)print('Numeros Pares')
""" # range (comienzo, fin, pasos) """my_range =range(1,5)print(type(my_range))""" # ¿Que rango generamos?# Vamos a colocarlo directamente en un for loop, para observar los valores que tiene """
for i inmy_range:print(i)""" #Al ejecutar el codigo vamos a observar que comienza de 1 y termina en 4, no se encuentra el valor 5 (final). """my_range2 =range(0,7,2)""" #de 0 a 7 y que se vaya de 2 en 2 """my_other_range =range(0,8,2)print(my_range2 == my_other_range)for r2 inmy_range2:print(r2)for otr inmy_other_range:print(otr)print(id(my_range2))print(id(my_other_range))print(my_range2 is my_other_range)""" #Operador de igualdad de objetos "is" """""" #Los rangos nos generan una secuencia de enteros """for par inrange(0,101,2):print(par)for nones inrange(1,100):if nones%2!=0:print(nones)""" #uso % (modulo), ya que lo que hace es mostrarme todos los números que al momento de dividirlos, me sobre 1, es decir sean impares. De tal manera que nones % 2 ==0 representa a los números pares, ya que al momento de dividirlo entre 2 no me sobra ningún numero. """```
Que tal Bryan!
*Las 'rebanadas' te retornan un pedazo del iterable, una rebanada vaya la redundancia.
*Los rangos una sequencia de numeros acorde a los parametros especificados, ellos no te retornan un pedazo de nada.
Ejemplos:
rebanadas
nombre ='bryan'print(nombre[1:4]) #imprimira 'rya'