« L’opérateur ternaire en Python peut être utilisé en utilisant des tuples. Il prend les expressions à évaluer et une instruction conditionnelle booléenne. L’expression à renvoyer dépend de la condition booléenne. Si la condition est vraie, la première valeur est renvoyée et si l’expression est fausse, la deuxième valeur est renvoyée. »
Exemple :
a,b =12,43 temp =(a*2,b/2)[a<b]print(temp)
Production:
21.5
Je ne comprends pas ?
a est bien plus petit que b ! Donc, a<b est vrai : c'est donc la première valeur qui doit être renvoyée, soit a*2 = 24.
Pourquoi le résultat est-il 21.5, c'est-à-dire la 2e valeur (b/2) ?
« L’opérateur ternaire en Python peut être utilisé en utilisant des tuples. Il prend les expressions à évaluer et une instruction conditionnelle booléenne. L’expression à renvoyer dépend de la condition booléenne. Si la condition est vraie, la première valeur est renvoyée et si l’expression est fausse, la deuxième valeur est renvoyée. »
Tu devrais citer tes sources Je trouve ce texte ici et visiblement il y est question de l'émulation de l'opérateur ternaire quand il n'existait pas en Python, c'est à dire avant Python 2.5 ! donc il il a sans doute plus de 15 ans !
chrisblues59 a écrit:
a,b =12,43 temp =(a*2,b/2)[a<b]print(temp)
Ton code est mal rentré dans l'interface du forum, ça devrait être sur trois lignes et avec la coloration syntaxique.
Aujourd'hui encore, il n'exista pas vraiment d'opérateur ternaire, c'est plus un one-liner : x = a if condition else b.
Aussi l'astuce présentée ici x = (b, a)[condition] a quelques défauts dont le plus génant étant l'évaluation des 2 éléments avant l'affectation alors qu'avec une vraie condition seule la valeur affectée est évaluée.
>>> a, b = 12, 43
>>> print (a<b)
True
>>> (a*2, b/2)[a<b]
21.5
>>>
Voilà, comme ça, c'est mieux !
Merci !
.H.D.1. a écrit:
Aujourd'hui encore, il n'exista pas vraiment d'opérateur ternaire, c'est plus un one-liner : x = a if condition else b.
Je ne vois pas en quoi ça n'en fait pas un vraiopérateur ternaire au même titre que celui du C même si en Python, le nom officiel est opérateur conditionnel. Que ce soit un oneliner est parfaitement normal, c'est le propre de tout retour d'un opérateur, c'est d'ailleurs pareil en C.
Je ne vois pas en quoi ça n'en fait pas un vraiopérateur ternaire au même titre que celui du C même si en Python, le nom officiel est opérateur conditionnel. Que ce soit un oneliner est parfaitement normal, c'est le propre de tout retour d'un opérateur, c'est d'ailleurs pareil en C.
Dans le sens où ce n'est pas un opérateur dédié, mais oui c'est admis qu'il s'agit bien de la forme ternaire.
Opérateur ternaire
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères