Bonjour à tout le monde !

Je cherchais jusque-là vainement une occasion d'essayer Python et je viens d'en trouver une : j'aimerais réaliser un petit script de tour de parole (en gros que le script m'indique quelle personne a le moins parlé pour la faire passer en premier lors d'un tour de parole).

J'ai donc créé une classe "Presents" destinée à répertorier les pseudos des personnes ainsi que leur temps de parole (je voudrais me laisser la possibilité de rajouter d'autres critères plus tard). Et j'ai mis dans une liste chaque Présent créé (donc avec son attribut de pseudo et son attribut de temps de parole).

Mais je rencontre le problème suivant : dans ma liste, j'ai l'adresse de l'objet. Donc quand je veux comparer ou chercher des choses dans cette liste (par exemple vérifier que tel pseudo existe dans la liste), je dois rajouter à chaque item l'attribut dont j'ai besoin (soit le pseudo, soit le temps de parole) pour pouvoir faire cela. Et je ne sais pas si c'est possible, et, si c'est possible, comment m'y prendre.

Est-ce que j'utilise une mauvaise manière de faire ? Pourriez-vous m'aider ?

Voici mon code :
Tour_de_parole.py

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Programme de tour de parole
liste_de_presents = []
tour_de_parole_ouvert = []


# On définit une classe pour chaque individu
class Presents:
    total = 0  # compte le nombre de présents
def __init__(self, pseudo, tps_parole=0):
        Presents.total += 1  # on incrémente à chaque instance de classe créée
        self.pseudo = pseudo
        self.tps_parole = tps_parole


def gerer_liste_de_presents():
    nombre_de_presents = input("Combien de personnes à ajouter aux présent.es ? : ")
    for i in range(int(nombre_de_presents)):
        pseudo_individu = input("Quel pseudo ? : ")
        pseudo_individu = Presents(pseudo_individu)
        liste_de_presents.append(pseudo_individu)


def tour_de_parole():
    tour_de_parole_ouvert.clear()
    fermer_le_tour = "n"
    while fermer_le_tour != "o":
        nombre_inscrits = input("Combien de personnes veulent s'inscrire ? : ")
        for _ in range(int(nombre_inscrits)):
            inscrits_tour_parole = input("Qui veut parler ? : ")
            while inscrits_tour_parole not in liste_de_presents:
                inscrits_tour_parole = input("Cette personne n'est pas inscrite. Qui veut parler ? : ")
            tour_de_parole_ouvert.append(inscrits_tour_parole)
            fermer_le_tour = input("Fermer le tour de parole ? (o/n) : ")


gerer_liste_de_presents()
tour_de_parole()
Donc quand je compare les inscrits_tour_parole à liste_de_presents, je compare par exemple le pseudo "Pierre" à "[<__main__.Presents object at 0x7f0213717fd0>" alors que je devrais le comparer aux items de la liste de la façon suivante : item.pseudo. Et je n'arrive pas à faire ce que je voudrais.