<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://www.yakakliker.org/index.php?action=history&amp;feed=atom&amp;title=Python_%3A_Int%C3%A9grer_un_menu</id>
	<title>Python : Intégrer un menu - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://www.yakakliker.org/index.php?action=history&amp;feed=atom&amp;title=Python_%3A_Int%C3%A9grer_un_menu"/>
	<link rel="alternate" type="text/html" href="http://www.yakakliker.org/index.php?title=Python_:_Int%C3%A9grer_un_menu&amp;action=history"/>
	<updated>2026-05-02T04:48:26Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://www.yakakliker.org/index.php?title=Python_:_Int%C3%A9grer_un_menu&amp;diff=1907&amp;oldid=prev</id>
		<title>Administrateur le 21 janvier 2026 à 13:54</title>
		<link rel="alternate" type="text/html" href="http://www.yakakliker.org/index.php?title=Python_:_Int%C3%A9grer_un_menu&amp;diff=1907&amp;oldid=prev"/>
		<updated>2026-01-21T13:54:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 21 janvier 2026 à 15:54&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l114&quot;&gt;Ligne 114 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 114 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==== Points techniques importants ====&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;&#039;&#039;&#039; : Ce mot-clé permet de sortir immédiatement de la boucle &amp;lt;code&amp;gt;while True&amp;lt;/code&amp;gt;. C&#039;est la manière la plus propre de fermer un programme avec menu.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;&amp;lt;code&amp;gt;lower()&amp;lt;/code&amp;gt; des deux côtés&#039;&#039;&#039; : En comparant &amp;lt;code&amp;gt;invite[&quot;nom&quot;].lower()&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;nom.lower()&amp;lt;/code&amp;gt;, votre programme devient insensible à la casse (il trouvera &quot;Alice&quot; même si l&#039;utilisateur tape &quot;alice&quot;).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;La recherche&#039;&#039;&#039; : Notez que si vous avez deux &quot;Jean&quot;, cette fonction ne supprimera que le premier qu&#039;elle trouve.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Python]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Python]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Scripts]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Scripts]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawikidb:diff:1.41:old-1906:rev-1907:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Administrateur</name></author>
	</entry>
	<entry>
		<id>http://www.yakakliker.org/index.php?title=Python_:_Int%C3%A9grer_un_menu&amp;diff=1906&amp;oldid=prev</id>
		<title>Administrateur : Page créée avec « Pour que l&#039;utilisateur puisse choisir entre &#039;&#039;&#039;Ajouter&#039;&#039;&#039;, &#039;&#039;&#039;Supprimer&#039;&#039;&#039; ou &#039;&#039;&#039;Quitter&#039;&#039;&#039;, nous devons structurer notre boucle &lt;code&gt;while&lt;/code&gt; principale avec un système de choix.  &lt;syntaxhighlight lang=&quot;python3&quot;&gt; while True:     print(&quot;\n--- MENU ---&quot;)     print(&quot;1. Voir les invités&quot;)     print(&quot;2. Ajouter un invité&quot;)     print(&quot;3. Supprimer un invité&quot;)     print(&quot;4. Quitter et Sauvegarder&quot;)          choix = input(&quot;Votre choix : &quot;)      if choix == &quot;1&quot;:... »</title>
		<link rel="alternate" type="text/html" href="http://www.yakakliker.org/index.php?title=Python_:_Int%C3%A9grer_un_menu&amp;diff=1906&amp;oldid=prev"/>
		<updated>2026-01-21T13:53:16Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « Pour que l&amp;#039;utilisateur puisse choisir entre &amp;#039;&amp;#039;&amp;#039;Ajouter&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Supprimer&amp;#039;&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;&amp;#039;Quitter&amp;#039;&amp;#039;&amp;#039;, nous devons structurer notre boucle &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; principale avec un système de choix.  &amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt; while True:     print(&amp;quot;\n--- MENU ---&amp;quot;)     print(&amp;quot;1. Voir les invités&amp;quot;)     print(&amp;quot;2. Ajouter un invité&amp;quot;)     print(&amp;quot;3. Supprimer un invité&amp;quot;)     print(&amp;quot;4. Quitter et Sauvegarder&amp;quot;)          choix = input(&amp;quot;Votre choix : &amp;quot;)      if choix == &amp;quot;1&amp;quot;:... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Pour que l&amp;#039;utilisateur puisse choisir entre &amp;#039;&amp;#039;&amp;#039;Ajouter&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Supprimer&amp;#039;&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;&amp;#039;Quitter&amp;#039;&amp;#039;&amp;#039;, nous devons structurer notre boucle &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; principale avec un système de choix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
while True:&lt;br /&gt;
    print(&amp;quot;\n--- MENU ---&amp;quot;)&lt;br /&gt;
    print(&amp;quot;1. Voir les invités&amp;quot;)&lt;br /&gt;
    print(&amp;quot;2. Ajouter un invité&amp;quot;)&lt;br /&gt;
    print(&amp;quot;3. Supprimer un invité&amp;quot;)&lt;br /&gt;
    print(&amp;quot;4. Quitter et Sauvegarder&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    choix = input(&amp;quot;Votre choix : &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if choix == &amp;quot;1&amp;quot;:&lt;br /&gt;
        for i in invites:&lt;br /&gt;
            print(f&amp;quot;- {i[&amp;#039;nom&amp;#039;]} ({i[&amp;#039;age&amp;#039;]} ans)&amp;quot;)&lt;br /&gt;
    elif choix == &amp;quot;2&amp;quot;:&lt;br /&gt;
        ajouter_invite(invites)&lt;br /&gt;
    elif choix == &amp;quot;3&amp;quot;:&lt;br /&gt;
        supprimer_invite(invites)&lt;br /&gt;
    elif choix == &amp;quot;4&amp;quot;:&lt;br /&gt;
        sauvegarder_liste(invites, &amp;quot;mes_invites.json&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Au revoir !&amp;quot;)&lt;br /&gt;
        break&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Choix invalide.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exemple ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import json  # Toujours en haut du fichier&lt;br /&gt;
&lt;br /&gt;
def charger_liste(nom_fichier):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Récupère les données existantes ou crée une liste vide.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    try:&lt;br /&gt;
        with open(nom_fichier, &amp;quot;r&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as f:&lt;br /&gt;
            return json.load(f)&lt;br /&gt;
    except FileNotFoundError:&lt;br /&gt;
        return []&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def ajouter_invite(liste_invites):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Fonction pour ajouter un nom à la liste avec vérification.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    nom = input(&amp;quot;Entrez un nom (ou &amp;#039;stop&amp;#039;) : &amp;quot;).strip()&lt;br /&gt;
&lt;br /&gt;
    if nom.lower() == &amp;quot;stop&amp;quot;:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if nom == &amp;quot;&amp;quot; or nom.isdigit():&lt;br /&gt;
        print(&amp;quot;Erreur : Le nom ne peut pas être vide ou un simple nombre.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        try:&lt;br /&gt;
            age = int(input(f&amp;quot;Âge de {nom} : &amp;quot;))&lt;br /&gt;
            nouvel_invite = {&amp;quot;nom&amp;quot;: nom, &amp;quot;age&amp;quot;: age}&lt;br /&gt;
            liste_invites.append(nouvel_invite)&lt;br /&gt;
            print(&amp;quot;Invité enregistré.&amp;quot;)&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;Erreur : L&amp;#039;âge doit être un nombre entier.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def sauvegarder_liste(liste_a_sauver, nom_fichier):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Enregistre la liste au format JSON.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    try:&lt;br /&gt;
        with open(nom_fichier, &amp;quot;w&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as f:&lt;br /&gt;
            # On utilise le paramètre &amp;#039;liste_a_sauver&amp;#039; et non la variable globale&lt;br /&gt;
            json.dump(liste_a_sauver, f, indent=4, ensure_ascii=False)&lt;br /&gt;
        print(f&amp;quot;Sauvegarde réussie dans {nom_fichier}&amp;quot;)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        print(f&amp;quot;Erreur lors de la sauvegarde : {e}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def supprimer_invite(liste):&lt;br /&gt;
    nom = input(&amp;quot;Nom à supprimer : &amp;quot;).strip().lower()&lt;br /&gt;
    for invite in liste:&lt;br /&gt;
        if invite[&amp;quot;nom&amp;quot;].lower() == nom:&lt;br /&gt;
            liste.remove(invite)&lt;br /&gt;
            print(&amp;quot;Supprimé avec succès.&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
    print(&amp;quot;Introuvable.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# --- PROGRAMME PRINCIPAL ---&lt;br /&gt;
FICHIER = &amp;quot;mes_invites.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 1. Chargement au démarrage&lt;br /&gt;
invites = charger_liste(FICHIER)&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
    print(&amp;quot;\n--- MENU ---&amp;quot;)&lt;br /&gt;
    print(&amp;quot;1. Voir les invités&amp;quot;)&lt;br /&gt;
    print(&amp;quot;2. Ajouter un invité&amp;quot;)&lt;br /&gt;
    print(&amp;quot;3. Supprimer un invité&amp;quot;)&lt;br /&gt;
    print(&amp;quot;4. Quitter et Sauvegarder&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    choix = input(&amp;quot;Votre choix : &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if choix == &amp;quot;1&amp;quot;:&lt;br /&gt;
        for i in invites:&lt;br /&gt;
            print(f&amp;quot;- {i[&amp;#039;nom&amp;#039;]} ({i[&amp;#039;age&amp;#039;]} ans)&amp;quot;)&lt;br /&gt;
    elif choix == &amp;quot;2&amp;quot;:&lt;br /&gt;
        ajouter_invite(invites)&lt;br /&gt;
    elif choix == &amp;quot;3&amp;quot;:&lt;br /&gt;
        supprimer_invite(invites)&lt;br /&gt;
    elif choix == &amp;quot;4&amp;quot;:&lt;br /&gt;
        sauvegarder_liste(invites, &amp;quot;mes_invites.json&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Au revoir !&amp;quot;)&lt;br /&gt;
        break&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Choix invalide.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Python]]&lt;br /&gt;
[[Catégorie:Scripts]]&lt;/div&gt;</summary>
		<author><name>Administrateur</name></author>
	</entry>
</feed>