La elegancia de usar expresiones booleanas directas
Recordemos nuestro programa anterior que determina si un número es par o impar:
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")
Debemos tomar el hábito de no solo escribir código correcto, sino escribir código cada vez mejor, manteniéndolo legible.
Habíamos resaltado, en la sección anterior, la siguiente línea de código:
Podemos notar que numero % 2 == 0
es una expresión booleana. Esto quiere decir que cuando sea resuelta devolverá uno de estos dos únicos posibles valores: True
(verdadero) o False
(falso).
Entonces, si nuestra expresión booleana tendrá una respuesta verdadera o falsa, ¿por qué tendríamos la necesidad de utilizar una estructura condicional para preguntar si es verdadera o falsa? ¿Por qué si ya obtenemos una respuesta verdadera o falsa, tendríamos que preguntar si es verdadera o falsa?
¿Entiendes el concepto?
Por lo tanto, no es necesario preguntar si el valor verdadero de la expresión booleana es verdadero o si el valor falso de la expresión booleana es falso. Simplemente devolvemos el valor de la propia expresión booleana.
Por lo tanto, podemos simplificar nuestro código de la siguiente manera:
def es_par_expresion_booleana(numero):
return numero % 2 == 0
# Llamamos a la función `es_par_expresion_booleana` y evaluamos su resultado.
if es_par_expresion_booleana(numero):
print(f"El número {numero} es par")
else:
print(f"El número {numero} es impar")
En nuestra función
es_par_expresion_booleana(numero)
numero
dividido por dos tendrá, o no, un resto de cero.
Si lo tiene, la respuesta seráTrue
.
Si no es así, la respuesta seráFalse
.
Así que nuestra función devolverá el valor booleano obtenido de la expresión booleana (de la pregunta en sí) sin que sea necesario evaluar luego con un operador ternario o con una estructura condicional if… else
dicho valor.
Antes de continuar, te voy a dejar un ejercicio final sobre este programa para que practiques lo aprendido.
¿Cómo podrías refactorizar esta parte del código para simplificarlo y que tenga mayor claridad?
⋮
if es_par_expresion_booleana(numero):
print(f"El número {numero} es par")
else:
print(f"El número {numero} es impar")
¡Buena suerte!
Haz clic aquí para ver la solución propuesta
def es_par_expresion_booleana(numero):
return numero % 2 == 0
# Llamamos a la función `es_par_expresion_booleana` y evaluamos su resultado.
print(f"El número {numero} es {"par" if es_par_expresion_booleana(numero) else "impar"}")
En esta solución, hemos utilizado una cadena de formato para imprimir el resultado correspondiente.
En dicha cadena de formato, hemos utilizado un operador ternario para determinar si el número es "par" o "impar" a partir del resultado booleano que devuelve la funciónes_par_expresion_booleana()
al pasarle como argumento la variablenumero
.
De esta manera, hemos simplificado aún más nuestro código y lo hemos hecho más legible.
En la siguinte sección veremos otra palabra clave que nos permitirá abordar de diferente manera la lógica de nuestras expresiones condicionales y nuestras estructuras alternativas.