Bucles desde cero: repetir con for, controlar vueltas con range, contar, acumular, filtrar, numerar con enumerate, repetir con while y controlar el recorrido con continue y break. 10 pasos con práctica guiada y un mini proyecto.
Cómo estudiar esta clase
Elegí un kernel de Python 3 (Jupyter o VS Code). Antes de ejecutar cada ejemplo, predecí el resultado; después ejecutá con Shift + Enter y comparalo con la salida esperada. No se necesitan librerías, internet ni archivos externos. Practicá en el notebook 04_Bucles_Desde_Cero.
Materiales de la clase
Notebook 04_Bucles_Desde_Cero: 10 pasos, 10 prácticas y un mini proyecto. Requisitos: variables, listas, print y condicionales básicos.
1. Repetir con for
Un bucle repite instrucciones. for toma un elemento de la lista en cada vuelta. La variable nombre recibe ese elemento; podés elegir otro nombre. Los dos puntos abren el bloque y los cuatro espacios indican qué se repite. El último print queda afuera y se ejecuta una sola vez.
for nombre in ["Ana", "Luis", "Sol"]:
print("Hola", nombre)
print("Fin")
Salida esperada:
Hola Ana
Hola Luis
Hola Sol
Fin
Tu práctica 01
Recorré ["Python", "Datos", "IA"] y mostrá cada palabra en una línea.
Resultado esperado:
Python
Datos
IA
Explicá con tus palabras: ¿Qué cambiaría si el print de Fin tuviera sangría?
2. Controlar repeticiones con range
range(4) produce 0, 1, 2 y 3. range(inicio, fin, paso) incluye el inicio y excluye el fin. El paso puede ser negativo, pero no cero. Elegí límites compatibles con la dirección del paso.
for numero in range(1, 6):
print(numero)
Salida esperada:
1
2
3
4
5
Tu práctica 02
Mostrá los números pares de 2 a 10 incluidos usando range.
Resultado esperado:
2
4
6
8
10
Explicá con tus palabras: ¿Qué produce range(5, 0, -1)? ¿Por qué range(5, 0) no recorre nada?
3. Contar elementos que cumplen una condición
Inicializá el contador antes del bucle. += 1 suma uno al valor anterior. El if se evalúa para cada dato. Aquí contamos cuántos importes alcanzan 100; no sumamos dinero.
cantidad = 0
for importe in [80, 120, 100, 50]:
if importe >= 100:
cantidad += 1
print(cantidad)
Salida esperada:
2
Tu práctica 03
Contá las notas aprobadas (nota >= 60) en [40, 60, 85, 59, 100].
Resultado esperado:
3
Explicá con tus palabras: ¿Por qué poner cantidad = 0 dentro del for cambia el resultado?
4. Acumular cantidades y seguir el recorrido
Un acumulador suma los valores, no la cantidad de elementos. La tabla impresa permite seguir el estado: total empieza en cero; después de cada vuelta vale 10, 30 y 35. El resultado final se muestra fuera del bucle.
total = 0
for importe in [10, 20, 5]:
total += importe
print(importe, total)
print("Total:", total)
Salida esperada:
10 10
20 30
5 35
Total: 35
Tu práctica 04
Sumá [15000, 20000, 5000] con un bucle e imprimí solamente el total.
Resultado esperado:
40000
Explicá con tus palabras: ¿Qué valor conserva total si la lista está vacía?
5. Construir una lista de resultados
append agrega un elemento al final de una lista. Creamos una lista nueva antes de recorrer y guardamos únicamente los datos que cumplen el filtro. No modificamos la lista original durante el recorrido.
altas = []
for temperatura in [18, 32, 25, 35]:
if temperatura >= 30:
altas.append(temperatura)
print(altas)
Salida esperada:
[32, 35]
Tu práctica 05
Guardá en una lista los números positivos de [-2, 0, 4, -1, 7]. Cero no cuenta como positivo.
Resultado esperado:
[4, 7]
Explicá con tus palabras: ¿Qué obtenés si ningún elemento cumple la condición?
6. Mostrar posición y dato con enumerate
enumerate entrega una posición y un dato por vuelta. start=1 permite numerar para una persona; no cambia los índices reales de la lista, que empiezan en cero.
for posicion, nombre in enumerate(["Ana", "Luis"], start=1):
print(posicion, nombre)
Salida esperada:
1 Ana
2 Luis
Tu práctica 06
Numerá ["Cargar", "Revisar", "Analizar"] desde 1.
Resultado esperado:
1 Cargar
2 Revisar
3 Analizar
Explicá con tus palabras: ¿Con qué posición empieza enumerate si no indicás start?
7. Repetir con while
while comprueba la condición antes de cada vuelta. Debe existir un cambio que permita terminar. Acá saldo aumenta 20 hasta alcanzar o superar 50. Si empieza en 50, hay cero vueltas. Usá for para recorrer datos y while para repetir según una condición.
saldo = 10
while saldo < 50:
saldo += 20
print(saldo)
print("Meta alcanzada")
Salida esperada:
30
50
Meta alcanzada
Tu práctica 07
Empezá en 3 y hacé una cuenta regresiva hasta 1 con while. Después imprimí Despegue.
Resultado esperado:
3
2
1
Despegue
Explicá con tus palabras: ¿Por qué quitar la actualización produce un bucle infinito? Si ocurre, interrumpí el kernel desde Jupyter.
8. Saltar una vuelta con continue
continue salta el resto de la vuelta actual. El bucle sigue con el siguiente elemento. Aquí los negativos representan registros inválidos. En un while, revisá que continue no salte la actualización necesaria para terminar.
for valor in [10, -1, 20]:
if valor < 0:
continue
print(valor)
Salida esperada:
10
20
Tu práctica 08
Recorré [0, 5, 0, 8] y usá continue para omitir los ceros.
Resultado esperado:
5
8
Explicá con tus palabras: ¿Se recorren los elementos que vienen después del valor omitido?
9. Detener una búsqueda con break
break termina el bucle más cercano. Guardamos None antes de buscar para representar que todavía no encontramos nada. Al encontrar el primer valor mayor que 100 dejamos de recorrer.
encontrado = None
for importe in [40, 120, 200]:
if importe > 100:
encontrado = importe
break
print(encontrado)
Salida esperada:
120
Tu práctica 09
Buscá el primer número negativo en [4, 2, -3, -8]. Guardá None si no existe.
Resultado esperado:
-3
Explicá con tus palabras: ¿Por qué usar break sería incorrecto para reunir TODOS los negativos?
10. Mini proyecto: revisar importes
Integramos recorrido, filtro, contador, acumulador y lista. Los importes negativos son inválidos y se omiten; cero sí es válido. El promedio se calcula solo si hay registros válidos. Usamos None para indicar ausencia de promedio.
importes = [100, -20, 0, 200, 50]
cantidad = 0
total = 0
altos = []
for importe in importes:
if importe < 0:
continue
cantidad += 1
total += importe
if importe >= 100:
altos.append(importe)
promedio = None
if cantidad > 0:
promedio = total / cantidad
print(cantidad, total, promedio)
print(altos)
Salida esperada:
4 350 87.5
[100, 200]
Tu práctica 10
Repetí el análisis para [50, -10, 150, 0]. Mostrá cantidad, total y promedio en una línea y los importes >= 100 en otra. Luego probá [] y [-5]: deben producir 0 0 None y [].
Resultado esperado:
3 200 66.66666666666667
[150]
Explicá con tus palabras: Explicá por qué cero aumenta la cantidad aunque no aumente el total.
Errores frecuentes
Revisá esto antes de pedir ayuda
• Reiniciaste el acumulador adentro: total = 0 va antes del for, no dentro.
• El límite de range: range(1, 6) llega hasta 5; el fin no se incluye.
• Sangría de más: si el print final tiene sangría, se repite en cada vuelta.
• while que no termina: falta actualizar la variable de la condición. Interrumpí el kernel (■) y revisalo.
• break o continue: break corta el bucle; continue solo salta la vuelta actual.
• Faltan los dos puntos: for y while terminan en :.
Estudiá con IA (sin que te resuelva la tarea)
Copiá uno de estos prompts en ChatGPT, Claude o Gemini. Completá lo que está entre corchetes. La IA te guía con pistas; vos escribís el código y lo verificás ejecutándolo.
Prompt 1 · Tutor con pistas
Actuá como mi tutor de Python. Estoy en el Módulo 2 del curso "Python para Data Science e IA" (Quantux AI), clase de BUCLES: for, range, contadores, acumuladores, append, enumerate, while, continue y break. Hasta ahora sé variables, listas, print y condicionales.
Reglas para ayudarme:
1. No me des la solución completa. Dame UNA pista por vez y esperá mi respuesta.
2. Antes de explicarme algo, pedime que prediga la salida del código.
3. Usá ejemplos cortos, sin librerías ni temas que todavía no vi.
4. Si mi código falla, señalá la línea y preguntame qué creo que pasa en cada vuelta del bucle.
5. Cuando lo resuelva, proponeme un ejercicio parecido para comprobar que entendí.
Práctica: [pegá el enunciado]
Mi código: [pegá tu código]
Mi predicción y la salida real: [escribí ambas]
Prompt 2 · Repaso tipo quiz
Haceme un repaso de BUCLES en Python (for, range, while, continue, break, contador y acumulador) para alguien que recién empieza.
- 6 preguntas, de a una: esperá mi respuesta antes de pasar a la siguiente.
- Mezclá: predecir la salida de un código corto, encontrar un error y elegir entre for o while.
- Después de cada respuesta decime si está bien y por qué, en 2 o 3 líneas.
- Al final, dame un puntaje y los 2 temas que debería repasar.
Usala bien
• No pegues el enunciado pidiendo «resolvelo»: perdés la práctica.
• Toda respuesta de la IA se comprueba ejecutando el código en tu notebook.
• Si la IA usa algo que todavía no vimos (librerías, comprehensions, lambda), pedile que lo haga con lo visto en clase.
Practicá y comprobate
Resolvé las 10 prácticas y el mini proyecto del notebook 04_Bucles_Desde_Cero. Después respondé sin copiar código:
- ¿Qué diferencia hay entre un contador y un acumulador?
- ¿Cuándo conviene
fory cuándowhile? - ¿Qué produce
range(5, 0, -1)y por quérange(5, 0)no recorre nada? - ¿Por qué
breaksería incorrecto para reunir TODOS los negativos de una lista? - En el mini proyecto, ¿por qué cero aumenta la cantidad aunque no aumente el total?
Estás listo para avanzar si…
resolvés el mini proyecto también con [] y [-5] (debe dar 0 0 None) y explicás contador frente a acumulador. Si te cuesta, volvé a los pasos 3, 4 y 7. Siguiente clase: Funciones y reutilización de código.
