Python : Intégrer un menu
De www.yakakliker.org
Pour que l'utilisateur puisse choisir entre Ajouter, Supprimer ou Quitter, nous devons structurer notre boucle while principale avec un système de choix.
while True:
print("\n--- MENU ---")
print("1. Voir les invités")
print("2. Ajouter un invité")
print("3. Supprimer un invité")
print("4. Quitter et Sauvegarder")
choix = input("Votre choix : ")
if choix == "1":
for i in invites:
print(f"- {i['nom']} ({i['age']} ans)")
elif choix == "2":
ajouter_invite(invites)
elif choix == "3":
supprimer_invite(invites)
elif choix == "4":
sauvegarder_liste(invites, "mes_invites.json")
print("Au revoir !")
break
else:
print("Choix invalide.")
Exemple
import json # Toujours en haut du fichier
def charger_liste(nom_fichier):
"""Récupère les données existantes ou crée une liste vide."""
try:
with open(nom_fichier, "r", encoding="utf-8") as f:
return json.load(f)
except FileNotFoundError:
return []
def ajouter_invite(liste_invites):
"""Fonction pour ajouter un nom à la liste avec vérification."""
nom = input("Entrez un nom (ou 'stop') : ").strip()
if nom.lower() == "stop":
return False
if nom == "" or nom.isdigit():
print("Erreur : Le nom ne peut pas être vide ou un simple nombre.")
else:
try:
age = int(input(f"Âge de {nom} : "))
nouvel_invite = {"nom": nom, "age": age}
liste_invites.append(nouvel_invite)
print("Invité enregistré.")
except ValueError:
print("Erreur : L'âge doit être un nombre entier.")
return True
def sauvegarder_liste(liste_a_sauver, nom_fichier):
"""Enregistre la liste au format JSON."""
try:
with open(nom_fichier, "w", encoding="utf-8") as f:
# On utilise le paramètre 'liste_a_sauver' et non la variable globale
json.dump(liste_a_sauver, f, indent=4, ensure_ascii=False)
print(f"Sauvegarde réussie dans {nom_fichier}")
except Exception as e:
print(f"Erreur lors de la sauvegarde : {e}")
def supprimer_invite(liste):
nom = input("Nom à supprimer : ").strip().lower()
for invite in liste:
if invite["nom"].lower() == nom:
liste.remove(invite)
print("Supprimé avec succès.")
return
print("Introuvable.")
# --- PROGRAMME PRINCIPAL ---
FICHIER = "mes_invites.json"
# 1. Chargement au démarrage
invites = charger_liste(FICHIER)
while True:
print("\n--- MENU ---")
print("1. Voir les invités")
print("2. Ajouter un invité")
print("3. Supprimer un invité")
print("4. Quitter et Sauvegarder")
choix = input("Votre choix : ")
if choix == "1":
for i in invites:
print(f"- {i['nom']} ({i['age']} ans)")
elif choix == "2":
ajouter_invite(invites)
elif choix == "3":
supprimer_invite(invites)
elif choix == "4":
sauvegarder_liste(invites, "mes_invites.json")
print("Au revoir !")
break
else:
print("Choix invalide.")
Points techniques importants
break: Ce mot-clé permet de sortir immédiatement de la bouclewhile True. C'est la manière la plus propre de fermer un programme avec menu.lower()des deux côtés : En comparantinvite["nom"].lower()avecnom.lower(), votre programme devient insensible à la casse (il trouvera "Alice" même si l'utilisateur tape "alice").- La recherche : Notez que si vous avez deux "Jean", cette fonction ne supprimera que le premier qu'elle trouve.