Bucle for
Para la sintaxis del for, hay que tener en cuenta dos requisitos:
1. Al final de la línea tienen que poner el signo de dos puntos (:)
2. El bloque de código (una o más líneas que dependen del for) DEBE estar indentado
Con los ejemplos siguientes empezaremos a entenderlo:
Recorrido con rango
hola
hola
hola
Este ejemplo es un proceso repetitivo que se mueve en un rango 3. Qué significa eso? que lo que está adentro del for (se dice así cuando una o varias líneas del programa están indentadas, es decir, con una especie de sangría: NO comienzan justo debajo del for, sino algunas columnas más a la derecha).
Entonces, lo que depende del for (lo que está adentro), se ejecutará según lo que se defina allí, en este primer caso, la repetición del print("hola").
El range(3) está diciendo que dicha repetición se hará 3 veces.
0
1
2
3
4
En este segundo caso, habrá 5 iteraciones, que a diferencia del Ejemplo 1 no serán repeticiones estrictas, en cambio, el valor de la variable numero se irá incrementando en cada vuelta del for.
En ambos ejemplos, el range() recibe un solo valor (stop), y en estos casos, comienza desde 0 (cero) y el bucle da tantas vueltas como se especifica, es decir, llega hasta el valor menos 1.
En nuestro Ejemplo 2, como el rango es 5, el bucle se ejecuta 5 veces y, al comenzar desde 0 el último valor no es 5, sino 4.
Sintaxis (formato) más general:
valor_inicial = 5
valor_final = 9
print('El for comienza con la variable_de_recorrido tomando el valor_inicial')
for variable_de_recorrido in range(valor_inicial, valor_final):
# muestra 5 cuando ingresa y luego 6, 7 y 8
print(variable_de_recorrido)
print('cuando llega al valor final menos uno sale')
Cuando el valor inicial es cero (como en los ejemplos iniciales) no hace falta colocarlo.
Las instrucciones de control de flujo como if y for se pueden anidar, es decir, poner una dentro de otra.
Cualquier expresión cuyo resultado sea un entero se puede poner como valor inicial o valor final.
vi = 10 # valor inicial
vf = 20 # valor final
print('rango con expresiones:')
for i in range(vi-15, vf*2//3):
print(i, end=' | ')
Importante!
Prueben estos fragmento de código y experimenten modificando los valores!
Contadores y Acumuladores
En programación, tanto el contador como el acumulador son variables que actualizan su valor en cada iteración de un bucle, pero cumplen funciones distintas.
Contador
Un contador se utiliza para registrar cuántas veces ocurre un evento. Generalmente se incrementa en una cantidad constante (habitualmente 1).
Ejemplo: Contar números pares entre 1 y 10
# Inicialización
contador_pares = 0
for i in range(1, 11):
if i % 2 == 0:
contador_pares += 1 # Equivale a: contador_pares = contador_pares + 1
print(f"Se encontraron {contador_pares} números pares.")
Acumulador
Un acumulador se utiliza para reunir un total (una suma, un producto, etc.). A diferencia del contador, el valor que se le suma suele ser variable (el valor de la iteración actual u otra variable).
Ejemplo: Sumar todos los números del 1 al 5
# Inicialización
suma_total = 0
for i in range(1, 6):
suma_total += i # El valor sumado (i) cambia en cada vuelta
print(f"La suma total es: {suma_total}")
Nota
Siempre debés inicializar estas variables antes de que comience el bucle for. Si las declarás dentro del for, su valor se reseteará en cada iteración y perderás el seguimiento del cálculo.
Recorrido por elemento
Para seguir aprendiendo sobre el bucle for, seguimos en Listas