Parmi les opérateurs en Python, l’opérateur ternaire est un outil particulièrement efficace qui permet d’écrire une instruction conditionnelle en une seule ligne. Cet article, bien que hors programme stricto sensu, montre comment l’opérateur ternaire peut enrichir notre compréhension des concepts de logique, de définitions de fonctions par morceaux, et même de suites récurrentes. Nous allons donc étudier la définition et la syntaxe de l’opérateur ternaire, avant de développer les conditions envisageables à implémenter dans cet opérateur. Nous montrerons ensuite son application en analyse et en probabilités. Pour aller plus loin, nous étudierons brièvement les opérateurs ternaires imbriqués.
Définition et syntaxe
Définition : un opérateur est dit ternaire s’il agit sur trois opérandes (cette définition ne concerne d’ailleurs pas que le langage de programmation Python). Éclaircissons cette définition : en Python spécifiquement, la forme est la suivante :
Cette structure est équivalente à une instruction if/else classique, mais condensée sur une seule ligne, et cet opérateur est généralement peu évoqué dans les programmes de prépa ECG.
Conditions envisageables
L’opérateur ternaire accepte tout type d’expression booléenne. Pour rappel, une expression booléenne est une expression qui donne une valeur booléenne (c’est-à-dire à laquelle elle est certainement vraie ou fausse).
Voici quelques exemples classiques notés de 1 à 4 :
- Il peut tout d’abord s’agir d’une simple comparaison entre deux valeurs.
- Ou encore d’une combinaison logique à l’aide de l’opérateur « et » (de la même manière que quand tu as étudié en début de première année le chapitre sur la logique mathématique, une telle expression est « VRAI » si et seulement si chacune des deux propositions est vraie simultanément).
- On peut également faire de manière plus compliquée un appel à une fonction que l’on aura pris le soin de définir préalablement.
- Enfin, qui dit opérateur ET dit opérateur OU qui permet de lier deux propositions (celle-ci étant « VRAI » si au moins une des deux est « VRAI »).
Cette liste est évidemment non exhaustive et doit laisser place à la créativité du codeur/préparationnaire !
Voici en Python comment coder ces commandes très simples :
Application en analyse et en probabilités
Analyse : fonctions définies par morceaux et suites
Prenons la fonction :
f(x) =
\begin{cases}
x^2 & \text{si } x \geq 0 \\
-x & \text{si } x < 0
\end{cases}
\]
On peut alors l’implémenter en Python grâce aux opérateurs ternaires :
Ce type de définition par morceaux, courant dans les fonctions à points anguleux (non dérivables en 0), est directement transposable via l’opérateur ternaire.
Probabilités : fonctions indicatrices et fonctions de répartition discrètes
Les fonctions indicatrices s’écrivent pour rappel de la manière suivante :
\[
\mathbf{1}_A(x) =
\begin{cases}
1 & \text{si } x \in A \\
0 & \text{sinon}
\end{cases}
\]
Python permet alors une implémentation directe des fonctions indicatrices, puisque les opérateurs ternaires reviennent à la base des probabilités (« l’évènement est-il réalisé ou non ? ») :
Simulation d’une fonction de répartition discrète
L’opérateur ternaire permet aussi de simuler une variable aléatoire discrète :
\[
X \sim \mathcal{B}(p) \quad \text{avec }
\mathbb{P}(X = 1) = p, \quad
\mathbb{P}(X = 0) = 1 – p
\] (pour rappel de la définition de cette loi de probabilité)
On peut donc simuler une telle loi grâce aux opérateurs ternaires (il existe évidemment une commande pour programmer directement cette loi, supposons que nous ne la connaissons pas).
Pour aller plus loin : opérateurs ternaires imbriqués et limite du raisonnement
Voyons désormais un certain nombre de notions mathématiques que l’on peut programmer à l’aide des opérateurs ternaires pour gagner en efficacité !
Construction de suites
Définissons pour les besoins de l’explication une suite alternée :
\[
\begin{cases}
u_0 = 0 \\
u_{n+1} =
\begin{cases}
u_n + 1 & \text{si } n \text{ est pair} \\
u_n – 1 & \text{si } n \text{ est impair}
\end{cases}
\end{cases}
\]
Son implémentation en Python est alors relativement aisée grâce aux opérateurs ternaires :
Pour rappel, une manière accessible de savoir si une variable est paire est de vérifier si le reste de sa division euclidienne par \(2\) donne \(0\). C’est exactement ce que nous avons mis en place ici grâce à la proposition « i % 2 == 0 ».
Opérateurs ternaires imbriqués
Il est possible d’imbriquer plusieurs ternaires dans une même expression, on parle alors d’opérateurs ternaires imbriqués. Cela permet de simuler une succession de conditions, bien que cela nuise parfois à la lisibilité :
Limites d’un tel raisonnement
L’opérateur ternaire est lié à la notion de programmation fonctionnelle dont la portée est d’exprimer la logique par des expressions plutôt que des blocs d’instructions. Mais le penchant négatif est que ce mode de raisonnement affecte la lisibilité du script, comme tu peux le constater dans l’exemple précédent : ce code est fonctionnel, mais devient difficile à maintenir. Il vaut mieux dans ce cas envisager un if/else/elif classique avec des renvois à la ligne.
Conclusion
Bien que l’opérateur ternaire soit hors programme ECG, il est très facilement abordable et permet de consolider, de compacter ses scripts Python pour améliorer son efficacité de traitement des questions en Python ainsi que pour modéliser les fonctions définies par morceaux, certaines suites, et quelques variables aléatoires réelles ou à densité.



