Sortir boucle en Python

Fermé
Cyrion_81 - Modifié le 31 janv. 2022 à 14:52
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 - 31 janv. 2022 à 14:55
Bonsoir,

Je débute en python et j’ai voulu faire un programme qui ajoute un élément dans une liste, qui peut afficher la liste ainsi que quitter le programme.
Je n'arrive pas a trouver la soluce pour ce faire

choix = ""
liste_elements = []
liste_choix = [1, 2, 3, 4, 5]
while True:
    #menu choix affiché
    choix = ""
    print( )
    print("--------------------------------")
    print("Choisissez parmi les 3options suivantes :")
    print("1: Ajouter un élément à la liste.")
    print("2: Afficher la liste.")
    print("3: Quitter.")

    #test entrée est bien un chiffre
    while True:  
        try:
            choix = int(input("Votre choix ?"))
            break    
        except ValueError :  
            print("Erreur, votre choix doit etre un nombre!")   

    #test du nombre entré et option exécutée

    while choix in liste_choix:
        if choix == 1 :
            print("Choix 1, ajouter un élément")
            ajouter=input("Votre ajout ?")
            liste_elements.append(ajouter)
            break

        if choix == 2 :
            print("Choix 2, Afficher la liste")
            print(liste_elements)
            break

        if choix == 3:
            print("Choix 3 , Quitter") 
            break


Je cherche a quitter le premier
while
(le menu) uniquement si j'ai fini toutes les opérations et quand je presse la touche 3

Merci d'avance, un retraité curieux :).

2 réponses

Whismeril Messages postés 19049 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 5 juin 2024 913
31 janv. 2022 à 06:25
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
0
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 7 756
Modifié le 31 janv. 2022 à 15:09
Bonjour,

Est ce que "si j'ai fini toutes les opérations et quand je presse la touche 3" signifie "si on a fait au moins un ajout et au moins un affichage" ?

Si oui, il suffit de garder traces des choix faits jusqu'ici et de vérifier si l'ensemble {1, 2} est inclu ou égal à ces choix (si on tente de quitter avant d'avoir fait 1 et 2, 3 peut figurer parmi les choix faits).

Voici à quoi ça ressemble (avec quelques petits arrangements supplémentaires) :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys

liste_elements = []
choix_faits = set()
while True:
    # Menu choix affiché
    choix = ""
    print( )
    print("-" * 80)
    print("Choisissez parmi les 3 options suivantes :")
    print("1: Ajouter un élément à la liste.")
    print("2: Afficher la liste.")
    print("3: Quitter.")

    # Test entrée est bien un chiffre
    choix = None
    while choix not in {1, 2, 3}:  
        try:
            choix = int(input("Votre choix ?"))
        except ValueError :  
            print("Erreur, votre choix doit être un nombre parmi {1, 2, 3} !", sys.stderr)   

    # Test du nombre entré et option exécutée
    if choix == 1 :
        print("Choix 1, ajouter un élément")
        ajouter = input("Votre ajout ?")
        liste_elements.append(ajouter)
    elif choix == 2 :
        print("Choix 2, Afficher la liste")
        print(liste_elements)
    elif choix == 3:
        print("Choix 3 , Quitter") 
        if  not {1, 2} <= choix_faits:
            print(f"Certains choix n'ont pas encore été faits {choix_faits} != {1, 2}")
        else:
            break
    choix_faits.add(choix)


Le programme est améliorable en rassemblant les opérations possibles (ajout, affichage, liste) dans une liste de labels et définir tes tests et
print
par rapport à cette liste.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

liste_elements = []
choix_faits = set()
choix_possibles = [
    "Ajouter un élément à la liste",
    "Afficher la liste",
    "Quitter",
]
    
while True:
    # Menu choix affiché
    choix = ""
    print( )
    print("-" * 80)
    print(f"Choisissez parmi les {len(choix_possibles)} options suivantes :")
    print("\n".join(
        f"{i + 1}: {choix_possible}."
        for (i, choix_possible) in enumerate(choix_possibles)
    ))

    # Test entrée est bien un chiffre
    choix = None
    while choix not in set(i + 1 for i in range(len(choix_possibles))):  
        try:
            choix = int(input("Votre choix ?"))
            break    
        except ValueError:  
            print("Erreur, votre choix doit etre un nombre!")   

    # Test du nombre entré et option exécutée

    print(f"Choix {choix}, {choix_possibles[choix - 1]}")
    if choix == 1 :
        ajouter = input("Votre ajout ?")
        liste_elements.append(ajouter)
    elif choix == 2 :
        print(liste_elements)
    elif choix == 3:
        if len(choix_faits) < len(choix_possibles) - 1:
            print(f"Certains choix n'ont pas encore été faits {choix_faits}")
        else:
            break
    else:
        print("Choix {choix} par encore implémenté", sys.stderr)
    choix_faits.add(choix)


Bonne chance
0