Ciclos en Python

Los ciclos (o bucles) son una herramienta esencial en programación para ejecutar un bloque de código varias veces. En Python, los principales tipos de ciclos son for y while. Cada uno tiene sus propias aplicaciones y sintaxis.


1. Ciclo for

El ciclo for se utiliza para iterar sobre una secuencia (como una cadena, lista, tupla o diccionario). La sintaxis básica es:

for variable in secuencia:
    # Bloque de código a ejecutar en cada iteración

Ejemplos de Ciclo for

1.1 Iterando sobre una Lista

Itera sobre los elementos de una lista y muestra cada uno.

# Lista de frutas
frutas = ["manzana", "banana", "cereza", "naranja"]

# Ciclo for para iterar sobre la lista
for fruta in frutas:
    print(f"Fruta: {fruta}")

Salida:

Fruta: manzana
Fruta: banana
Fruta: cereza
Fruta: naranja

1.2 Iterando sobre una Cadena

Cada carácter de la cadena se considera un elemento.

# Cadena de texto
mensaje = "¡Hola, mundo!"

# Ciclo for para iterar sobre cada carácter
for caracter in mensaje:
    print(caracter)

Salida:

!
H
o
l
a
,
  
m
u
n
d
o
!

1.3 Iterando con Índices y Valores

Para obtener tanto el índice como el valor, usa enumerate().

# Lista de números
numeros = [10, 20, 30, 40]

# Ciclo for con enumerate()
for indice, numero in enumerate(numeros):
    print(f"Índice: {indice}, Valor: {numero}")

Salida:

Índice: 0, Valor: 10
Índice: 1, Valor: 20
Índice: 2, Valor: 30
Índice: 3, Valor: 40

1.4 Iterando sobre un Diccionario

Puedes iterar sobre las claves, valores o pares clave-valor de un diccionario.

# Diccionario de estudiantes y sus calificaciones
estudiantes = {
    "Juan": 85,
    "María": 92,
    "Pedro": 78
}

# Ciclo for para iterar sobre las claves
print("Claves:")
for estudiante in estudiantes:
    print(estudiante)

# Ciclo for para iterar sobre los valores
print("\nValores:")
for calificacion in estudiantes.values():
    print(calificacion)

# Ciclo for para iterar sobre pares clave-valor
print("\nPares clave-valor:")
for estudiante, calificacion in estudiantes.items():
    print(f"{estudiante}: {calificacion}")

Salida:

Claves:
Juan
María
Pedro

Valores:
85
92
78

Pares clave-valor:
Juan: 85
María: 92
Pedro: 78

2. Ciclo while

El ciclo while se ejecuta mientras una condición especificada sea verdadera. La sintaxis básica es:

while condicion:
    # Bloque de código a ejecutar mientras la condición sea verdadera

Ejemplos de Ciclo while

2.1 Contador Simples

Incrementa un contador hasta que se cumpla una condición.

# Inicialización del contador
contador = 0

# Ciclo while que se ejecuta mientras contador sea menor que 5
while contador < 5:
    print(f"Contador: {contador}")
    contador += 1  # Incrementa el contador en cada iteración

Salida:

Contador: 0
Contador: 1
Contador: 2
Contador: 3
Contador: 4

2.2 Menú de Opciones

Crea un menú interactivo que se mantenga abierto hasta que el usuario decida salir.

# Variable para controlar el bucle
opcion = "0"

while opcion != "3":
    print("\nMenú:")
    print("1. Mostrar mensaje")
    print("2. Sumar dos números")
    print("3. Salir")

    opcion = input("\nIngrese una opción: ")

    if opcion == "1":
        print("\n¡Hola, mundo!")
    elif opcion == "2":
        num1 = float(input("\nIngrese el primer número: "))
        num2 = float(input("Ingrese el segundo número: "))
        suma = num1 + num2
        print(f"\nSuma: {suma}")
    elif opcion == "3":
        print("\nSaliendo del programa...")
    else:
        print("\nOpción no válida. Inténtelo de nuevo.")

Ejemplo de Interacción:

Menú:
1. Mostrar mensaje
2. Sumar dos números
3. Salir

Ingrese una opción: 2

Ingrese el primer número: 5
Ingrese el segundo número: 7

Suma: 12

Menú:
1. Mostrar mensaje
2. Sumar dos números
3. Salir

Ingrese una opción: 3

Saliendo del programa...

2.3 Validación de Entrada

Valida que el usuario ingrese un número entero positivo.

# Variable para almacenar la entrada del usuario
numero = None

while True:
    try:
        numero = int(input("Ingrese un número entero: "))
        if numero > 0:
            print(f"\n¡Gracias! Usted ingresó el número {numero}.")
            break  # Sale del bucle si se cumple la condición
        else:
            print("\nEl número debe ser positivo. Inténtelo de nuevo.")
    except ValueError:
        print("\nError: Ingrese un número entero válido.")

Ejemplo de Interacción:

Ingrese un número entero: -5
El número debe ser positivo. Inténtelo de nuevo.

Ingrese un número entero: 10
¡Gracias! Usted ingresó el número 10.

3. Ciclos Anidados

Puedes anidar ciclos for o while dentro de otros ciclos para realizar tareas más complejas, como iterar sobre matrices bidimensionales.

Ejemplo de Ciclo Anidado: Matriz Bidimensional

# Definición de una matriz 3x3
matriz = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Ciclo exterior para iterar sobre las filas
for fila in matriz:
    # Ciclo interior para iterar sobre los elementos de la fila
    for elemento in fila:
        print(f"Elemento: {elemento}")

Salida:

Elemento: 1
Elemento: 2
Elemento: 3
Elemento: 4
Elemento: 5
Elemento: 6
Elemento: 7
Elemento: 8
Elemento: 9

4. Ejercicios Prácticos

Para practicar, resuelve los siguientes ejercicios:

  1. Suma de Números: Escribe un programa que pida al usuario números enteros hasta que ingrese 0, y muestre la suma total de los números ingresados.

  2. Números Pares e Impares: Crea un programa que use un ciclo for para imprimir todos los números pares del 1 al 20, y un ciclo while para imprimir todos los impares en el mismo rango.

  3. Validación de Contraseña: Implementa un sistema de login donde el usuario debe ingresar una contraseña correcta ("admin123") y se le den 3 intentos máximos.

  4. Tabla de Multiplicar: Escribe un programa que muestre la tabla de multiplicar del número ingresado por el usuario, desde 1 hasta 10.


5. Conclusión

Ahora deberías tener una buena comprensión de cómo funciona los ciclos for y while en Python, así como su aplicación en diferentes contextos. Los ciclos son fundamentales para automatizar tareas repetitivas y manejar datos de manera eficiente. Practica regularmente con ejercicios y proyectos para fortalecer tus habilidades.