Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
To repozytorium jest zarchiwizowane. Możesz wyświetlać pliki i je sklonować, ale nie możesz do niego przepychać zmian lub otwierać zgłoszeń/Pull Requestów.
 
 
 
 
 
 

84 wiersze
2.3 KiB

  1. class ChosesÀFaire:
  2. def __init__(self, contenu, fait):
  3. self.contenu = contenu
  4. self.fait = fait
  5. class PenseBête:
  6. def __init__(self):
  7. self.liste = []
  8. def ajouter(self, choses_à_faire):
  9. self.liste.append(choses_à_faire)
  10. def supprimer(self, index):
  11. del self.liste[index - 1]
  12. def marquer_fait(self, index: int):
  13. self.liste[index - 1].fait = True
  14. def marquer_non_fait(self, index: int):
  15. self.liste[index - 1].fait = False
  16. def affiche(self):
  17. if len(self.liste):
  18. for i in range(len(self.liste)):
  19. marque = ""
  20. if not self.liste[i].fait:
  21. marque = "x"
  22. print(str(i + 1) + " [" + marque + "] " + self.liste[i].contenu)
  23. else:
  24. print("[]")
  25. def parse(entrée_utilisateur):
  26. if entrée_utilisateur != "q":
  27. e = entrée_utilisateur.split()
  28. action = e.pop(0)
  29. argument = " ".join(e)
  30. dico = {
  31. "+": "ajouter",
  32. "-": "supprimer",
  33. "o": "marquer_fait",
  34. "x": "marquer_non_fait",
  35. }
  36. try:
  37. if argument.isdigit():
  38. argument = int(argument)
  39. return dico[action], argument
  40. except:
  41. return "erreur", "message d'erreur"
  42. else:
  43. return "quitter", None
  44. # return ("ajouter", contenu)
  45. # return ("supprimer", index)
  46. # return ("marquer_fait", index)
  47. # return ("marquer_non_fait", index)
  48. # return ("erreur", message)
  49. # return ("quitter", None)
  50. def main():
  51. pense_bête = PenseBête()
  52. while True:
  53. entrée_utilisateur = input()
  54. action, argument = parse(entrée_utilisateur)
  55. if action == "ajouter":
  56. chose_à_faire = ChosesÀFaire(argument, True)
  57. pense_bête.ajouter(chose_à_faire)
  58. elif action == "supprimer":
  59. pense_bête.supprimer(argument)
  60. elif action == "marquer_fait":
  61. pense_bête.marquer_fait(argument)
  62. elif action == "marquer_non_fait":
  63. pense_bête.marquer_non_fait(argument)
  64. elif action == "erreur":
  65. print(argument)
  66. else:
  67. pense_bête.affiche()
  68. break
  69. pense_bête.affiche()
  70. main()