Módulo 2 · 02 | Bucles (for y while)

Módulo 2 · Video 02

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.

⬇ Descargar notebooks

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:

  1. ¿Qué diferencia hay entre un contador y un acumulador?
  2. ¿Cuándo conviene for y cuándo while?
  3. ¿Qué produce range(5, 0, -1) y por qué range(5, 0) no recorre nada?
  4. ¿Por qué break sería incorrecto para reunir TODOS los negativos de una lista?
  5. 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.

Recursos

Scroll al inicio
¿Consultas? Escribinos