Bucles for y while: Automatiza Tareas Repetitivas
Imagina que necesitas enviar un correo a 10,000 usuarios. Escribirias el codigo 10,000 veces? Para eso existen los bucles: estructuras que permiten repetir una accion sin repetir el codigo.
Python tiene dos tipos: for y while.
El bucle forEl bucle for itera sobre secuencias: listas, strings, rangos u otros objetos iterables.
for elemento in secuencia:
instruccion
Iterando sobre una lista
frutas = ['manzana', 'banana', 'cereza', 'durazno']
for fruta in frutas:
print(f'Me gusta la {fruta}')
Iterando sobre un string
palabra = 'Python'
for letra in palabra:
print(letra, end=' ')
Salida: P y t h o n
La funcion range()# range(fin): numeros del 0 al fin-1
for i in range(5):
print(i)
# range(inicio, fin)
for i in range(1, 6):
print(i)
# range(inicio, fin, paso)
for i in range(0, 20, 5):
print(i)
# Contar hacia atras
for i in range(10, 0, -1):
print(i)
Caso real: Tabla de multiplicar
numero = 7
print(f'Tabla del {numero}:')
for i in range(1, 11):
resultado = numero * i
print(f'{numero} x {i} = {resultado}')
La funcion enumerate()
lenguajes = ['Python', 'JavaScript', 'Java', 'Go', 'Rust']
for indice, lenguaje in enumerate(lenguajes):
print(f'{indice + 1}. {lenguaje}')
La funcion zip()
nombres = ['Ana', 'Carlos', 'Maria']
puntajes = [95, 87, 92]
for nombre, puntaje in zip(nombres, puntajes):
if puntaje >= 90:
estado = 'Aprobado con distincion'
else:
estado = 'Aprobado'
print(f'{nombre}: {puntaje} - {estado}')
El bucle while
El bucle while se repite mientras una condicion sea verdadera.
contador = 0
while contador < 5:
print(f'Contador: {contador}')
contador += 1
print('Bucle terminado')
Caso real: Validacion de entrada
def pedir_edad():
while True:
try:
edad = int(input('Ingresa tu edad (0-120): '))
if 0 <= edad <= 120:
return edad
else:
print('La edad debe estar entre 0 y 120.')
except ValueError:
print('Por favor ingresa un numero valido.')
edad_usuario = pedir_edad()
print(f'Tu edad es: {edad_usuario} anios')
break y continue
break: Salir del bucle
numeros = [13, 22, 35, 41, 49, 56, 63]
for num in numeros:
if num % 7 == 0:
print(f'Primer multiplo de 7: {num}')
break
else:
print('No se encontro ningun multiplo de 7')
continue: Saltar iteracion
for i in range(1, 11):
if i % 2 != 0:
continue
print(i, end=' ')
Salida: 2 4 6 8 10
Filtrar datos de ventas
datos_ventas = [150, -30, 200, 'error', 450, None, 300, -10]
total_valido = 0
errores = 0
for venta in datos_ventas:
if not isinstance(venta, (int, float)):
errores += 1
continue
if venta < 0:
errores += 1
continue
total_valido += venta
print(f'Total valido: {total_valido}')
print(f'Errores: {errores}')
Bucles anidados
for i in range(1, 4):
for j in range(1, 4):
print(f'{i} x {j} = {i*j}', end=' | ')
print()
Proyecto: Analisis de transacciones
def analizar_transacciones(transacciones):
total_ingresos = 0
total_gastos = 0
grandes = []
for i, t in enumerate(transacciones, 1):
monto = t['monto']
if monto > 0:
total_ingresos += monto
tipo = 'Ingreso'
else:
total_gastos += abs(monto)
tipo = 'Gasto'
if abs(monto) > 500:
grandes.append(t)
print(f'{i}. {tipo} | {monto} | {t["descripcion"]}')
print(f'Ingresos: {total_ingresos}')
print(f'Gastos: {total_gastos}')
print(f'Balance: {total_ingresos - total_gastos}')
transacciones = [
{'monto': 3500, 'descripcion': 'Salario'},
{'monto': -120, 'descripcion': 'Supermercado'},
{'monto': -800, 'descripcion': 'Alquiler'},
{'monto': 200, 'descripcion': 'Freelance'},
{'monto': -1200, 'descripcion': 'Vuelo vacaciones'},
]
analizar_transacciones(transacciones)
for vs while
| Situacion | Bucle recomendado |
|---|---|
| Iterar sobre lista o coleccion | for |
| Repeticiones conocidas | for con range() |
| Repetir hasta que algo cambie | while |
| Validar entrada del usuario | while True con break |
💡 Concepto Clave
Revisemos los puntos más importantes de esta lección antes de continuar.
Resumen
- for itera sobre secuencias.
- while se repite mientras una condicion sea verdadera.
- break sale del bucle inmediatamente.
- continue salta al siguiente ciclo.
- enumerate() da indice y valor juntos.
- zip() permite iterar dos colecciones a la vez.
En la proxima leccion aprenderemos a crear funciones reutilizables.
🧠Pon a prueba tu conocimiento
¿Cuál es el aspecto más importante que aprendiste en esta lección?
- Comprendo el concepto principal y puedo explicarlo con mis palabras
- Entiendo cómo aplicarlo en mi situación especÃfica
- Necesito repasar algunas partes antes de continuar
- Quiero ver más ejemplos prácticos del tema
✅ ¡Excelente! Continúa con la siguiente lección para profundizar más.