TECH4GEEKS-LOGO-HEADER
Oxary Magazine
$10 – $15 / Week

Cómo usar el operador ternario de Python

Esta guía le enseñará cómo usar el operador ternario en Python. Aprenderá la sintaxis y codificará varios ejemplos para entender cómo funciona.

Comenzaremos observando cómo funciona la declaración condicional if-else, y luego aprenderemos cómo escribir una expresión equivalente usando el operador ternario.

A continuación, codificaremos algunos ejemplos y luego aprenderemos cómo emular el comportamiento del operador ternario de Python usando una tupla y un diccionario de Python. Finalmente, repasaremos algunos casos de uso en los que quizás prefiera usar el operador ternario.

¡Empecemos!

La declaración If-Else en Python: una revisión

Puede codificar iniciando un REPL de Python o en el editor de Python en línea de Geekflare.

La sintaxis genérica de la instrucción if-else en Python es la siguiente:

if condition:
    # do this
else:
    # do this

En el fragmento anterior, condición indica la condición que se va a comprobar. Si la condición se evalúa como True, se activa el bloque if. Si la condición se evalúa como Falsa, se ejecutan las declaraciones dentro del bloque else.

Aquí hay un ejemplo donde a la variable game_over se le asigna un valor booleano dependiendo de si el valor de la energía es menor o igual a cero.

  • Si la energía <= 0, game_over es True.
  • De lo contrario, game_over es falso.

El siguiente fragmento de código muestra cómo hacer esto usando sentencias if-else condicionales:

energy = -1

if energy <= 0:
    game_over = True
else:
    game_over = False

print(game_over)
# True

En este ejemplo, la energía es -1, que es menor que 0. Por lo tanto, game_over es True.

Operador ternario de Python: sintaxis y ejemplos

python-ternary-operator-1

Python tiene un operador ternario que funciona de manera muy similar al operador condicional ternario en lenguajes como C y C++. La sintaxis general para usarlo es:

expression1 if condition else expression2

Analicemos la sintaxis anterior:

  • condición: la condición a comprobar.
  • expresión1: la expresión para evaluar si la condición es verdadera.
  • expresión2: la expresión para evaluar si la condición es falsa.

Ahora identifiquemos qué expresión1, expresión2 y condición deberían ser de la versión if-else del código.

ternario-op-ex1

Poniendo todo esto junto, tenemos lo siguiente usando el operador ternario de Python.

game_over = True if energy <= 0 else False
print(game_over)
# True

Codifique otro ejemplo. Supongamos que tiene una librería y ofrece a los lectores un descuento en su compra en función de la frecuencia con la que visitaron su tienda en el último año.

  Cómo borrar las cookies en iPhone

Sea numVisits el número de visitas.

  • Si numVisits > 7, el porcentaje de descuento, discount_perc es 20.
  • De lo contrario, discount_perc es 5.

Usamos el operador ternario para asignar un valor a la variable discount_perc.

numVisits = 10

discount_perc = 20 if numVisits > 7 else 5

print(discount_perc)
# 20 (as numVisits = 10 which is > 7)

A continuación, aprenderemos cómo emular el operador ternario usando una tupla de Python y un diccionario.

Emulación de operador ternario con Python Tuple

Como todos los iterables en Python, las tuplas siguen una indexación cero. Entonces, si tiene dos elementos en una tupla, tuple_name[0] designa el primer elemento de la tupla y tuple_name[1] devuelve el segundo elemento de la tupla.

Los tipos de datos básicos en Python son enteros, flotantes, cadenas y booleanos. Python admite la conversión de tipos, lo que le permite representar un tipo de datos en particular mediante su representación equivalente en otro tipo de datos.

Inicie un REPL de Python y ejecute los siguientes ejemplos. Si intenta convertir números enteros a booleanos, notará lo siguiente:

  • bool(0) es falso.
  • bool() devuelve Verdadero.
>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True
>>> bool(10)
True

De manera similar, al convertir booleanos a enteros, tenemos lo siguiente:

>>> int(True)
1
>>> int(False)
0

Combinando la conversión de tipos y la indexación, podemos hacer lo siguiente:

  • Elemento en el índice 0 en la tupla: el valor a usar cuando la condición es falsa.
  • Elemento en el índice 1 de la tupla: el valor que se utilizará cuando la condición sea verdadera.

Usando lo anterior, tenemos lo siguiente:

>>> numVisits = 10
>>> discount_perc = (5,20)[numVisits > 7]
>>> discount_perc
# 20

Aquí, la condición numVisits > 7 es True porque numVisits es 10. Dado que int(True) es 1, el valor de discount_perc es 20, el elemento en el índice 1.

Emulación del operador ternario con el diccionario Python

Puede establecer Verdadero y Falso como claves de diccionario. Y puede establecer expresión1 y expresión2 como valores correspondientes a las claves Verdadero y Falso respectivamente.

some_dict = {True: expression1,
             False: expression2
            }

¿Que haces despues? Ahora si usas some_dict[condition], la expresión1 correspondiente a la clave True se evalúa si la condición es True. Y expresión2 se evalúa cuando la condición es falsa.

  Por qué el equipo remoto necesita un administrador de contraseñas [+4 Tools]

Codifiquemos el ejemplo de discount_perc (nuevamente) pero esta vez usando un diccionario de Python.

>>> numVisits = 10
>>> discount_dict = {True: 20, False:5}
>>> discount_perc = discount_dict[numVisits > 7]
>>> discount_perc
# 20

Aquí, numVisits = 10, que es mayor que 7. Por lo tanto, la condición numVisits > 7 es verdadera. Así que discount_dict[numVisits > 7] evalúa a discount_dict[True] cual es el valor 20

¿Debería usar siempre el operador ternario de Python?

¿Debería usar siempre el operador ternario de Python?

Hasta ahora hemos aprendido a usar el operador ternario. Pero, ¿debemos usar siempre el operador ternario? Bueno, el operador ternario podría no ser la mejor opción para todos los casos de uso. Esta sección explica cuándo debería preferir usar el operador ternario a las declaraciones if-else. También veremos cuándo deberíamos considerar usar la instrucción if-else en lugar del operador ternario.

Más conciso que los bloques If-Else

Como se mencionó, en Python, la expresión del operador ternario es más concisa que la declaración if-else. Por lo tanto, puede usarlo para verificar condiciones y evaluar expresiones condicionalmente sobre la marcha.

En el siguiente ejemplo, nums es una lista de 100 enteros generados aleatoriamente. Para cada uno de los 100 números, verificamos si es par o impar. Y esta evaluación ocurre en línea dentro de la cadena f.

import random

nums = [random.choice(range(100)) for i in range(10)]

for num in nums:
    print(f"{num} is {'even' if num%2==0 else 'odd'}")
# sample output

0 is even
56 is even
6 is even
53 is odd
62 is even
7 is odd
8 is even
77 is odd
41 is odd
94 is even

El operador ternario requiere la cláusula Else

Cuando se utilizan sentencias if-else condicionales, la cláusula else es opcional. Tomemos un ejemplo. La variable game_over se establece en True si la energía cae a un valor menor o igual a cero.

Sin embargo, si la energía es mayor que cero, la variable game_over nunca se inicializa. Por lo tanto, encontrará errores si intenta acceder a la variable game_over.

energy = 5
if energy <= 0:
    game_over = True

print(f"Is the game over? {game_over}")
Traceback (most recent call last):
  File "ternary_op.py", line 39, in <module>
    print(f"Is the game over? {game_over}")
NameError: name 'game_over' is not defined

Una forma de solucionar esto es establecer inicialmente game_over en False y actualizarlo a True si el nivel de energía es menor o igual a cero.

energy = 5
game_over = False
if energy <= 0:
    game_over1 = True

print(f"Is the game over? {game_over}")

Sin embargo, cuando se usa el operador ternario de Python equivalente al anterior, la cláusula else no es opcional. El operador ternario requiere que la expresión sea evaluada cuando la condición es falsa.

game_over = True if energy <= 0 else False

Si cambia lo anterior a game_over = True if energy <= 0 eliminando la parte else, encontrará un error de sintaxis como se muestra:

File "ternary_op.py", line 42
    game_over = True if energy <= 0
                                  ^
SyntaxError: invalid syntax

Para verificar múltiples condiciones, use declaraciones If-Else

Por ejemplo, cada pregunta en un conjunto de preguntas de entrevista de codificación está asociada con un puntaje de dificultad. Con base en este puntaje, asignamos uno de los tres niveles de dificultad: fácil, medio o difícil, a una pregunta en particular. Supongamos que tenemos lo siguiente:

  Modelo de arquitectura del protocolo TCP/IP - ¿Cómo funciona?

PuntajeNivel de dificultadMenos de 10fácilEntre 10 y 20 medioMás de 20difícil

Dado el puntaje de dificultad, puede obtener su nivel de dificultad usando el operador ternario de Python como se muestra:

score = 12

difficulty_level = "easy" if score < 10 else "hard" if score > 20 else "medium"

print(difficulty_level)
# medium

La expresión para el operador ternario en el bloque de código anterior tiene la siguiente forma:

expression1 if condition1 else expression2 if condition2 else expression3

Aunque conciso, es un poco difícil de leer y analizar. La siguiente imagen muestra cómo se produce el flujo de control en este caso.

ejemplo de operador ternario

El siguiente fragmento de código muestra una implementación equivalente usando declaraciones if-else. Como se ve, el flujo de control es mucho más fácil de entender y el código es más legible.

if score < 10:
    difficulty_level="easy"
elif score > 20:
    difficulty_level="hard"
else:
    difficulty_level="medium"

print(difficulty_level)

Por lo tanto, cuando tiene múltiples condiciones, debe usar bloques if-else en lugar del operador ternario. Esto asegura que el código sea fácil de leer y comprender.

Además, cuando necesite ejecutar varias declaraciones dependiendo de si la condición es verdadera o falsa, debería considerar usar la declaración if-else.

Conclusión

Aquí hay un resumen de lo que has aprendido en este tutorial.

  • En Python, el operador ternario se puede usar con la siguiente sintaxis: expresión1 si condición más expresión2.
  • Puede emular el comportamiento del operador ternario utilizando tuplas y diccionarios de Python.
  • Aunque el operador ternario puede ser una alternativa más concisa a los bloques if-else, debe asegurarse de que el código sea legible. Para mejorar la legibilidad del código, puede usar declaraciones if-else en lugar del operador ternario, especialmente cuando necesita encadenar varias condiciones.

A continuación, aprenda cómo consultar el tutorial Operadores iguales y no iguales en Python.

Fuente

Etiquetas

Comparte en:

Ultimos Post

Categorias

Lorem ipsum dolor sit amet, consectetur adipiscing elit eiusmod tempor ncididunt ut labore et dolore magna
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore