Flujo de Control de Python
Flujo de control de Python
El flujo de control es el orden en que se ejecutan o evalúan las 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.
Operadores de Comparación
| 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 dependiendo de los valores que se les asignen.
Ejemplos:
42 == 42
True
40 == 42
False
'hello' == 'hello'
True
'hello' == 'Hello'
False
'dog' != 'cat'
True
42 == 42.0
True
42 == '42'
False
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
'hello' == 'Hello'?TrueFalseNoneOperadores Booleanos
Hay tres operadores booleanos: and, or y not. En orden de precedencia, de mayor a menor son not, and y or.
Tabla de Verdad del Operador and:
| Expresión | Se evalúa como |
|---|---|
True and True | True |
True and False | False |
False and True | False |
False and False | False |
Tabla de Verdad del Operador or:
| Expresión | Se evalúa como |
|---|---|
True or True | True |
True or False | True |
False or True | True |
False or False | False |
Tabla de Verdad del Operador not:
| Expresión | Se evalúa como |
|---|---|
not True | False |
not False | True |
Mezcla de Operadores
Puedes mezclar operadores booleanos y de comparación:
(4 < 5) and (5 < 6)
True
(4 < 5) and (9 < 6)
False
(1 == 2) or (2 == 2)
True
También puedes usar múltiples operadores booleanos en una expresión, junto con los operadores de comparación:
2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2
True
# En la siguiente sentencia, 3 < 4 and 5 > 5 se ejecuta primero evaluando a False
# Luego 5 > 4 devuelve True, por lo que el resultado después de True or False es True
5 > 4 or 3 < 4 and 5 > 5
True
# Ahora, la sentencia entre paréntesis se ejecuta primero, por lo que True and False devuelve False.
(5 > 4 or 3 < 4) and 5 > 5
False
Sentencias if
La sentencia if evalúa una expresión, y si esa expresión es True, ejecuta el siguiente código indentado:
# sentencia if: ejecuta el bloque de código cuando la condición es True
name = 'Debora'
if name == 'Debora': # Comprueba si name es igual a 'Debora'
print('Hi, Debora') # Esta línea se ejecuta si la condición es True
Hi, Debora
if name != 'George':
print('You are not George')
You are not George
La sentencia else se ejecuta solo si la evaluación de las expresiones if y todas las expresiones elif son False:
# if-else: ejecuta código diferente basado en la condición
name = 'Debora'
if name == 'George':
print('Hi, George.')
else: # Se ejecuta si la condición if es False
print('You are not George')
You are not George
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
else en una sentencia if-else?if (y todas las condiciones elif si están presentes) son Falseif es TrueSolo después de que la expresión de la sentencia if sea False, se evalúa y ejecuta la sentencia elif:
# if-elif: comprueba múltiples condiciones en secuencia
name = 'George'
if name == 'Debora':
print('Hi Debora!')
elif name == 'George': # Se comprueba solo si la condición anterior es False
print('Hi George!')
Hi George!
Las partes elif y else son opcionales.
name = 'Antony'
if name == 'Debora':
print('Hi Debora!')
elif name == 'George':
print('Hi George!')
else:
print('Who are you?')
Who are you?
Operador Condicional Ternario
Muchos lenguajes de programación tienen un operador ternario, que define una expresión condicional. El uso más común es crear una sentencia de asignación condicional simple y concisa. En otras palabras, ofrece código en una sola línea para evaluar la primera expresión si la condición es verdadera, y si no, evalúa la segunda expresión.
<expresión1> if <condición> else <expresión2>
Ejemplo:
age = 15
# esta sentencia if:
if age < 18:
print('kid')
else:
print('adult')
kid
# Operador ternario: expresión condicional en una sola línea
# Sintaxis: valor_si_verdadero if condición else valor_si_falso
print('kid' if age < 18 else 'adult')
kid
Los operadores ternarios se pueden encadenar:
age = 15
# este operador ternario:
print('kid' if age < 13 else 'teen' if age < 18 else 'adult')
teen
# es equivalente a esta sentencia if:
if age < 13:
print('kid')
else:
if age < 18:
print('teen')
else:
print('adult')
teen
Sentencia Switch-Case
Sentencias Switch-Case
En los lenguajes de programación de computadoras, una sentencia switch es un tipo de mecanismo de control de selección utilizado para permitir que el valor de una variable o expresión cambie el flujo de control de la ejecución del programa mediante búsqueda y mapeo.
Las sentencias Switch-Case, o Coincidencia Estructural de Patrones (Structural Pattern Matching), se introdujeron por primera vez en 2020 a través de PEP 622, y luego se lanzaron oficialmente con Python 3.10 en septiembre de 2022.
Tutorial Oficial
El PEP 636 proporciona un tutorial oficial para la coincidencia de patrones de Python o sentencias Switch-Case.
Coincidencia de valores únicos
response_code = 201
match response_code:
case 200:
print("OK")
case 201:
print("Created")
case 300:
print("Multiple Choices")
case 307:
print("Temporary Redirect")
case 404:
print("404 Not Found")
case 500:
print("Internal Server Error")
case 502:
print("502 Bad Gateway")
Created
Coincidencia con el Patrón or
En este ejemplo, el carácter de barra vertical (| u or) permite a Python devolver la misma respuesta para dos o más casos.
response_code = 502
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")
Internal Server Error
Coincidencia por la longitud de un Iterable
today_responses = [200, 300, 404, 500]
match today_responses:
case [a]:
print(f"One response today: {a}")
case [a, b]:
print(f"Two responses today: {a} and {b}")
case [a, b, *rest]:
print(f"All responses: {a}, {b}, {rest}")
All responses: 200, 300, [404, 500]
Valor por defecto
El símbolo de guion bajo (_) se utiliza para definir un caso por defecto:
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")
Invalid Code
Coincidencia de Clases Incorporadas
response_code = "300"
match response_code:
case int():
print('Code is a number')
case str():
print('Code is a string')
case _:
print('Code is neither a string nor a number')
Code is a string
Declaraciones Match-Case con Guardia (Guard)
response_code = 300
match response_code:
case int() if response_code > 99 and response_code < 500:
print('Code is a valid number')
case _:
print('Code is an invalid number')
Code is a valid number
Sentencias de Bucle while
La sentencia while se utiliza para la ejecución repetida mientras una expresión sea True:
# bucle while: repite el código mientras la condición sea True
spam = 0
while spam < 5: # Continúa mientras spam sea menor que 5
print('Hello, world.')
spam = spam + 1 # Incrementa el contador para evitar un bucle infinito
Hello, world.
Hello, world.
Hello, world.
Hello, world.
Hello, world.
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
while?TrueSentencias break
Si la ejecución alcanza una sentencia break, sale inmediatamente de la cláusula del bucle while:
# sentencia break: sale del bucle inmediatamente cuando se encuentra
while True: # Bucle infinito
name = input('Please type your name: ')
if name == 'your name':
break # Sale del bucle inmediatamente
print('Thank you!')
Please type your name: your name
Thank you!
Sentencias continue
Cuando la ejecución del programa alcanza una sentencia continue, la ejecución del programa salta inmediatamente al inicio del bucle.
# sentencia continue: omite el resto de la iteración del bucle e inicia la siguiente iteración
while True:
name = input('Who are you? ')
if name != 'Joe':
continue # Salta a la siguiente iteración, no pidas la contraseña
password = input('Password? (It is a fish.): ')
if password == 'swordfish':
break # Sale del bucle cuando la contraseña es correcta
print('Access granted.')
Who are you? Charles
Who are you? Debora
Who are you? Joe
Password? (It is a fish.): swordfish
Access granted.
Bucle For
El bucle for itera sobre una list, tuple, dictionary, set o string:
# bucle for: itera sobre cada elemento en una secuencia
pets = ['Bella', 'Milo', 'Loki']
for pet in pets: # Itera sobre cada mascota en la lista
print(pet) # Imprime cada nombre de mascota
Bella
Milo
Loki
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
for?La función range()
La función range() devuelve una secuencia de números. Comienza desde 0, incrementa en 1 y se detiene antes de un número especificado:
for i in range(5):
print(f'Will stop at 5! or 4? ({i})')
Will stop at 5! or 4? (0)
Will stop at 5! or 4? (1)
Will stop at 5! or 4? (2)
Will stop at 5! or 4? (3)
Will stop at 5! or 4? (4)
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
range(5)?La función range() también puede modificar sus 3 argumentos predeterminados. Los dos primeros serán los valores de start (inicio) y stop (parada), y el tercero será el argumento step (paso). El paso es la cantidad en que se incrementa la variable después de cada iteración.
# range(inicio, parada, paso)
for i in range(0, 10, 2):
print(i)
0
2
4
6
8
Incluso puedes usar un número negativo para el argumento step para hacer que el bucle for cuente hacia atrás en lugar de hacia adelante.
for i in range(5, -1, -1):
print(i)
5
4
3
2
1
0
Sentencia For else
Esto permite especificar una sentencia para ejecutar en caso de que se haya ejecutado el bucle completo. Solo es útil cuando una condición break puede ocurrir en el bucle:
for i in [1, 2, 3, 4, 5]:
if i == 3:
break
else:
print("only executed when no item is equal to 3")
Finalizar un Programa con sys.exit()
La función exit() permite salir de Python.
import sys
while True:
feedback = input('Type exit to exit: ')
if feedback == 'exit':
print(f'You typed {feedback}.')
sys.exit()
Type exit to exit: open
Type exit to exit: close
Type exit to exit: exit
You typed exit.