Bonjour à tous,

Voici les consignes de l'exercice où je suis bloqué: "Créez une nouvelle classe, SMSStore. Avec cette classe vous pourrez instancier des objets SMSStore, qui peuvent stocker des messages SMS, similaire à une boîte de réception sur un téléphone:

Ce store ou stockage peut contenir plusieurs messages SMS (son état interne sera juste une liste de messages). Chaque message sera représenté comme un tuple: (has_been_viewed, from_number, time_arrived, text_of_SMS). Une instance my_inbox de la classe SMSStore représentant une boîte de réception doit pouvoir comprendre les messages suivants:

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
my_inbox.add_new_arrival(from_number, time_arrived, text_of_SMS)
    # Crée un nouveau tuple SMS, ajouté après les autres
    # dans le stockage. Une fois créé, son attribut
    # has_been_viewed est mis à False.
 
my_inbox.message_count()
    # Retourne le nombre de messages SMS dans my_inbox
 
my_inbox.get_unread_indexes()
    # Retourne une list des indexes de tous les messages SMS encore non lus (not-yet-viewed)
 
my_inbox.get_message(i)
    # Retourne (from_number, time_arrived, text_of_sms) pour le message[i]
    # Change aussi son état à "has been viewed".
    # S'il n'y a pas de message à la position i, retorune None
 
my_inbox.delete(i)
    # Supprime le message SMS se trouvant à l'index i
 
my_inbox.clear()
    # Supprime tous les messages SMS de cette boîte de réception
Voici mon code :

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
class SMSStore():
 
    def __init__(self):
        self.box=[]
 
    def get_unread_indexes(self):
        self.index=[]
        for k in self.box:
            if k[0] == False:
                self.index.append(self.box.index(k))
        return(self.index)        
 
 
 
    def clear(self):
        self.box[:]=[]
 
    def add_new_arrival(self,from_number,time_arrived,text_of_SMS):
        self.text_of_SMS=text_of_SMS
        self.time_arrived=time_arrived
        self.from_number=from_number
        self.has_been_viewed=False
        self.box.append((self.has_been_viewed,self.from_number,self.time_arrived,self.text_of_SMS))
 
    def message_count(self):
        return(len(self.box))
 
    def get_message(self,i):
        if i <= (len(self.box) - 1):
            self.box[i][0] = True
            return(self.box[i][1:])
 
        return(None)
Soyez indulgent, c'est mon premier exercice sur les classes en Python ! Cela fait depuis 4H que je bloques dessus en le modifiant plusieurs fois et finalement il m'a l'air parfait actuellement mais ne compile toujours pas correctement. Pouvez-vous m'aider à réparer les erreurs code ? Dernière question, comment faites-vous quand vous êtes bloqués comme cela pour vous en sortir ? Je veux dire par là, à mes premières relectures j'ai pu identifié quelques erreurs, maintenant j'ai beau relire mon code il me parait fonctionnel...

Merci infiniment,