python

Estructuras de Control en Python

Las estructuras de control son fundamentales en cualquier lenguaje de programación, y Python no es la excepción. Estas estructuras permiten a los programadores controlar el flujo de la ejecución del programa, tomar deciciones y repetir bloques de código según sea necesario.


Google Colab para ver los ejercicios

Condicionales: if, elif, else

Las declaraciones condicionales permiten ejecutar bloques de código basados en condiciones específicas.

if

La declaración if se utilizan para ejecutar bloques de código basado en condiciones especificadas.

edad = 18

if edad >= 18:
    print("Eres mayor de edad.")  # Se ejecuta si la condición es verdadera

elif

La declaración de elif (abreviatura de “else if”) se utiliza para comprobar múltiples condiciones. Si la primera condición es falsa, se ejecuta la declaración elif.

edad = 17

if edad >= 18:
    print("Eres mayor de edad.")
elif edad >= 13:
    print("Eres un adolescente.")  # Se ejecuta si la condición es verdadera

else

La declaración else se utiliza para ejecutar un bloque de código si ninguna de las condiciones anteriores es verdadera.

edad = 12

if edad >= 18:
    print("Eres mayor de edad.")
elif edad >= 13:
    print("Eres un adolescente.")
else:
    print("Eres un niño.")  # Se ejecuta si ninguna de las condiciones anteriores es verdadera

Bucles for (iteración sobre secuencias)

El bucle for se utiliza para iterar sobre una secuencia de elementos (como una lista, tupla, cadena o rango) y ejecutar un bloque de código para cada elemento de la secuencia.

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

for numero in numeros:
    print(numero)  # Se ejecuta para cada elemento de la lista

El bucle for también se puede utilizar con la función range() para iterar sobre un rango de números.

for i in range(5):
    print(i)  # Impmrime los números del 0 al 4

else en Sentencias for

for elemento in secuencia:
    # Código para cada iteración
    if condición:
        break
else:
    # Código que se ejecuta si no se usa 'break'

En el bucle for el bloque else se ejecuta después de que el bucle for haya terminado de iterar sobre todos los elementos de la secuencia. Sin embargo, el bloque else no se ejecuta si el bucle for se termina debido a una instrucción break.

En su documentación oficial dice: El else, cuando se usa con un bucle, la cláusula else tiene más en común con el else de una sentencia try que con el de un if: en una sentencia try la cláusula else se ejecuta cuando no se genera ninguna excepción, y el else de un bucle se ejecuta cuando no hay ningún break. https://docs.python.org/es/3/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops

Bucles while (condicionales)

El bucle while se utiliza para ejecutar un bloque de código mientras una condición se cumpla.

contador = 0

while contador < 5:
    print(contador)
    contador += 1  # Incrementa el contador en cada iteración

Uso de break, continue y pass

Las declaraciones de control break, continue y pass permiten controlar el flujo de un bucle.

break

La declaración break se utiliza para salir de un bucle antes de que termine su iteración normal.

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

for numero in numeros:
    if numero == 3:
        break       # Se sale del bucle si el número es 3
    print(numero)  # Imprime los números del 1 al 2

continue

La declaración continue se utiliza para saltar a la siguiente iteración de un bucle.

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

for numero in numeros:
    if numero == 3:
        continue    # Salta a la siguiente iteración si el número es 3
    print(numero)  # Imprime los números 1, 2, 4, 5

pass

La declaración pass se utiliza como marcador de posición en el código. No realiza ninguna acción, pero se utiliza para evitar errores de sintaxis.

if True:
    pass  # No hace nada

otro ejemplo:

for i in range(10):
    if i % 2 == 0:
        pass  # No hace nada, solo actúa como un marcador de posición
    else:
        print(i)  # Imprime los números impares

Comprensiones de listas, diccionarios y conjuntos

Las comprenhensions de listas, diccionarios y conjuntos permiten crear de forma concisa listas, diccionarios y conjuntos.

List Comprehensions

La List Comprehensions es una característica poderosa y compacta de Python que permite crear listas de manera concisa y elegante. Proporciona una forma de costruir listas de manera más rápida y eficiente que utilizando bucles tradicionales.

Sintaxis básica:

nueva_lista = [expresión for elemento in iterable if condición]

  • expresión: Es la expresión que se evalúa y se agrega a la lista resultante.
  • elemento: La variable que representa cada elemento del iterable.
  • iterable: Una secuencia de elementos como una lista, tupla, rango, etc.
  • condición (opcional): Una expresión booleana que filtra los elementos del iterable.
numeros = [1, 2, 3, 4, 5]
cuadrados = [numero**2 for numero in numeros]
print(cuadrados)  # Imprime [1, 4, 9, 16, 25]

Dictionary Comprehension

Al igual que List Comprehension, Dictionary Comprehension ofrece una forma compacta de crear diccionarios sin necesidad de escribir bucles for tradicionales.

Sintaxis básica: La sintaxis general de un Dictionary Comprehension en Python es la siguiente: nuevo_diccionario = {clave: valor for elemento in iterable if condición}

  • clave: Es la clave del diccionario que se agrega al nuevo diccionario.
  • valor: El valor asociado a la clave.
  • elemento: La variable que representa cada elemento del iterable.
  • iterable: Una secuencia de elementos como una lista, tupla, rango, etc.
  • condición (opcional): Una expresión booleana que filtra los elementos del iterable.
numeros = [1, 2, 3, 4, 5]
cuadrados = {numero: numero**2 for numero in numeros}
print(cuadrados)  # Imprime {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Set Comprehensions

numeros = [1, 2, 3, 4, 5]
cuadrados = {numero**2 for numero in numeros}
print(cuadrados)  # Imprime {1, 4, 9, 16, 25}

Tuple comprehension

En Python, no existen las Tuple comprenhensions como una caracteristica directa, al menos no en la misma forma que las comprensiones de listas, conjuntos o diccionarios. Sin embargo, puedes utilizar generadores que se parecen a las comprensiones de listas pero producen un objeto generador en lugar de una tupla directamente. Luego, puedes convertir este generador en una tupla.

Para crear una tupla utilizando una construcción similar a las comprensiones, primero creas un generador y luego conviertes ese generador en una tupla usando la función tuple().

numeros = [1, 2, 3, 4, 5]
generador = (numero ** 2 for x in numeros)
tupla = tuple(generador)
print(tupla)  # Imprime (1, 4, 9, 16, 25)

En este ejemplo, (numero ** 2 for x in numeros) es un generador que genera los cuadrados de cada número en la lista numeros. Luego, tuple() se utiliza para convertir ese generador en una tupla.

o de otra forma:

numeros = [1, 2, 3, 4, 5]
cuadrados = tuple(numero**2 for numero in numeros)
print(cuadrados)  # Imprime (1, 4, 9, 16, 25)

Comparación con Comprensiones de Listas

A diferencia de las comprensiones de listas, que se escriben con corchetes, los generadores se escriben con paréntesis:


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

# Comprensión de listas
lista = [numero**2 for numero in numeros]

# Generador
generador = (numero**2 for numero in numeros)
tupla = tuple(generador)

Continúa leyendo