• [^] # Re: quinte

    Posté par (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 in renvoie un booléen (donc True ou False). Du coup ceci n'est pas du tout nécessaire:

    if (b in a)==True:
     return 1
    else :
     return 0

    Tu peux remplacer tout ce bloc par:

    return b in a

    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:

    >>> main = ['7 K', '8 T', '9 P', '10 T', '11 C']
    >>> type(main)
    <type 'list'>
    >>> type(main[0])
    <type 'str'>

    Il me dit que ton objet main est bien une liste, et que le premier élément main[0] est une chaîne de caractères (string).

    Si je continue:

    >>> b = sorted(main)
    >>> b
    ['10 T', '11 C', '7 K', '8 T', '9 P']

    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)

    >>> main = [(11, 'K'), (8, 'T'), (9, 'P'), (10, 'T'), (7, 'C')]
    >>> b = sorted(main)
    >>> main
    [(11, 'K'), (8, 'T'), (9, 'P'), (10, 'T'), (7, 'C')]
    >>> b
    [(7, 'C'), (8, 'T'), (9, 'P'), (10, 'T'), (11, 'K')]

    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.