Volver al curso

Python Desde Cero

leccion
7 / 21
beginner
20 horas
Control de Flujo y Funciones

Bucles for y while: Automatiza Tareas Repetitivas

Lectura
25 min~4 min lectura

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 for

El 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.