Gestionnaire de listes en Python
# Fichiers
# Python
# Module json
import os
import json
class ListeCourses:
def __init__(self, nom):
self.nom = nom
self.elements = []
self.dossier_data = "data"
# Créer le dossier data s'il n'existe pas
if not os.path.exists(self.dossier_data):
os.makedirs(self.dossier_data)
def ajouter(self, element):
"""Ajoute un élément à la liste si c'est une string non vide et non existante"""
if not isinstance(element, str):
raise ValueError("Seules les chaînes de caractères sont acceptées")
if not element.strip():
raise ValueError("L'élément ne peut pas être vide")
if element in self.elements:
raise ValueError(f"{element} existe déjà dans la liste")
self.elements.append(element)
return f"{element} ajouté à {self.nom}"
def retirer(self, element):
"""Retire un élément de la liste s'il existe"""
if element not in self.elements:
raise ValueError(f"{element} non trouvé dans la liste")
self.elements.remove(element)
return f"{element} retiré de {self.nom}"
def afficher(self):
"""Affiche le contenu de la liste"""
if not self.elements:
return f"La liste {self.nom} est vide"
return "\n".join([f"{i+1}. {item}" for i, item in enumerate(self.elements)])
def vider(self):
"""Vide complètement la liste"""
self.elements.clear()
return f"Liste {self.nom} vidée"
def sauvegarder(self):
"""Sauvegarde la liste dans un fichier JSON"""
fichier = os.path.join(self.dossier_data, f"{self.nom.lower()}.json")
data = {
"nom": self.nom,
"elements": self.elements
}
with open(fichier, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
return f"Liste {self.nom} sauvegardée dans {fichier}"
def charger(self):
"""Charge la liste depuis le fichier JSON"""
fichier = os.path.join(self.dossier_data, f"{self.nom.lower()}.json")
if not os.path.exists(fichier):
raise FileNotFoundError(f"Fichier {fichier} introuvable")
with open(fichier, 'r', encoding='utf-8') as f:
data = json.load(f)
self.elements = data.get("elements", [])
return f"Liste {self.nom} chargée depuis {fichier}"
def menu_principal():
print("\n=== GESTIONNAIRE DE LISTES ===")
nom_liste = input("Entrez le nom de votre liste : ").strip()
if not nom_liste:
print("Le nom ne peut pas être vide")
return
liste = ListeCourses(nom_liste)
# Essayer de charger une liste existante
try:
print(liste.charger())
except FileNotFoundError:
print(f"Nouvelle liste '{nom_liste}' créée")
while True:
print("\n" + "="*30)
print(f"LISTE : {liste.nom}")
print("1. Ajouter un élément")
print("2. Retirer un élément")
print("3. Afficher la liste")
print("4. Vider la liste")
print("5. Sauvegarder la liste")
print("6. Quitter")
print("="*30)
choix = input("Votre choix [1-6] : ").strip()
if choix == "6":
print("Au revoir !")
break
try:
if choix == "1":
element = input("Élément à ajouter : ").strip()
print(liste.ajouter(element))
elif choix == "2":
element = input("Élément à retirer : ").strip()
print(liste.retirer(element))
elif choix == "3":
print("\n" + liste.afficher())
elif choix == "4":
print(liste.vider())
elif choix == "5":
print(liste.sauvegarder())
else:
print("Choix invalide. Veuillez entrer un nombre entre 1 et 6")
except Exception as e:
print(f"Erreur : {e}")
if __name__ == "__main__":
menu_principal()
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte