• [^] # Re: quinte

    Posté par (site web personnel, Mastodon) . En réponse au message POKER :determiner si une main est une couleur ou non. Évalué à 3. Dernière modification le 03 septembre 2018 à 12:15.

    >>> main = [(11, 'K'), (8, 'T'), (9, 'P'), (10, 'T'), (7, 'C')]
    >>> b = sorted(main)
    >>> b
    [(7, 'C'), (8, 'T'), (9, 'P'), (10, 'T'), (11, 'K')]
    >>> del b['C']
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    TypeError: list indices must be integers, not str

    Lis les messages d'erreur, ils sont là te guider. Apprends aussi à décrire ton problème au lien de dire "ça ne marche pas". Bien souvent, mieux formuler ton problème te permettra de le comprendre et souvent de trouver la solution par toi même.

    Bon, revenons à nos moutons. Tu as donc dû avoir ce message d'erreur:

    TypeError: list indices must be integers, not str

    Traduction:

    Erreur de type: les index de listes doivent être des entiers, et pas des chaînes de caractères.

    C'est parce que dans une liste, les éléments sont ordonnés et accessibles par indice (leur position dans la liste): indice → valeur. Tu peux donc accéder à b[0], mais pas à b['C'].

    Exemple: effacer le 3ème élément d'une liste

    >>> my_list = [1, 2, 3, 4]
    >>> my_list
    [1, 2, 3, 4]
    >>> del my_list[2]
    >>> my_list
    [1, 2, 4]

    Les indices commencent à 0, donc le 1 se trouve à l'indice 0, le 2 se trouve à l'indice 1, le 3 se trouve à l'indice 2, et le 4 se trouve à l'indice 3. En demandant d'effacer l'élément à l'indice 2 avec del my_list[2], tu supprimes donc la valeur 3 de la liste.

    En revanche, dans un tableau associatif, les éléments ne sont pas ordonnés (l'ordre n'est pas conservé), et sont accessibles par une clé. La clé peut être du type que tu veux, et te permet d'accéder à la valeur associée: clé → valeur.

    Exemple ici avec un tableau associatif utilisant une chaîne de caractères comme clé. Voici comment supprimer la valeur 'coeur' du tableau.

    >>> couleur = {'C': 'coeur', 'K': 'carreau', 'T': 'trèfle', 'P': 'pique'}
    >>> couleur
    {'K': 'carreau', 'T': 'trèfle', 'C': 'coeur', 'P': 'pique'}
    >>> del couleur['C']
    >>> couleur
    {'K': 'carreau', 'T': 'trèfle', 'P': 'pique'}

    Revenons à ton problème. Ce que tu veux faire toi, c'est supprimer la couleur pour chaque carte de la main triée b. del b[0] ne fonctionnera pas, parce que b est une main, pas une carte. del b[0] supprimerait juste la première carte de la main triée.

    Je te conseille aussi avant d'aller plus loin de lire des tutoriels python, parce tu ne maîtrises pas les types de base du langage (listes, chaînes, tuples tableaux associatifs, etc.), ce qui te limite forcément. Autre chose, si tu veux voir les opérations possibles sur un objet, fais utilise la commande help. help(b) ou help(list) (puisque b est de type list) te donnera la liste des méthodes de b.
    https://docs.python.org/fr/3.5/tutorial/introduction.html