range() para repetir N veces
Cuando no recorres datos sino que repites un número de veces.
for i in range(5): da 0 1 2 3 4.
⚠️ Empieza en 0 y termina UNO ANTES del número que le
pases. range(1, 6) sí da 1 2 3 4 5.
Si tienes 3 ventas puedes escribir tres líneas. Si tienes 3.000, no. Un ciclo repite las mismas instrucciones sobre cada elemento de un conjunto, sin importar si son tres o tres mil.
Aquí es donde automatizar empieza a pagar de verdad.
ventas = [45000, 128000, 32000, 210000]
for venta in ventas:
print("Venta por:", venta)Venta por: 45000 Venta por: 128000 Venta por: 32000 Venta por: 210000
Se lee casi en español: "para cada venta en ventas, imprime...".
La palabra venta la eliges tú: es el nombre que le das al elemento
que se está procesando en cada vuelta. Y como en el if, lo que va
indentado pertenece al ciclo.
Es el uso más frecuente y el que vas a repetir toda tu vida: una variable que empieza en cero fuera del ciclo y va creciendo dentro.
ventas = [45000, 128000, 32000, 210000]
total = 0 # FUERA: se crea una sola vez
for venta in ventas:
total = total + venta # DENTRO: se ejecuta en cada vuelta
promedio = total / len(ventas)
print("Ventas: ", len(ventas))
print("Total: ", total)
print("Promedio:", promedio)Ventas: 4 Total: 415000 Promedio: 103750.0
Si pones total = 0 dentro del ciclo, el total
siempre da el valor de la última venta. Se reinicia en cada vuelta y
borra lo acumulado. No hay error ni aviso: el número sale mal y parece
correcto.
total = total + venta puede escribirse corto:
total += venta. Significa exactamente lo mismo.
Un if dentro de un for es la herramienta que
resuelve la mitad de las tareas de oficina: recorrer todo y separar lo que cumple
una regla.
META = 100000
ventas = [45000, 128000, 32000, 210000]
bajo_meta = 0
for venta in ventas:
if venta < META:
print("Por debajo de la meta:", venta)
bajo_meta += 1
print("Total por debajo:", bajo_meta)Por debajo de la meta: 45000 Por debajo de la meta: 32000 Total por debajo: 2
Cuando no recorres datos sino que repites un número de veces.
for i in range(5): da 0 1 2 3 4.
⚠️ Empieza en 0 y termina UNO ANTES del número que le
pases. range(1, 6) sí da 1 2 3 4 5.
Cuando además del valor necesitas el número de fila.
for i, venta in enumerate(ventas, 1):
El 1 hace que empiece a contar desde uno, que es como lo
lee una persona.
ventas = [45000, 128000, 32000]
for i, venta in enumerate(ventas, 1):
print("Fila", i, "->", venta)Fila 1 -> 45000 Fila 2 -> 128000 Fila 3 -> 32000
for recorre un conjunto conocido. while repite
mientras una condición sea verdadera, sin saber cuántas veces
será. Se usa mucho menos, pero hay un caso donde es el correcto: pedir un dato
hasta que sea válido.
cantidad = 0
while cantidad <= 0:
cantidad = int(input("Cantidad (mayor que cero): "))
print("Registradas", cantidad, "unidades")Cantidad (mayor que cero): 0 Cantidad (mayor que cero): -5 Cantidad (mayor que cero): 12 Registradas 12 unidades
El ciclo infinito. Si la condición de un
while nunca deja de cumplirse, el programa se queda dando vueltas
para siempre y hay que matarlo con Ctrl + C. Ocurre casi siempre
por lo mismo: olvidar la línea que hace avanzar el contador.
Antes de escribir un while, pregúntate: ¿qué línea de aquí
adentro va a hacer que esta condición deje de cumplirse algún día? Si no la
tienes, todavía no puedes escribirlo.
Cuenta mentalmente y haz clic para comprobarlo.
Con break: corta el ciclo del todo. Y
continue salta el resto de esa vuelta y pasa a la siguiente.
Úsalos con moderación: un ciclo con tres break repartidos se
vuelve difícil de seguir.
Sí, y sirve para recorrer tablas: filas y columnas. Ojo al volumen: un ciclo de 1.000 dentro de otro de 1.000 son un millón de vueltas.
Sí: sum(ventas). Y también max(),
min() y len(). Aquí se enseña el acumulador a
mano porque es el patrón que necesitas cuando la suma tiene condiciones
-sumar solo lo que pasa la meta-, donde sum() ya no
alcanza.
¿Qué pasa si total = 0 queda DENTRO del for?
¿Qué imprime for i in range(4)?
¿Cuál es la causa habitual de un ciclo infinito?
Has recorrido listas sin saber realmente qué son. En la siguiente lección vas a ver listas y diccionarios a fondo: las dos estructuras con las que vas a organizar datos el 90% del tiempo.
Siguiente: Listas y diccionarios
Continuar ← Condicionales: que el programa decida