6. Control de Flujo (Bucles)
🔁 6.1 ¿Qué es un bucle y por qué es útil?
Section titled “🔁 6.1 ¿Qué es un bucle y por qué es útil?”Concepto de bucle
Section titled “Concepto de bucle”Un bucle (o ciclo) es una estructura de control que permite ejecutar un bloque de código repetidamente mientras se cumpla una condición o para cada elemento de una secuencia. Es fundamental para automatizar tareas repetitivas.
Propósito de los bucles
Section titled “Propósito de los bucles”- Automatización: Evita escribir el mismo código múltiples veces
- Procesamiento masivo: Permite trabajar con grandes cantidades de datos
- Eficiencia: Reduce código y facilita el mantenimiento
- Iteración: Recorre colecciones de datos elemento por elemento
Tipos de bucles en Python
Section titled “Tipos de bucles en Python”| Tipo | Descripción |
|---|---|
while | Repite mientras una condición sea verdadera |
for | Itera sobre una secuencia (lista, rango, cadena, etc.) |
Componentes de un bucle
Section titled “Componentes de un bucle”- Condición o secuencia: Determina cuándo continuar o qué recorrer
- Bloque de código: Instrucciones que se repiten
- Control de flujo:
break,continue,passpara modificar el comportamiento
Ejemplo: Sin bucle vs con bucle
Section titled “Ejemplo: Sin bucle vs con bucle”# SIN BUCLE (repetitivo y poco práctico)print("Hola 1")print("Hola 2")print("Hola 3")print("Hola 4")print("Hola 5")
# CON BUCLE (eficiente y escalable)for i in range(1, 6): print(f"Hola {i}")Ejemplo: Casos de uso comunes
Section titled “Ejemplo: Casos de uso comunes”# Sumar números del 1 al 10suma = 0for numero in range(1, 11): suma += numeroprint(f"Suma total: {suma}") # 55
# Validar entrada hasta que sea correctawhile True: edad = int(input("Edad (0-120): ")) if 0 <= edad <= 120: break print("Edad inválida, intenta de nuevo")
# Procesar lista de nombresnombres = ["Ana", "Juan", "María"]for nombre in nombres: print(f"Hola, {nombre}")⏳ 6.2 Bucle while: repetir mientras sea verdadero
Section titled “⏳ 6.2 Bucle while: repetir mientras sea verdadero”Concepto de while
Section titled “Concepto de while”El bucle while ejecuta un bloque de código repetidamente mientras una condición sea verdadera (True). Se evalúa la condición antes de cada iteración.
Sintaxis
Section titled “Sintaxis”while condicion: # código que se repiteCaracterísticas importantes
Section titled “Características importantes”- Condición previa: Se evalúa antes de ejecutar el bloque
- Puede no ejecutarse: Si la condición es falsa desde el inicio
- Riesgo de bucle infinito: Si la condición nunca se vuelve falsa
- Control manual: El programador debe modificar la condición
Cuándo usar while
Section titled “Cuándo usar while”- Cuando no se sabe cuántas iteraciones se necesitan
- Para validar entradas del usuario
- Para esperar que ocurra un evento
- Cuando la condición de parada es compleja
Ejemplo: while básico
Section titled “Ejemplo: while básico”# Contador simplecontador = 1
while contador <= 5: print(f"Iteración {contador}") contador += 1
print("Bucle terminado")
# Salida:# Iteración 1# Iteración 2# Iteración 3# Iteración 4# Iteración 5# Bucle terminadoEjemplo: Validación de entrada
Section titled “Ejemplo: Validación de entrada”# Solicitar contraseña hasta que sea correctacontrasena_correcta = "python123"intentos = 0
while True: contrasena = input("Ingresa la contraseña: ") intentos += 1
if contrasena == contrasena_correcta: print("✅ Acceso concedido") break else: print("❌ Contraseña incorrecta") if intentos >= 3: print("Demasiados intentos") breakEjemplo: Suma acumulativa
Section titled “Ejemplo: Suma acumulativa”# Sumar números hasta que el usuario ingrese 0print("Ingresa números para sumar (0 para terminar)")suma = 0
while True: numero = float(input("Número: "))
if numero == 0: break
suma += numero print(f"Suma parcial: {suma}")
print(f"\nSuma total: {suma}")Ejemplo: Cuenta regresiva
Section titled “Ejemplo: Cuenta regresiva”# Cuenta regresiva desde 10import time
cuenta = 10
while cuenta > 0: print(cuenta) time.sleep(1) # Esperar 1 segundo cuenta -= 1
print("¡Despegue! 🚀")🔄 6.3 Bucle for: recorrer listas y rangos
Section titled “🔄 6.3 Bucle for: recorrer listas y rangos”Concepto de for
Section titled “Concepto de for”El bucle for itera sobre una secuencia (lista, tupla, cadena, rango, etc.) ejecutando el bloque de código para cada elemento.
Sintaxis
Section titled “Sintaxis”for variable in secuencia: # código que se repiteLa función range()
Section titled “La función range()”| Forma | Descripción |
|---|---|
range(n) | Genera números de 0 a n-1 |
range(inicio, fin) | Genera números desde inicio hasta fin-1 |
range(inicio, fin, paso) | Con incremento personalizado |
Características importantes
Section titled “Características importantes”- Iteración automática: Recorre cada elemento sin control manual
- Seguro: No hay riesgo de bucle infinito
- Versátil: Funciona con cualquier objeto iterable
- Variable temporal: La variable del for solo existe dentro del bucle
Ejemplo: for con range()
Section titled “Ejemplo: for con range()”# Imprimir números del 1 al 5for i in range(1, 6): print(i)
# Salida: 1, 2, 3, 4, 5
# Tabla de multiplicar del 5for i in range(1, 11): print(f"5 x {i} = {5 * i}")
# Números pares del 0 al 10for i in range(0, 11, 2): print(i) # 0, 2, 4, 6, 8, 10Ejemplo: for con listas
Section titled “Ejemplo: for con listas”# Recorrer lista de nombresnombres = ["Ana", "Juan", "María", "Carlos"]
for nombre in nombres: print(f"Hola, {nombre}")
# Recorrer con índicefor i in range(len(nombres)): print(f"{i + 1}. {nombres[i]}")
# Usar enumerate() (mejor práctica)for indice, nombre in enumerate(nombres, 1): print(f"{indice}. {nombre}")Ejemplo: for con cadenas
Section titled “Ejemplo: for con cadenas”# Recorrer caracteres de una cadenapalabra = "Python"
for letra in palabra: print(letra)
# Contar vocalestexto = "Hola Mundo"vocales = 0
for letra in texto.lower(): if letra in "aeiou": vocales += 1
print(f"Vocales encontradas: {vocales}")Ejemplo: for con diccionarios
Section titled “Ejemplo: for con diccionarios”# Recorrer diccionarioestudiante = { "nombre": "Ana", "edad": 20, "carrera": "Ingeniería"}
# Solo clavesfor clave in estudiante: print(clave)
# Claves y valoresfor clave, valor in estudiante.items(): print(f"{clave}: {valor}")
# Solo valoresfor valor in estudiante.values(): print(valor)Ejemplo: Bucles anidados
Section titled “Ejemplo: Bucles anidados”# Tabla de multiplicar del 1 al 5for i in range(1, 6): for j in range(1, 6): print(f"{i} x {j} = {i * j}") print() # Línea en blanco
# Patrón de asteriscosfor i in range(1, 6): print("*" * i)
# Salida:# *# **# ***# ****# *****⚡ 6.4 Instrucciones break, continue y pass
Section titled “⚡ 6.4 Instrucciones break, continue y pass”Instrucciones de control de flujo
Section titled “Instrucciones de control de flujo”Estas instrucciones modifican el comportamiento normal de los bucles:
| Instrucción | Propósito | Efecto |
|---|---|---|
break | Termina el bucle inmediatamente | Sale del bucle más interno |
continue | Salta a la siguiente iteración | Vuelve al inicio del bucle |
pass | No hace nada (placeholder) | Continúa normalmente |
Ejemplo: break - Salir del bucle
Section titled “Ejemplo: break - Salir del bucle”# Buscar un número en una listanumeros = [3, 7, 12, 5, 9, 15]buscar = 5
for num in numeros: if num == buscar: print(f"✅ Número {buscar} encontrado") break print(f"Revisando {num}...")else: print(f"❌ Número {buscar} no encontrado")
# Salida:# Revisando 3...# Revisando 7...# Revisando 12...# ✅ Número 5 encontradoEjemplo: continue - Saltar iteración
Section titled “Ejemplo: continue - Saltar iteración”# Imprimir solo números imparesfor i in range(1, 11): if i % 2 == 0: continue # Saltar números pares print(i)
# Salida: 1, 3, 5, 7, 9
# Procesar solo valores válidosvalores = [10, -5, 20, 0, 15, -3]
for valor in valores: if valor <= 0: continue # Ignorar valores no positivos print(f"Procesando: {valor}")Ejemplo: pass - Placeholder
Section titled “Ejemplo: pass - Placeholder”# Estructura pendiente de implementarfor i in range(5): if i == 2: pass # TODO: Implementar lógica especial else: print(i)
# Función vacía (por ahora)def funcion_futura(): pass # Se implementará después
# Clase vacíaclass MiClase: pass # Se agregará contenido luegoEjemplo: Comparación de las tres
Section titled “Ejemplo: Comparación de las tres”# Demostración de break, continue y passprint("=== BREAK ===")for i in range(5): if i == 3: break print(i)# Salida: 0, 1, 2
print("\n=== CONTINUE ===")for i in range(5): if i == 3: continue print(i)# Salida: 0, 1, 2, 4
print("\n=== PASS ===")for i in range(5): if i == 3: pass print(i)# Salida: 0, 1, 2, 3, 4💪 6.5 Práctica: contar, sumar y generar listas
Section titled “💪 6.5 Práctica: contar, sumar y generar listas”Patrones comunes en bucles
Section titled “Patrones comunes en bucles”| Patrón | Descripción |
|---|---|
| Contador | Variable que se incrementa en cada iteración |
| Acumulador | Variable que suma o concatena valores |
| Generador | Crear nuevas listas a partir de condiciones |
| Búsqueda | Encontrar elementos que cumplan criterios |
Ejercicio 1: Contar elementos
Section titled “Ejercicio 1: Contar elementos”# Contar números pares en una listanumeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]pares = 0
for num in numeros: if num % 2 == 0: pares += 1
print(f"Números pares: {pares}") # 5
# Contar vocales en un textotexto = "Python es genial"vocales = 0
for letra in texto.lower(): if letra in "aeiou": vocales += 1
print(f"Vocales: {vocales}")Ejercicio 2: Sumar valores
Section titled “Ejercicio 2: Sumar valores”# Sumar números de una listanumeros = [10, 20, 30, 40, 50]suma = 0
for num in numeros: suma += num
print(f"Suma total: {suma}") # 150
# Calcular promediocantidad = len(numeros)promedio = suma / cantidadprint(f"Promedio: {promedio}") # 30.0
# Sumar solo números positivosvalores = [10, -5, 20, -3, 15]suma_positivos = 0
for valor in valores: if valor > 0: suma_positivos += valor
print(f"Suma de positivos: {suma_positivos}") # 45Ejercicio 3: Generar listas
Section titled “Ejercicio 3: Generar listas”# Generar lista de cuadradoscuadrados = []for i in range(1, 11): cuadrados.append(i ** 2)
print(cuadrados) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# List comprehension (forma más elegante)cuadrados = [i ** 2 for i in range(1, 11)]
# Generar lista de números parespares = []for i in range(1, 21): if i % 2 == 0: pares.append(i)
print(pares) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# Con list comprehensionpares = [i for i in range(1, 21) if i % 2 == 0]Ejercicio 4: Tabla de multiplicar
Section titled “Ejercicio 4: Tabla de multiplicar”# Generar tabla de multiplicarnumero = int(input("¿Qué tabla quieres? "))
print(f"\nTabla del {numero}:")print("=" * 20)
for i in range(1, 11): resultado = numero * i print(f"{numero} x {i:2d} = {resultado:3d}")
# Salida ejemplo (tabla del 7):# Tabla del 7:# ====================# 7 x 1 = 7# 7 x 2 = 14# 7 x 3 = 21# ...Ejercicio 5: Factorial
Section titled “Ejercicio 5: Factorial”# Calcular factorial de un númeronumero = int(input("Número para factorial: "))factorial = 1
for i in range(1, numero + 1): factorial *= i
print(f"El factorial de {numero} es {factorial}")
# Ejemplo: factorial de 5 = 120 (5*4*3*2*1)Ejercicio 6: Números primos
Section titled “Ejercicio 6: Números primos”# Verificar si un número es primonumero = int(input("Ingresa un número: "))es_primo = True
if numero < 2: es_primo = Falseelse: for i in range(2, numero): if numero % i == 0: es_primo = False break
if es_primo: print(f"{numero} es primo")else: print(f"{numero} no es primo")Ejercicio 7: Pirámide de números
Section titled “Ejercicio 7: Pirámide de números”# Generar pirámide de númerosfilas = int(input("Número de filas: "))
for i in range(1, filas + 1): # Espacios print(" " * (filas - i), end="")
# Números ascendentes for j in range(1, i + 1): print(j, end="")
# Números descendentes for j in range(i - 1, 0, -1): print(j, end="")
print() # Nueva línea
# Salida con 5 filas:# 1# 121# 12321# 1234321# 123454321🎯 Resumen de la lección
Section titled “🎯 Resumen de la lección”
🐝