Opérateur ternaire
I. Expression⚓︎
Expression
Dans une première approche, on peut considérer qu'une expression est quelque chose qui peut être évaluée.
Exemples
3 + 2est une expression évaluée à5.5 == 3est une expression (booléenne) évaluée àFalsea % 2est une expression évaluée au reste de la division euclidienne deapar 2x = 5n'est pas une expression. C'est une instruction (ici une affectation)5est une expression évaluée à ...5"Hello"est une expression évaluée à ..."Hello"
II. Expression conditionnelle⚓︎
Syntaxe et définition
La syntaxe est la suivante :
expression_1 if condition else expression_2
avec : expression_1, condition et expression_2 qui doivent être des expressions.
À vous de jouer 1
Exécuter le script ci-dessous, puis faire différents essais en console (par exemple appeler mineur_majeur(15)).
Que s'est-il passé ?
Dans cet exemple "majeur" if age >= 18 else "mineur" est une expression qui est évaluée à "majeur" si la condition age >= 18est vraie et à "mineur"sinon.
Nous aurions pu écrire de façon équivalente :
II. Le else
À vous de jouer 2
1. Tester les codes suivants écrits par Alice et Bob.
Code d'Alice :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Code de Bob
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
2. Que s'est-il passé ?
Solution
-
Dans la fonction
majeur_v1si la conditionage >= 18est vraie la valeur "majeur" est renvoyée, et sinon, comme on ne rencontre pas dereturnla valeurNoneest renvoyée. -
Dans la fonction
majeur_v2il n'est pas renvoyé une expression comme l'a peut-être imaginé Bob. En effet, une expression doit toujours pouvoir être évaluée. Comme le message d'erreur le montre bien, il y a donc une erreur de syntaxe en ligne 2.
❤️ À retenir
Dans une expression conditionnelle la présence du else est obligatoire.
Pour que A if B else C soit valide, il faut que A, B et C soient des expressions.
❤️ Vocabulaire usuel
Une expression conditionnelle , bien que ce soit une expression, est très souvent appelée opérateur ternaire
III. Cas d'usages⚓︎
Utilisation comme valeur renvoyée par une fonction⚓︎
Dans une fonction
Comme nous l'avons vu précédemment, une fonction peut renvoyer une expression conditionnelle.
À vous de jouer 3
Exécuter et tester :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Utilisation comme valeur affectée à une variable⚓︎
À vous de jouer 4
Tester :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Que s'est-il passé ?
Dans cet exemple l'expression conditionnelle "majeur" if age >= 18 else "mineur"a été évaluée à "mineur"qui a ensuite été affecté à la variable categorie
À vous de jouer 5
Bob a écrit le code suivant qui est faux. Vous devez le corriger.
Aide
Pour que A if B else C soit valide, il faut que A, B et C soient des expressions.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
IV. Ne pas confondre avec les écritures en compréhension⚓︎
Les listes en compréhension
La syntaxe utilisée pour les listes en compréhension peut rappeler celle de l'opérateur ternaire, mais correspond à une écriture de filtre. Dans ce cas-là le else est interdit.
À vous de jouer 6
Exécuter le code ci-dessous. Vous pouvez le modifier à votre idée pour réaliser différents essais.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)