BUCLES


Claro, el control de flujo en Python permite dirigir el curso de ejecuci贸n del programa bas谩ndose en condiciones y repeticiones. Esto se logra mediante el uso de condicionales y bucles. A continuaci贸n, te explico ambos conceptos en detalle:

Condicionales

Los condicionales permiten ejecutar ciertos bloques de c贸digo solo si se cumplen ciertas condiciones. En Python, esto se logra utilizando las declaraciones if, elif y else.

Estructura de if

La estructura b谩sica de una declaraci贸n if es:

if condici贸n:
    # bloque de c贸digo a ejecutar si la condici贸n es verdadera

Estructura de if-else

Para manejar dos posibles caminos de ejecuci贸n, se usa if-else:

if condici贸n:
    # bloque de c贸digo a ejecutar si la condici贸n es verdadera
else:
    # bloque de c贸digo a ejecutar si la condici贸n es falsa

Estructura de if-elif-else

Para manejar m煤ltiples condiciones, se utiliza if-elif-else:

if condici贸n1:
    # bloque de c贸digo a ejecutar si condici贸n1 es verdadera
elif condici贸n2:
    # bloque de c贸digo a ejecutar si condici贸n2 es verdadera
else:
    # bloque de c贸digo a ejecutar si ninguna de las condiciones anteriores es verdadera

Ejemplo de Condicionales

edad = 18

if edad < 18:
    print("Eres menor de edad.")
elif edad == 18:
    print("Acabas de alcanzar la mayor铆a de edad.")
else:
    print("Eres mayor de edad.")

Bucles

Los bucles permiten repetir un bloque de c贸digo varias veces. Python soporta dos tipos principales de bucles: for y while.

Bucle for

El bucle for se utiliza para iterar sobre una secuencia (como una lista, tupla, diccionario, conjunto o cadena).

for elemento in secuencia:
    # bloque de c贸digo a ejecutar por cada elemento en la secuencia

Ejemplo de for

numeros = [1, 2, 3, 4, 5]

for numero in numeros:
    print(numero)

Bucle while

El bucle while se ejecuta mientras una condici贸n sea verdadera.

while condici贸n:
    # bloque de c贸digo a ejecutar mientras la condici贸n sea verdadera

Ejemplo de while

contador = 0

while contador < 5:
    print(contador)
    contador += 1

Control de Flujo en Bucles

break

La declaraci贸n break se utiliza para salir de un bucle antes de que haya terminado de ejecutarse.

for numero in numeros:
    if numero == 3:
        break
    print(numero)

continue

La declaraci贸n continue se utiliza para omitir el resto del bloque de c贸digo en la iteraci贸n actual y continuar con la siguiente iteraci贸n.

for numero in numeros:
    if numero == 3:
        continue
    print(numero)

Bucles Anidados

Puedes tener bucles dentro de otros bucles.

for i in range(3):
    for j in range(2):
        print(f"i={i}, j={j}")

Ejemplo Completo

Combina condicionales y bucles para crear un programa m谩s complejo:

numeros = [1, 2, 3, 4, 5]

for numero in numeros:
    if numero % 2 == 0:
        print(f"{numero} es par.")
    else:
        print(f"{numero} es impar.")

Este ejemplo recorre una lista de n煤meros y utiliza una declaraci贸n if-else para determinar si cada n煤mero es par o impar.

Claro, el bucle for en Python es una herramienta muy poderosa y flexible para iterar sobre secuencias como listas, tuplas, diccionarios, conjuntos y cadenas. A continuaci贸n, te explico en detalle c贸mo funciona el bucle for, incluyendo todas sus variantes y usos.

Bucle for B谩sico

Iteraci贸n sobre Listas

La forma m谩s b谩sica del bucle for es iterar sobre una lista.

numeros = [1, 2, 3, 4, 5]

for numero in numeros:
    print(numero)

Iteraci贸n sobre Cadenas

Tambi茅n puedes iterar sobre cada car谩cter de una cadena.

mensaje = "Hola"

for letra in mensaje:
    print(letra)

Iteraci贸n sobre Tuplas

Las tuplas tambi茅n pueden ser iteradas con for.

colores = ('rojo', 'verde', 'azul')

for color in colores:
    print(color)

Iteraci贸n sobre Diccionarios

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

Iterar sobre Claves:

persona = {'nombre': 'Juan', 'edad': 30}

for clave in persona:
    print(clave)

Iterar sobre Valores:

for valor in persona.values():
    print(valor)

Iterar sobre Pares Clave-Valor:

for clave, valor in persona.items():
    print(f"{clave}: {valor}")

Uso del range

El range es una funci贸n muy 煤til para generar una secuencia de n煤meros, que a menudo se utiliza con for.

Iteraci贸n con range

Desde 0 hasta n-1:

for i in range(5):
    print(i)

Especificar el Inicio y el Fin:

for i in range(2, 6):
    print(i)

Especificar el Paso:

for i in range(2, 10, 2):
    print(i)

Bucles Anidados

Puedes anidar un bucle for dentro de otro bucle for. Esto es 煤til para iterar sobre estructuras de datos m谩s complejas, como listas de listas (matrices).

Ejemplo de Bucles Anidados

matriz = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for fila in matriz:
    for elemento in fila:
        print(elemento)

Funciones enumerate, zip y sorted

enumerate

enumerate permite iterar sobre una secuencia y tener un contador que indica la posici贸n del elemento en la secuencia.

frutas = ['manzana', 'banana', 'cereza']

for indice, fruta in enumerate(frutas):
    print(f"{indice}: {fruta}")

zip

zip permite iterar sobre dos (o m谩s) secuencias al mismo tiempo, emparejando los elementos correspondientes.

nombres = ['Ana', 'Luis', 'Carlos']
edades = [28, 34, 22]

for nombre, edad in zip(nombres, edades):
    print(f"{nombre} tiene {edad} a帽os")

sorted

sorted devuelve una nueva lista ordenada a partir de los elementos de cualquier iterable.

numeros = [4, 1, 3, 2]

for numero in sorted(numeros):
    print(numero)

break, continue y else en Bucles

break

break se utiliza para salir del bucle antes de que haya terminado su iteraci贸n completa.

for numero in numeros:
    if numero == 3:
        break
    print(numero)

continue

continue omite el resto del bloque de c贸digo en la iteraci贸n actual y contin煤a con la siguiente iteraci贸n.

for numero in numeros:
    if numero == 3:
        continue
    print(numero)

else en Bucles

La cl谩usula else en un bucle for se ejecuta cuando el bucle se completa sin encontrar una instrucci贸n break.

for numero in numeros:
    print(numero)
else:
    print("Bucle completado.")

Comprehensions

List Comprehensions

Una forma compacta de crear listas.

cuadrados = [x**2 for x in range(10)]
print(cuadrados)

Set Comprehensions

De forma similar, se pueden crear conjuntos.

cuadrados = {x**2 for x in range(10)}
print(cuadrados)

Dict Comprehensions

Tambi茅n se pueden crear diccionarios de forma compacta.

cuadrados = {x: x**2 for x in range(10)}
print(cuadrados)

Ejemplo Completo

Combina varios conceptos para ilustrar un ejemplo m谩s completo:

nombres = ['Ana', 'Luis', 'Carlos']
edades = [28, 34, 22]
datos = list(zip(nombres, edades))

for i, (nombre, edad) in enumerate(datos):
    if edad < 25:
        continue
    print(f"{i}. {nombre} tiene {edad} a帽os")
else:
    print("Iteraci贸n completada.")

Este ejemplo muestra c贸mo combinar zip, enumerate, continue y else en un solo bucle for.