Ce guide vous apprendra à utiliser l'opérateur ternaire en Python. Vous apprendrez la syntaxe et coderez plusieurs exemples pour comprendre son fonctionnement.
Nous allons d'abord voir comment fonctionne l'instruction conditionnelle if-else, puis apprendre à écrire une expression équivalente à l'aide de l'opérateur ternaire.
Ensuite, nous allons coder quelques exemples et apprendre à émuler le comportement de l'opérateur ternaire de Python à l'aide d'un tuple et d'un dictionnaire Python. Enfin, nous examinerons certains cas d'utilisation où vous préféreriez utiliser l'opérateur ternaire.
Commençons!
L'instruction If-Else en Python : un examen
Vous pouvez co-coder via un REPL Python ou dansL'éditeur Python en ligne de Geekflare.
La syntaxe générique de l'instruction if-else en Python est la suivante :
si condition : # faire ceciautre : # faire ceci
Dans l'extrait ci-dessus,condition
indique la condition à vérifier. Si la condition est évaluée àVrai
, alors le bloc if est activé. Si la condition est évaluée àFAUX
, les instructions du bloc else sont exécutées.
Voici un exemple où lejeu terminé
la variable reçoit une valeur booléenne selon que la valeur deénergie
est inférieur ou égal à zéro.
- Si
énergie <= 0
,jeu terminé
estVrai
. - Ander,
jeu terminé
est faux.
L'extrait de code suivant montre comment procéder à l'aide des instructions conditionnelles if-else :
energy = -1if energy <= 0: game_over = Trueelse: game_over = Falseprint(game_over)# True
Dans cet exempleénergie
est -1 qui est inférieur à 0. Doncjeu terminé
est vrai.
Opérateur ternaire Python : syntaxe et exemples

Python a un opérateur ternaire un peu comme leopérateur conditionnel ternairedans des langages comme C et C++. La syntaxe générale pour l'utiliser est la suivante :
expression1 si condition sinon expression2
Analysons la syntaxe ci-dessus :
condition
: La condition à vérifier.expression1
: L'expression à évaluer si la condition est vraie.expression2
: L'expression à évaluer si la condition est fausse.
Nous allons maintenant identifier ceexpression1
,expression2
danscondition
doit provenir de la version if-else du code.

Tout bien considéré, nous avons ce qui suit en utilisant l'opérateur ternaire de Python.
game_over = True if energy <= 0 else Falseprint(game_over)# True
Codez un autre exemple. Disons que vous gérez une librairie et que vous accordez aux lecteurs une remise sur leur achat en fonction du nombre de fois qu'ils ont visité votre magasin au cours de l'année écoulée.
En retardnombre de visites
indiquer le nombre de visites.
- Si
nombre de visites > 7
, le pourcentage de remise,discount_perc
a 20 ans. - Ander,
discount_perc
est 5.
Nous utilisons l'opérateur ternaire pour attribuer une valeur à ladiscount_perc
variable.
numVisits = 10discount_perc = 20 if numVisits > 7 else 5print(discount_perc)# 20 (comme numVisits = 10 qui est > 7)
Ensuite, nous apprenons à émuler l'opérateur ternaire à l'aide d'un tuple Python et d'un dictionnaire.
Emulation de l'opérateur ternaire avec Python Tuple
Comme tous les itérables en Python, les tuples suivent l'indexation nulle. Donc, si vous avez deux éléments dans un tuple,nom_tuple[0]
désigne le premier élément du tuple etnom_tuple[1]
renvoie le deuxième élément du tuple.
Les types de données de base en Python sont entier, flottant, chaîne et booléen. Python prend en charge le transtypage qui vous permet de représenter un type de données particulier via sa représentation équivalente dans un autre type de données.
Démarrez un REPL Python et exécutez les exemples suivants. Si vous essayez de convertir des entiers en booléens, vous voyez ce qui suit :
bool(0)
estFAUX
.bool(
Retour) Vrai
.
>>> bool(0)Faux>>> bool(1)Vrai>>> bool(-1)Vrai>>> bool(10)Vrai
De même, lors de la conversion de booléen en entiers, nous avons :
>>> entier(vrai)1>>> entier(faux)0
La compilation du typage et de l'indexation nous permet de :
- Élément à l'index 0 dans le tuple : La valeur à utiliser lorsque le
condition
estFAUX
. - Élément à l'index 1 dans le tuple : La valeur à utiliser lorsque le
condition
estVrai
.
Sur la base de ce qui précède, nous avons ce qui suit :
>>> numVisits = 10>>> discount_perc = (5,20)[numVisits > 7]>>> discount_perc# 20
Ici, l'étatnombre de visites > 7
estVrai
commenombre de visites
est 10. Parce queentier (vrai)
est 1, la valeur dediscount_perc
est 20, l'élément à l'index 1.
Emulation de l'opérateur ternaire avec le dictionnaire Python
Vous pouvez définirVrai
dansFAUX
comme les clés du dictionnaire. Et vous pouvez définirexpression1
dansexpression2
comme les valeurs correspondant aux touchesVrai
dansFAUX
, Respectivement.
some_dict = {Vrai : expression1, Faux : expression2 }
Qu'est ce que tu fais après? Si vous utilisez maintenantsome_dict[condition]
,expression1
correspond à laVrai
clé est évaluée comme lacondition
estVrai
. Dansexpression2
est évalué lorsque lecondition
estFAUX
.
Codons le codediscount_perc
exemple (encore) mais cette fois en utilisant un dictionnaire Python.
>>> numVisits = 10>>> discount_dict = {True : 20, False : 5}>>> discount_perc = discount_dict[numVisits > 7]>>> discount_perc# 20
Icinombre de visites = 10
qui est supérieur à 7. Par conséquent, la condition estnombre de visites > 7
estVrai
. Comme çadiscount_dict[numVisites > 7]
évalue àdiscount_dict[Vrai]
c'est la valeur 20.
Devriez-vous toujours utiliser l'opérateur ternaire Python ?

Jusqu'à présent, nous avons appris à utiliser l'opérateur ternaire.Mais doit-on toujours utiliser l'opérateur ternaire ?Eh bien, l'opérateur ternaire n'est peut-être pas le meilleur choix pour tous les cas d'utilisation. Cette section explique quand vous devriez préférer utiliser l'opérateur ternaire plutôt que les instructions if-else. Nous discutons également du moment où nous devrions envisager d'utiliser l'instruction if-else au lieu de l'opérateur ternaire.
Plus concis que les blocs If-Else
Comme mentionné précédemment, l'expression de l'opérateur ternaire en Python est plus concise que l'instruction if-else. Par conséquent, vous pouvez l'utiliser pour vérifier les conditions et évaluer conditionnellement les expressions à la volée.
Dans l'exemple suivantNombres
est une liste de 100 entiers générés aléatoirement. Pour chacun des 100 nombres, on vérifie s'il est pair ou impair. Et cette évaluation a lieu en ligne dans la chaîne f.
import randomnums = [random.choice(range(100)) for i in range(10)]for num in nums: print(f"{num} is {'even' if num%2==0 else 'odd'} ")
# exemple de sortie0 est pair56 est pair6 est pair53 est impair62 est pair7 est impair8 est pair77 est impair41 est impair94 est pair
L'opérateur ternaire nécessite la clause Else
Lors de l'utilisation des instructions conditionnelles if-else, la clause else est facultative. Prenons un exemple. Lejeu terminé
variable est définie surVrai
si laénergie
tombe à une valeur inférieure ou égale à zéro.
Comme leénergie
est supérieur à zéro, lejeu terminé
variable n'est jamais initialisée. Vous rencontrerez donc des erreurs lorsque vous tenterez d'accéder aujeu terminé
variable.
energy = 5if energy <= 0 : game_over = Trueprint(f"Le jeu est-il terminé ? {game_over}")
Traceback (appel le plus récent en dernier) : Fichier "ternary_op.py", ligne 39, dans print(f"Is the game over ? {game_over}")NameError : le nom 'game_over' n'est pas défini
Une façon de résoudre ce problème consiste à configurerjeu terminé
DésagréableFAUX
initialement et mettez-le à jourVrai
si le niveau d'énergie est inférieur ou égal à zéro.
energy = 5game_over = Falseif energy <= 0 : game_over1 = Trueprint(f"Le jeu est-il terminé ? {game_over}")
Cependant, lors de l'utilisation de l'opérateur ternaire Python équivalent de ce qui précède, la clause else n'est pas facultative. L'opérateur ternaire exige que l'expression soit évaluée lorsque lecondition
estFAUX
.
game_over = Vrai si énergie <= 0 sinon Faux
Si vous changez ce qui précède engame_over = Vrai si énergie <= 0
en supprimant la partie else, vous rencontrez une erreur de syntaxe, comme indiqué :
Fichier "ternary_op.py", ligne 42 game_over = Vrai si énergie <= 0 ^SyntaxError : syntaxe invalide
Utiliser des instructions If-Else pour vérifier plusieurs conditions
Prenons l'exemple : chaque question d'une série de questions d'entrevue de codage est associée à un score de difficulté. En fonction de ce score, nous attribuons l'un des trois niveaux de difficulté : facile, moyen ou difficile, à une question particulière. Supposons que nous ayons les éléments suivants :
Score | Niveau de difficulté |
Moins de 10 | Et c'est très facile |
Entre 10 et 20 | moyen |
Plus de 20 | dur |
Compte tenu de la difficulté, vous pouvez obtenir la difficulté en utilisant l'opérateur ternaire Python comme indiqué :
score = 12difficulty_level = "easy" if score < 10 else "hard" if score > 20 else "medium"print(difficulty_level)# medium
L'expression de l'opérateur ternaire dans le bloc de code ci-dessus a la forme suivante :
expression1 si condition1 sinon expression2 si condition2 sinon expression3
Bien que concis, il est un peu difficile à lire et à analyser. La figure suivante montre comment le flux de contrôle se produit dans ce cas.

L'extrait de code suivant montre une implémentation équivalente utilisant des instructions if-else. Comme on peut le voir, le flux de contrôle est beaucoup plus facile à comprendre et le code est plus lisible.
if score < 10: difficult_level="easy"elif score > 20: difficult_level="hard"else: difficult_level="medium"print(difficulty_level)
Par conséquent, si vous avez plusieurs conditions, vous devez utiliser les blocs if-else au lieu de l'opérateur ternaire. Cela garantit que le code est facile à lire et à comprendre.
De plus, si vous devez exécuter plusieurs instructions selon que la condition est vraie ou fausse, vous pouvez envisager d'utiliser l'instruction if-else.
Conclusion
Voici un résumé de ce que vous avez appris dans ce didacticiel.
- En Python, l'opérateur ternaire peut être utilisé avec la syntaxe suivante :
expression1 si condition sinon expression2
. - Vous pouvez imiter le comportement de l'opérateur ternaire à l'aide de tuples et de dictionnaires Python.
- Bien que l'opérateur ternaire puisse être une alternative plus concise aux blocs if-else, assurez-vous que le code est lisible. Pour améliorer la lisibilité du code, vous pouvez utiliser les instructions if-else au lieu de l'opérateur ternaire, en particulier lorsque vous devez enchaîner plusieurs conditions.
Ensuite, apprenez à regarder le tutoriel suropérateurs égaux et non égaux en Python.