class ChosesÀFaire: def __init__(self, contenu, fait): self.contenu = contenu self.fait = fait class PenseBête: def __init__(self): self.liste = [] def ajouter(self, choses_à_faire): self.liste.append(choses_à_faire) def supprimer(self, index): del self.liste[index - 1] def marquer_fait(self, index: int): self.liste[index - 1].fait = True def marquer_non_fait(self, index: int): self.liste[index - 1].fait = False def affiche(self): if len(self.liste): for i in range(len(self.liste)): marque = "" if not self.liste[i].fait: marque = "x" print(str(i + 1) + " [" + marque + "] " + self.liste[i].contenu) else: print("[]") def parse(entrée_utilisateur): if entrée_utilisateur != "q": e = entrée_utilisateur.split() action = e.pop(0) argument = " ".join(e) dico = { "+": "ajouter", "-": "supprimer", "o": "marquer_fait", "x": "marquer_non_fait", } try: if argument.isdigit(): argument = int(argument) return dico[action], argument except: return "erreur", "message d'erreur" else: return "quitter", None # return ("ajouter", contenu) # return ("supprimer", index) # return ("marquer_fait", index) # return ("marquer_non_fait", index) # return ("erreur", message) # return ("quitter", None) def main(): pense_bête = PenseBête() while True: entrée_utilisateur = input() action, argument = parse(entrée_utilisateur) if action == "ajouter": chose_à_faire = ChosesÀFaire(argument, True) pense_bête.ajouter(chose_à_faire) elif action == "supprimer": pense_bête.supprimer(argument) elif action == "marquer_fait": pense_bête.marquer_fait(argument) elif action == "marquer_non_fait": pense_bête.marquer_non_fait(argument) elif action == "erreur": print(argument) else: pense_bête.affiche() break pense_bête.affiche() main()