« Python : Intégrer un menu » : différence entre les versions

De www.yakakliker.org
(Page créée avec « Pour que l'utilisateur puisse choisir entre '''Ajouter''', '''Supprimer''' ou '''Quitter''', nous devons structurer notre boucle <code>while</code> principale avec un système de choix. <syntaxhighlight lang="python3"> 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":... »)
 
Aucun résumé des modifications
 
Ligne 114 : Ligne 114 :
</syntaxhighlight>
</syntaxhighlight>


==== Points techniques importants ====


* '''<code>break</code>''' : Ce mot-clé permet de sortir immédiatement de la boucle <code>while True</code>. C'est la manière la plus propre de fermer un programme avec menu.
* '''<code>lower()</code> des deux côtés''' : En comparant <code>invite["nom"].lower()</code> avec <code>nom.lower()</code>, 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.


[[Catégorie:Python]]
[[Catégorie:Python]]
[[Catégorie:Scripts]]
[[Catégorie:Scripts]]

Dernière version du 21 janvier 2026 à 14:54

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 boucle while True. C'est la manière la plus propre de fermer un programme avec menu.
  • lower() des deux côtés : En comparant invite["nom"].lower() avec nom.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.