logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 16-08-2019 14:56:57

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

[Résolu] Python test ternaire ne fonctionne pas

Bonjour les amie(s) smile

Je suis en train d'apprendre le Python 3 (version 3.7.3) et actuellement je suis au chapitre des conditions (il y a encore du job... tongue )

Voilà un test (qui fonctionne):


age=int(input("Quel votre âge? "))

if age == 18:
  print("Vous avez 18 ans!")
else:
  print("Vous n'avez pas le bon âge")
 



Par contre si j'écris le code ainsi (condition ternaire) ça ne fonctionne pas ?


age=int(input("Quel votre age? "))
text = ("Vous avez 18 ans!", "Vous n'avez pas le bon âge")[age == 18]
print(text)
 




Pourquoi ???

EDIT:

Lien de vidéo qui explique ce sujet: https://www.youtube.com/watch?v=_AgUOsvMt8s (avancer vidéo à 7:30)

Dernière modification par Slyfox (16-08-2019 16:17:00)

Hors ligne

#2 16-08-2019 15:31:24

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu] Python test ternaire ne fonctionne pas

premier commentaire sous la vidéo :

Épinglé par Graven - Développement
quark67000
il y a 7 mois
À partir de 7:34, vous introduisez les conditions ternaires. Mais vous le faites avec une notation obscure (qui vous a d'ailleurs induit en erreur, puisque comme signalé dans d'autres commentaires, vous avez inversé la partie « condition vraie » et « condition fausse » en l'employant). La notation que vous avez employé utilise la notion de « tuple », non encore introduite dans vos vidéos.
Il vaut mieux utiliser la syntaxe suivante (qui d'ailleurs est plus en phase avec la philosophie de Python) : condition_vraie if condition else condition_fausse (voir http://book.pythontips.com/en/latest/te … ators.html qui explique bien pourquoi la notation que vous avez employé est déconseillée).



L'auteur de la vidéo a inversé :

result = (faux, vrai)[a > b]




la doc python semble déconseiller de telles notations :
https://docs.python.org/3.3/faq/program … y-operator

Dernière modification par David5647 (16-08-2019 15:32:31)

Hors ligne

#3 16-08-2019 15:40:47

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] Python test ternaire ne fonctionne pas

David5647 a écrit :

la doc python semble déconseiller de telles notations :


Ah oui ! C'est comme les possibilités d'utiliser des patterns de la programmation
fonctionnelle (avec reduce, map et les fonctions dans les modules itertools et functools).
C'est dans le langage, dans la librairie standard, mais c'est considéré comme une
mauvaise façon de faire du python tongue
Vraiment, ils ont une logique bien à eux, les pythoneux… </troll>

Hors ligne

#4 16-08-2019 15:44:37

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Python test ternaire ne fonctionne pas

Je ne connais pas python, mais si je me réfère à mes connaissances en C, cette "condition ternaire" ressemble à un gros hack bien sale qui utilise une valeur booléenne vrai/faux comme index numérique dans un tableau de chaînes de caractères. J'ai vu mieux.

D'après quelques tests, True est équivalent à 1 et False est équivalent à 0. Il faudrait donc inverser la condition ou permuter les deux chaînes.

Dernière modification par raleur (16-08-2019 15:58:03)


Il vaut mieux montrer que raconter.

Hors ligne

#5 16-08-2019 15:44:57

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : [Résolu] Python test ternaire ne fonctionne pas

Hello les amis smile

Merci pour vos précieuses informations ! cool

Donc je vais me tenir à la forme conditionnelle classique et peut-être changer de tuto.

Amicalement Slyfox

Dernière modification par Slyfox (16-08-2019 16:16:38)

Hors ligne

#6 16-08-2019 15:49:58

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] Python test ternaire ne fonctionne pas

raleur a écrit :

C'est donc l'inverse du C


Pour info, en C, une valeur vraie est une valeur différente de 0. Par contre
quand on se sert des retours des appels systèmes, c'est souvent la valeur 0
qui indique un succès.

Hors ligne

#7 16-08-2019 15:55:25

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] Python test ternaire ne fonctionne pas

Pour apprendre python je conseille ce mooc :
https://www.fun-mooc.fr/courses/course- … on02/about
J'ai suivi le mooc sur ocaml sur la même plateforme, il avait un contenu pédagogique
excellent.

D'après ce que j'ai entendu celui sur python est assez facile à suivre, pour
avoir un peu regardé, ça a l'air assez complet.

Hors ligne

#8 16-08-2019 15:56:33

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Python test ternaire ne fonctionne pas

Je n'a pas fait de C depuis trop longtemps, mes souvenirs me trahissent... Merci d'avoir rectifié.

Il vaut mieux montrer que raconter.

Hors ligne

#9 16-08-2019 15:59:11

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : [Résolu] Python test ternaire ne fonctionne pas

Je passe ce sujet en résolu.

Edit: Merci enicar pour le lien.

Dernière modification par Slyfox (16-08-2019 16:18:58)

Hors ligne

#10 16-08-2019 17:31:43

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] Python test ternaire ne fonctionne pas

Slyfox a écrit :

Edit: Merci enicar pour le lien.


j'en ai d'autres sur python si ça t'intéresse.

Hors ligne

#11 16-08-2019 20:55:43

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : [Résolu] Python test ternaire ne fonctionne pas

enicar a écrit :

Slyfox a écrit :

Edit: Merci enicar pour le lien.


j'en ai d'autres sur python si ça t'intéresse.




Actuellement j'ai trouvé ceux-ci et je ne sais pas encore lequel est le "mieux".

Vidéo Youtube de MatteReal : https://www.youtube.com/watch?v=FPfzGFYuOLU
Vidéo Youtbe de Graven: https://www.youtube.com/watch?v=psaDHhZ0cPs
Apprendre à programmer avec Python" de Gérard Swinnen en PDF: https://inforef.be/swi/download/apprendre_python3_5.pdf

Alors oui, si tu as un conseil ou d'autre lien je suis preneur. smile

Hors ligne

#12 16-08-2019 21:31:06

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] Python test ternaire ne fonctionne pas

L'année dernière j'ai perdu tous mes bookmarks de firefox. Bref tout ça pour
dire que les seuls trucs que j'avais à te proposer sur python, c'est le mooc
dont j'ai déjà parlé et le bouquin de Gérard Swinnen que tu connais déjà.
Les quelques pages que j'ai parcouru m'ont donné une bonne impression.
C'est un cours destiné à des débutants en programmation, du coup je n'ai pas
poursuivi la lecture, ça ne correspond pas à mon besoin.
Mais avec ces deux références, tu as déjà de quoi faire.
Je ne suis pas fan des cours en vidéo (bien que les cours du mooc
soient sous cette forme), donc je n'ai rien à proposer.

Hors ligne

#13 16-08-2019 22:03:07

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : [Résolu] Python test ternaire ne fonctionne pas

Merci smile

EDIT

Sinon je suis tomber sur ce PDF: https://perso.limsi.fr/pointal/_media/p … ython3.pdf
Personnellement j'apprécie le résumer "condensé" des pages 131 à 135 pour un bon memo des commandes.

Dernière modification par Slyfox (16-08-2019 22:37:15)

Hors ligne

Pied de page des forums