Uso de funciones como expresiones booleanas en las estructuras condicionales
En Python, las funciones pueden ser utilizadas como expresiones booleanas en las estructuras condicionales, permitiéndonos evaluar el resultado de una función para tomar decisiones basadas en su valor de retorno.
Recordemos nuestro programa anterior que determina si un número es par o impar:
numero = int(input("Ingrese un número entero: "))
if numero % 2 == 0:
print(f"El número {numero} es par")
else:
print(f"El número {numero} es impar")
Detectar si un número es par o impar es una tarea común en programación. Sin embargo, ¿qué sucede si queremos reutilizar esta funcionalidad en otros programas o si queremos compartir esta funcionalidad con otros desarrolladores?
En lugar de repetir el mismo código en cada programa, podemos encapsular la lógica de determinar si un número es par o impar en una función reutilizable. De esta forma, podemos utilizar esta función en cualquier parte de nuestro código donde necesitemos realizar esta verificación.
Vamos a refactorizar nuestro programa anterior para incluir una función que determine si un número es par o impar:
# Creamos la función `es_par` que tiene un parámetro llamado `numero`.
def es_par(numero):
if numero % 2 == 0:
return True
else:
return False
numero = int(input("Ingrese un número entero: "))
if es_par(numero): # Llamamos a la función `es_par` y evaluamos su resultado.
print(f"El número {numero} es par")
else:
print(f"El número {numero} es impar")
Como podemos observar, dentro de nuestra función es_par
tenemos una estructura alternativa cuya condición evalúa si número
, al dividirse por dos, queda con resto cero o resto uno.
De acuerdo a ello, la función va a devolver un resultado acorde.
Ese resultado puede ser directamnte un "valor booleano".
Pero, ¿Qué significa esto?
Valor booleano
Hemos visto que Python posee cadenas o strings, enteros o integers, valores flotantes o floats, todos los cuales son diferentes tipos de datos.
Python también posee un cuarto tipo de datos llamado bool para representar un valor booleano. Un valor booleano es un tipo de dato que puede ser True
(verdadero) o False
(falso). Estos valores son fundamentales para la lógica de decisión en Python, ya que nos permiten evaluar condiciones y tomar decisiones basadas en su veracidad.
¡Para recordar!
Si has prestado atención, habrás notado que True
y False
están escritos con la primera letra en mayúscula.
Esto es importante, ya que en Python, True
y False
son palabras clave reservadas que representan los valores booleanos verdadero y falso, respectivamente. Si las escribimos de diferente manera, Python no las reconocerá como valores booleanos.
Volviendo a nuestro código, hemos definido una función es_par
que toma un número como argumento y devuelve True
si el número es par o False
si el número es impar.
# Creamos la función `es_par` que tiene un parámetro llamado `numero`.
def es_par(numero):
if numero % 2 == 0:
return True
else:
return False
numero = int(input("Ingrese un número entero: "))
if es_par(numero): # Llamamos a la función `es_par` y evaluamos su resultado.
print(f"El número {numero} es par")
else:
print(f"El número {numero} es impar")
En este código, hemos definido nuestra propia función
es_par
que toma un número como argumento y devuelveTrue
si el número es par oFalse
si el número es impar.Luego, utilizamos esta función en nuestra estructura condicional para determinar si el número ingresado por el usuario es par o impar.
¡Para recordar!
Al utilizar funciones como expresiones booleanas en las estructuras condicionales, podemos encapsular la lógica de decisión en funciones reutilizables, lo que nos permite escribir código más modular y fácil de mantener.
Métodos asociados al resultado de una función
¿Podemos utilizar la notación de punto (dot notation en inglés)1 para acceder a los métodos asociados al resultado de una función?
La respuesta es sí. En este caso, como la función es_par
devuelve un valor booleano (True
o False
), podemos utilizar la notación de punto para acceder a los métodos asociados a este valtipo de dato.
En la práctica no es común tener que aplicar algún método a un valor booleano, puesto que no precisa transformación o proceso alguno: su valor es simplemente Ture
o False
; pero es importante saber que es posible hacerlo en caso de que sea necesario.
Programando a la manera "Pitónica"
¿Podemos mejorar el diseño de este código?
Sí, podemos. Hay una forma más elegante de hacer esto en Python. En lugar de hacer una pregunta y devolver True
o False
, podemos simplificar la lógica de nuestra función es_par
para que sea más concisa y legible.
El siguiente código es una forma más "Pitónica" ("Pythonic way"2 en inglés) de escribir la función es_par
:
⋮
def es_par(numero):
return True if numero % 2 == 0 else False # Uso del operador ternario
⋮
En este caso, hemos utilizado una expresión condicional en una sola línea para devolver
True
si el número es par oFalse
si el número es impar.
!Buena práctica!
Esta sintaxis3 (forma correcta de escribir el código según las reglas y estructuras definidas por un lenguaje de programación) es más concisa y legible, siguiendo las convenciones y prácticas recomendadas en Python.
¿Qué es el operador ternario?
El operador ternario es un operador condicional que evalúa una expresión lógica y devuelve uno de dos valores, dependiendo del resultado de la evaluación. Se llama "ternario" porque involucra tres operandos:
1. Una condición.
2. El valor a retornar si la condición es verdadera.
3- El valor a retornar si la condición es falsa.
Aplicado a estructuras alternativas, el operador ternario es una manera concisa de escribir una expresión condicional en una sola línea.
En lugar de implementar la estructura if… else
utilizando al menos cuatro líneas de código, se puede condensar dicha lógica en una sola línea más elegante de código implementando el operador ternario:
¡Curiosidades!
Una de las razones por las que Python es popular hoy en día es que tiende a leerse como si su sintaxis se escribiese en lenguaje natural, como leemos los humanos.
Si bien, está pensado y codificado para el idioma inglés, no es de difícil entendimiento y podemos darnos cuenta que la línea de código dice lo que nosotros queremos decir:
"Devuelve 'Verdadero' si numero
divido por 2 tiene resto 0, o 'Falso' si la condición no se cumple."
Hasta aquí, hemos aprendido como resolver un problema común en programación, como es determinar si un número es par o impar, utilizando diferentes acercamientos: desde la forma más básica que implica estructuras condicionales y la implementación de funciones, hasta la forma más "Pitónica" que involucra al operador ternario.
¿Podemos mejorar aún más el código?
def es_par_ternario(numero):
return True if numero % 2 == 0 else False
numero = int(input("Ingrese un número entero: "))
# Llamamos a la función `es_par_ternario` y evaluamos su resultado.
if es_par_ternario(numero):
print(f"El número {numero} es par")
else:
print(f"El número {numero} es impar")
¡Claro que sí! Te doy una pista:
¿Es necesario devolver True
por verdadero o False
por falso de la condición? ¿Qué valor devuelve la expresión numero % 2 == 0
?
En la siguiente lección, veremos cómo podemos optimizar aún más nuestro código para hacerlo más eficiente y legible. ¡No te lo pierdas!
Referencias
-
Dot notation es una notación utilizada en programación para acceder a los métodos y atributos de un objeto. En Python, se utiliza un punto (
.
) para acceder a los métodos y atributos de un objeto. Recuerda que en Python, todo es un objeto, incluidas las funciones.Aquí, propiedad y metodo() son accesibles desde objeto utilizando la notación de punto.
-
La programación "pitónica" se centra en escribir código limpio, legible y eficiente que aprovecha las características únicas de Python (y que muy ciertamente no es posible hacerlo en otro lenguaje de igual manera).
"Pythonic way" es un término utilizado en la comunidad de programadores de Python para describir un estilo de programación que sigue las convenciones y prácticas recomendadas en Python.
En dicha comunidad tiende a haber algunos estilos que atraen más que otras. Y estos estilos se relacionan con características que tal vez solo tenga Python, pero no otros lenguajes.
Cuando vayamos explorando diversas sintaxis3 veremos que hay algo de esa sintaxis que quizás no hayas visto en otros lenguajes que hayas estudiado previamente, como Java, C o C++. Y si nunca has programado antes, también te podrá resultar nueva esta manera de pensarlo.
Al seguir la programación "Pitónica", los programadores podemos escribir código más conciso, elegante y fácil de mantener. ↩
-
La sintaxis en programación se refiere a la forma correcta de escribir el código según las reglas y estructuras definidas por un lenguaje de programación. Es la manera en que deben organizarse las palabras clave, símbolos, y estructuras para que el código sea válido y funcione correctamente.
En resumen, la sintaxis es la forma de escribir código que respeta las reglas del lenguaje, asegurando que el código sea comprensible para la computadora y ejecutable sin errores. ↩↩