Flujo de Control en Python

PythonBeginner
Practicar Ahora

Introducción

El flujo de control es el orden en el que se ejecutan o evalúan sentencias, instrucciones o llamadas a funciones individuales. El flujo de control de un programa Python se regula mediante sentencias condicionales, bucles y llamadas a funciones.

En este laboratorio, aprenderá los conceptos centrales para controlar la ejecución de programas en Python. Explorará la lógica condicional utilizando sentencias if, varios operadores, la nueva sentencia match-case e iteración mediante bucles while y for. Al finalizar este laboratorio, podrá escribir programas Python más dinámicos y potentes.

Operadores de Comparación y Booleanos

En este paso, aprenderás a usar los operadores de comparación y booleanos para formar expresiones lógicas. Estas expresiones son fundamentales para el control de flujo, ya que se evalúan como True o False, lo que determina cómo procede el programa.

Operadores de Comparación

Los operadores de comparación se utilizan para comparar dos valores. Aquí hay una tabla de los operadores de comparación comunes:

Operador Significado
== Igual a
!= Distinto de
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que

Estos operadores se evalúan como True o False. Por ejemplo, 42 == 42 es True, pero 42 == '42' es False porque los tipos (entero y cadena) son diferentes.

Operadores Booleanos

Hay tres operadores booleanos: and, or y not. Se utilizan para combinar o invertir valores booleanos. Su orden de precedencia es not, luego and, y finalmente or.

El operador and devuelve True solo si ambas expresiones son verdaderas. El operador or devuelve True si al menos una de las expresiones es verdadera. El operador not invierte el valor booleano (not True se convierte en False).

Mezcla de Operadores

Puedes combinar operadores de comparación y booleanos para crear expresiones lógicas más complejas.

Nota: Si no estás familiarizado con el uso de WebIDE (similar a VS Code), por favor, apréndelo primero en este laboratorio.

Por ejemplo:

(4 < 5) and (5 < 6)

Salida:

True

Ahora, vamos a practicar esto. Abre el archivo operators_example.py desde el explorador de archivos a la izquierda. Agrega el siguiente código al archivo. Este código combina múltiples operadores para evaluar un único resultado booleano.

## operators_example.py
result = 2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2
print(result)

Para ejecutar el script, abre una terminal en el WebIDE y ejecuta el siguiente comando:

python3 operators_example.py

Deberías ver la siguiente salida, ya que la expresión se evalúa como True:

True

Sentencias If y Operador Ternario

En este paso, aprenderá a controlar el flujo del programa con las sentencias if, elif y else para ejecutar bloques de código basados en condiciones específicas. Este paso también introduce el operador condicional ternario para escribir expresiones condicionales concisas en una sola línea.

Las Sentencias if, elif y else

  • La sentencia if ejecuta un bloque de código si su condición es True.
  • La sentencia elif (else if) comprueba otra condición si las condiciones if o elif precedentes fueron False.
  • La sentencia else ejecuta un bloque de código si todas las condiciones if y elif precedentes fueron False.

Aquí está la estructura básica:

if condition1:
    ## código a ejecutar si condition1 es True
elif condition2:
    ## código a ejecutar si condition1 es False y condition2 es True
else:
    ## código a ejecutar si todas las condiciones son False

Operador Condicional Ternario

El operador ternario proporciona una forma abreviada de escribir sentencias simples de if-else en una sola línea. Su sintaxis es:

<expression1> if <condition> else <expression2>

Por ejemplo, print('kid' if age < 18 else 'adult') es una forma compacta de escribir un bloque if-else completo.

Ahora, vamos a practicar el uso de un bloque condicional completo. Abra el archivo if_example.py y agregue el siguiente código. Este script comprobará el valor de la variable name e imprimirá un mensaje diferente en consecuencia.

## if_example.py
name = 'Antony'

if name == 'Debora':
   print('Hi Debora!')
elif name == 'George':
   print('Hi George!')
else:
   print('Who are you?')

Ejecute el script desde la terminal:

python3 if_example.py

Dado que name es 'Antony', ni la condición if ni la elif se cumplen, por lo que se ejecuta el bloque else.

Salida:

Who are you?

Sentencia Switch Case

En este paso, explorará el Coincidencia Estructural de Patrones (Structural Pattern Matching), el potente equivalente a switch-case de Python introducido en Python 3.10. Practicará la coincidencia de valores, el uso de patrones OR e implementará casos por defecto con las palabras clave match y case.

Una sentencia match toma una expresión y compara su valor con patrones sucesivos proporcionados como uno o más bloques case.

Coincidencia Básica

Puede hacer coincidir valores literales como números o cadenas.

Patrones OR

Puede combinar varios patrones literales en un solo case usando el operador | (or). Por ejemplo, case 200 | 201:.

Caso por Defecto

El símbolo de guion bajo (_) es un comodín y se utiliza para definir un caso por defecto que coincidirá si ningún otro caso ha coincidido.

Vamos a practicar esto. Abra el archivo match_example.py y agregue el siguiente código. Este script utiliza una sentencia match para determinar una acción basada en un código de respuesta HTTP.

## match_example.py
response_code = 800

match response_code:
    case 200 | 201:
        print("OK")
    case 300 | 307:
        print("Redirect")
    case 400 | 401:
        print("Bad Request")
    case 500 | 502:
        print("Internal Server Error")
    case _:
        print("Invalid Code")

Ejecute el script desde su terminal:

python3 match_example.py

Dado que response_code es 800, no coincide con ninguno de los casos específicos, por lo que se ejecuta el caso por defecto (_).

Salida:

Invalid Code

Bucles While y Control de Bucle

En este paso, dominará el bucle while para la ejecución repetida mientras una condición sea verdadera. También aprenderá a gestionar el comportamiento del bucle utilizando la sentencia break para salir del bucle y la sentencia continue para omitir la iteración actual.

El Bucle while

Un bucle while ejecuta repetidamente una sentencia objetivo mientras una condición dada sea True. Es crucial asegurarse de que la condición eventualmente se vuelva False para evitar un bucle infinito.

La Sentencia break

La sentencia break termina el bucle actual y reanuda la ejecución en la siguiente sentencia, al igual que el break tradicional en C.

La Sentencia continue

La sentencia continue rechaza todas las sentencias restantes en la iteración actual del bucle y devuelve el control a la parte superior del bucle.

Vamos a crear un bucle while simple. Abra el archivo while_example.py y agregue el siguiente código. Este script imprimirá un mensaje cinco veces.

## while_example.py
spam = 0
while spam < 5:  ## Continuar mientras spam sea menor que 5
    print('Hello, world.')
    spam = spam + 1  ## Incrementar el contador para evitar un bucle infinito

Ahora, ejecute el script desde la terminal:

python3 while_example.py

El bucle se ejecutará mientras spam sea menor que 5. En cada iteración, spam se incrementa en 1.

Salida:

Hello, world.
Hello, world.
Hello, world.
Hello, world.
Hello, world.

Bucles For e Iteración

En este paso, utilizará el bucle for para iterar sobre elementos en una secuencia como una lista o una cadena. Este paso cubre el uso de la función range() para iterar un número específico de veces, el bloque else opcional en un bucle for, y cómo terminar un programa completamente con sys.exit().

El Bucle for

Un bucle for se utiliza para iterar sobre una secuencia (que puede ser una lista, una tupla, un diccionario, un conjunto o una cadena).

La Función range()

La función range() genera una secuencia de números, lo cual es útil para iterar un número específico de veces.

  • range(stop): Genera números desde 0 hasta stop (sin incluirlo).
  • range(start, stop): Genera números desde start hasta stop (sin incluirlo).
  • range(start, stop, step): Genera números desde start hasta stop (sin incluirlo), incrementando en step.

Finalizar un Programa con sys.exit()

Se puede llamar a la función sys.exit() para terminar el programa inmediatamente. Primero debe hacer import sys para poder usarla.

Vamos a practicar el uso de un bucle for con range(). Abra el archivo for_example.py y agregue el siguiente código. Este script imprimirá números pares desde 0 hasta 8.

## for_example.py
## range(start, stop, step)
for i in range(0, 10, 2):
   print(i)

Ejecute el script desde la terminal:

python3 for_example.py

La función range(0, 10, 2) genera números comenzando en 0, hasta 10 (sin incluirlo), con un paso de 2.

Salida:

0
2
4
6
8

Resumen

¡Felicidades por completar el laboratorio! Ahora ha dominado los conceptos fundamentales del flujo de control en Python.

En este laboratorio:

  • Aprendió a utilizar operadores de comparación y booleanos para formar condiciones lógicas.
  • Practicó el control de la ejecución del programa con las sentencias if, elif y else, así como el conciso operador ternario.
  • Exploró la potente sentencia match-case de Python 3.10 para la coincidencia de patrones estructurales.
  • Aprendió a crear bucles con while y for, y a controlar su comportamiento usando break y continue.

Con estas habilidades, ahora puede escribir programas Python más complejos e inteligentes que pueden tomar decisiones y repetir tareas.