Python no tiene el ?: de otros lenguajes. Su ternario se escribe con palabras y en otro orden: primero el valor, luego la condición.
También te puede interesar
La forma
valor = 10
print("El valor es 10" if valor == 10 else "El valor es otro")salidaEl valor es 10
A if condición else B: vale A si la condición se cumple y B si no. Se lee casi en castellano, «esto si pasa tal cosa, si no lo otro». Como es una expresión, va donde va un valor: dentro de un print, en una asignación o en una f-string.
Donde más luce
n = 1
print(f"{n} archivo{'' if n == 1 else 's'}")
n = 3
print(f"{n} archivo{'' if n == 1 else 's'}")salida1 archivo 3 archivos
Elegir un valor pequeño en mitad de otra cosa: un plural, un signo, una unidad. Para eso está. Si cada rama tiene que hacer algo distinto, en vez de devolver un valor, lo que toca es un if normal.
El atajo de or, y por qué falla
nombre = "" print(nombre or "anónimo") x = 0 print(x or 10) print(10 if x is None else x)
salidaanónimo 10 0
Verás mucho valor or "por omisión": devuelve el primero si es verdadero y el segundo si no. Con cadenas va bien. Pero el cero también es falso, así que x or 10 convierte un cero legítimo en un diez. Si lo que quieres es «usa esto solo si no hay nada», pregunta por None con el ternario, como en la última línea.
a if x else b if y else c—, pero se lee fatal. Si hay más de una condición, usa un if con elif.Más información en inglés: The ternary operator in Python.
Todo el código se ejecutó con Python 3.14 en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.