Résolue

Projet Liste de course en POO

# Python # Module json # Classes

Voici la question de l'étudiant :

################# PROJET Liste de course POO
from dataclasses import dataclass
import json

@dataclass
class Liste: 
    nom : str    
    liste_data : list = None

    def __post_init__(self):
        self.liste_data = [] 
        print (f"Le nom de votre liste est : {self.nom}")

    def ajouter(self, ajouter: str):
        if ajouter.capitalize() not in self.liste_data:
            self.liste_data.append(ajouter.capitalize())
            print(f" Dans ta liste tu as maintenant: {self.liste_data}")
        else:
            print(f"L'élement existe déjà")

    def enlever(self, enlever: str):
        self.liste_data.remove(enlever.capitalize())
        print(f" Element '{enlever.capitalize()}' enelever. Dans ta liste tu as maintenant: {self.liste_data}")

    def sauvegarder(self):
        with open(f"{self.nom}.json", "w", encoding="utf-8") as JJ:
            json.dump(self.liste_data, JJ)


LS = Liste("testRAF")
LS2222 = Liste('Ma_course')
LS.ajouter('Pomme')
LS.ajouter('Orange')

LS.enlever('orange')
LS2222.ajouter('kiwi')
LS.sauvegarder()

Salut,

On pourrait ajouter une validation de type dans ajouter.
Dans enlever, il faudrait vérifier si l'élément est bien dans la liste.
Aller, pour le fun on peut ajouter une méthode charger.

from dataclasses import dataclass
import json

@dataclass
class Liste: 
    nom : str    
    liste_data : list = None

    def __post_init__(self):
        self.liste_data = [] 
        print (f"Le nom de votre liste est : {self.nom}")

    def ajouter(self, ajouter: str):
        if not isinstance(ajouter, str):
            print("Erreur : vous devez ajouter une chaîne de caractères")
            return
        if ajouter.capitalize() not in self.liste_data:
            self.liste_data.append(ajouter.capitalize())
            print(f"Dans ta liste tu as maintenant: {self.liste_data}")
        else:
            print(f"L'élément existe déjà")

    def enlever(self, enlever: str):
        if enlever.capitalize() in self.liste_data:
            self.liste_data.remove(enlever.capitalize())
            print(f"Élément '{enlever.capitalize()}' enlevé. Dans ta liste tu as maintenant: {self.liste_data}")
        else:
            print(f"L'élément '{enlever.capitalize()}' n'est pas dans la liste")

    def sauvegarder(self):
        with open(f"{self.nom}.json", "w", encoding="utf-8") as JJ:
            json.dump(self.liste_data, JJ)
            print(f"Liste sauvegardée dans {self.nom}.json")

    def charger(self):
        with open(f"{self.nom}.json", "r", encoding="utf-8") as JJ:
            self.liste_data = json.load(JJ)
            print(f"Liste chargée depuis {self.nom}.json: {self.liste_data}")

Bravo pour le script !

Top merci pour le retour Gabriel, j'en prends note !

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.