Son otra forma de codificar los condicionales if
...else
resultado_si_True if
condición else
resultado_si_False
Se puede analizar una condición en una sola línea de código.
# Un condicional típico sin aplicar el operador ternario
x = 5
if x % 2 == 0:
print("es par")
else:
print("es impar")
es impar
# Usando un operador ternario
x = 5
print('es par') if x % 2 == 0 else print('es impar')
es impar
print
¶print('es par' if x % 2 == 0 else 'es impar')
es impar
print('es impar' if x % 2 else 'es par')
es impar
encendido = True
estado = "el led luce" if encendido else "el led está apagado"
estado
'el led luce'
edad = 20
mayor = 'Si' if edad >= 18 else 'No'
print(f"{mayor} es mayor de edad")
Si es mayor de edad
La asignación de valor puede usarse en una función o un método.
# este es el código sin aplicar el operador ternario
def mayor(edad):
if edad >= 18:
return 'Si'
return 'No'
edad = 16
print(f"{mayor(edad)} es mayor de edad")
No es mayor de edad
# este es el código con el operador ternario
def mayor(edad):
return 'Si' if edad >= 18 else 'No'
edad = 16
print(f"{mayor(edad)} es mayor de edad")
No es mayor de edad
La función ahora tiene un único return
que devuelve el resultado de analizar el operador ternario.
a = 9
b = 4
mayor = (b,a)[a>b]
print(f"El mayor es {mayor}")
El mayor es 9
También funciona con una lista de dos elementos, el primero para la opción False y el segundo para la opción True.
Podemos conseguirlo en una sola línea.
No es que sea el código más pitónico del mundo, pero funciona desde la versión Python 3.8 en adelante.
print(f"El mayor es {((b:=4),(a:=9))[a>b]}")
El mayor es 9
# veamos la versión de Python que estamos utilizando en Google Colab
from platform import python_version
print(python_version())
3.10.12
a = 8
if a > 5:
print("Es mayor")
Es mayor
if a:=8>5:
print("Es mayor")
Es mayor
from random import randint
n = randint(0, 10)
if n >= 5:
print(f"Con un {n} está Aprobado")
else:
print(f"Con un {n} está Suspenso")
Con un 5 está Aprobado
print(f"Con un {n} está Aprobado" if (n := randint(0, 10)) >= 5 else (f"Con un {n} está Suspenso"))
Con un 3 está Suspenso