Une nouvelle fois, utilise les options de formattage de code quand tu postes, l'indentation est importante !!!
Bon je ré-explique, l'opérateur in renvoie un booléen (donc True ou False). Du coup ceci n'est pas du tout nécessaire:
if(bina)==True:return1else:return0
Tu peux remplacer tout ce bloc par:
returnbina
Bon, ensuite, il semble que tu appelles:
estQUINTE(['7 K','8 T','9 P','10 T','11 C'])
Donc quand tu es dans estQUINTE, ton paramètre main vaut ['7 K', '8 T', '9 P', '10 T', '11 C'].
Les crochets définissent une liste. Si je tape dans un interpréteur python:
Voilà, tu lui as demandé de trier ta main, il l'a triée... Mais pas comme tu souhaites. Il a fait du tri de chaines de caractères (c'est ce que tu lui donnes). Du coup, 11 C vient avant 7 K parce il compare lettre par lettre, et que le 1 est avant 7. Il ne peut pas comprendre que c'est le nombre 11, puisque tu lui passes une chaîne et pas un nombre.
Maintenant si on séparait les deux information dans un tuple (valeur, couleur) comme j'avais proposé plus haut ? valeur est un entier, et couleur est un caractère parmi ['C', 'K', 'T', 'P'], comme tu fais actuellement.
Là je mets une main dans le désordre (sinon c'est pas drôle)
Et voilà, la main a été triée d'après le premier champ du tuple: valeur. Maintenant ce qui va coincer c'est que tu ne peux pas comparer a et b directement. a ne contient que des valeurs, pas de couleurs. b contient valeurs et couleurs. Donc tu dois transformer b pour n'avoir que des valeurs aussi. Tu pourras ainsi comparer les deux objets en faisant ton b in a.
[^] # Re: quinte
Posté par liberforce (site web personnel, Mastodon) . En réponse au message POKER :determiner si une main est une couleur ou non. Évalué à 2. Dernière modification le 31 août 2018 à 18:41.
Une nouvelle fois, utilise les options de formattage de code quand tu postes, l'indentation est importante !!!
Bon je ré-explique, l'opérateur
inrenvoie un booléen (doncTrueouFalse). Du coup ceci n'est pas du tout nécessaire:Tu peux remplacer tout ce bloc par:
Bon, ensuite, il semble que tu appelles:
Donc quand tu es dans
estQUINTE, ton paramètremainvaut['7 K', '8 T', '9 P', '10 T', '11 C'].Les crochets définissent une liste. Si je tape dans un interpréteur python:
Il me dit que ton objet
mainest bien une liste, et que le premier élémentmain[0]est une chaîne de caractères (string).Si je continue:
Voilà, tu lui as demandé de trier ta main, il l'a triée... Mais pas comme tu souhaites. Il a fait du tri de chaines de caractères (c'est ce que tu lui donnes). Du coup,
11 Cvient avant7 Kparce il compare lettre par lettre, et que le 1 est avant 7. Il ne peut pas comprendre que c'est le nombre 11, puisque tu lui passes une chaîne et pas un nombre.Maintenant si on séparait les deux information dans un tuple
(valeur, couleur)comme j'avais proposé plus haut ?valeurest un entier, etcouleurest un caractère parmi ['C', 'K', 'T', 'P'], comme tu fais actuellement.Là je mets une main dans le désordre (sinon c'est pas drôle)
Et voilà, la main a été triée d'après le premier champ du tuple:
valeur. Maintenant ce qui va coincer c'est que tu ne peux pas compareraetbdirectement.ane contient que des valeurs, pas de couleurs.bcontient valeurs et couleurs. Donc tu dois transformerbpour n'avoir que des valeurs aussi. Tu pourras ainsi comparer les deux objets en faisant tonb in a.