Sortir boucle en Python

Cyrion_81 -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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