Estructuras Repetitivas
5. Ciclo "for"
5.1. Función range(start, stop, step)
La función "range( )" devuelve una secuencia de números enteros a partir de un inicio (cero por defecto) hasta un valor final especificado, en pasos enteros (uno por defecto).
La sintaxis de la función range( ) es la siguiente:
range(inicio, fin,paso)
Algunas observaciones a tener en cuenta de la función range( ) son:
- Cada argumento (inicio, fin y paso) van separados por comas.
- Solo es necesario especificar un argumento (fin), el resto la función toma los valores por defecto (inicio = 0 y paso = 1).
- Se puede especificar dos argumentos, en ese caso la función considera que los argumentos que se están ingresando son el inicio y el fin, por lo tanto toma el valor de paso por defecto.
- En caso de no recordar el orden de los argumento se puede utilizar la regla mnemotécnica INFINITO INCREMENTO: INicio, FINito, INCREMENTO.
- El último valor de la secuencia generada es igual al valor de "fin" menos el "paso".
A continuación veremos ejemplos del uso de la función range( ).
Función range(inicio, fin, paso) con tres argumentos
En el siguiente ejemplo se observa el uso de la función con tres argumentos, en conjunto con la sentencia "for"
Ejemplo:
Mostrar los números del 10 al 0 de dos en dos (contando hacia atrás)
for i in range(10, -1, -2):
print("Valor actual de i:", i)
¿Qué hace este range(10, -1, -2)
?
-
10 → es el valor inicial.
-
-1 → es el valor final no incluido (por eso se detiene en 0).
-
-2 → es el paso, o sea, cuánto se va restando en cada iteración.
Entonces, los valores o la salida de este código es:
10, 8, 6, 4, 2, 0
- ¿Escriba cual sería la salida si se tiene range(5, 25, 5)?.
# Definimos las constantesLa salida esperada sería:
INICIO = 1
FIN = 10
PASO = 2
# Bucle for usando range con constantes
for numero in range(INICIO, FIN, PASO):
print("Número:", numero)
Número: 3
Número: 5
Número: 7
Número: 9
Explicación:
-
INICIO = 1
: empieza desde 1 -
FIN = 10
: se detiene antes de llegar a 10 -
PASO = 2
: va sumando de a 2
Función range(inicio, fin) con dos argumentos
En el siguiente ejemplo se observa el uso de la función con dos argumentos, en conjunto con la sentencia "for"
Ejemplo:
# Definimos las constantes
INICIO = 5
FIN = 10
# Bucle for con range de dos argumentos
for numero in range(INICIO, FIN):
print("Número:", numero)
Tambien podría ser:
# Bucle for con range de dos argumentos
for numero in range(5,10):
print("Número:", numero)
La salida de este código es:
Número: 5
Número: 6
Número: 7
Número: 8
Número: 9
Explicación:
-
range(INICIO, FIN)
genera una secuencia desdeINICIO
hastaFIN - 1
. -
En este caso:
range(5, 10)
genera los números5, 6, 7, 8, 9
.
Podemos realizar las siguientes observaciones: Al especificar 2 argumentos tomó por defecto solamente el valor del paso
- ¿Qué se mostraría por pantalla si range(2, 10)?.
- ¿Y si range(10, 1)?.
- ¿Cómo sería la salida del código si el valor de inicio es mayor que el de fin?, por ejemplo: inicio = 10 y fin = 2.
- ¿Cuántas veces se ejecuta el ciclo "for" en este último caso?. Tiene sentido la salida?.
Función range(fin) con solo un argumento
range
con un solo argumento, Python asume que:
-
El inicio es 0
-
El valor que indicás es el fin (no inclusivo)
-
El paso es 1 por defecto
# Definimos la constante como límite superior
LIMITE = 4
# Bucle for con range de un solo argumento
for numero in range(LIMITE):
print("Número:", numero)
La salida de este código es:
Número: 0
Número: 1
Número: 2
Número: 3
Explicación:
-
range(4)
genera la secuencia0, 1, 2, 3
(no incluye el 4). -
Muy útil cuando simplemente querés repetir algo
n
veces.
Función range( ) con paso negativo o decremento
Con la función "range( )" también se puede generar una secuencia de números cuyo valor se vayan decrementando. Para ello el "inicio" debe ser mayor que el "fin" y se debe especificar el paso negativo como se muestra a continuación.
Ejemplo:
un bucle for
con range
usando un paso negativo, lo cual permite recorrer una secuencia de forma descendente:
# Definimos las constantes
INICIO = 10
FIN = 0
PASO = -2
# Bucle for con paso negativo
for numero in range(INICIO, FIN, PASO):
print("Número:", numero)
siendo la salida del programa la siguiente:
Número: 10
Número: 8
Número: 6
Número: 4
Número: 2
Explicación:
-
Comienza en
10
-
Termina antes de llegar a
0
-
Va restando
2
en cada iteración