Code python : comment retourner au début du programme

Résolu

Bonjour tout le monde, je suis débutant en code, et je dois faire un petit projet ( une liste de course ) 

Mon programme n'est pas encore totalement au point, avant de faire toute les modifications nécessaires, j'aimerai savoir comment je peux faire pour relancer le programme une fois que l'utilisateur à choisit une option. Je crois qu'il faut utiliser While mais je ne sait pas comment l'intégrer au programme en effet lorsque je lance le programme il me redemande l'option choisit infiniment mais je ne retourne pas au début 

Merci d'avance pour votre aide :) 

#La liste 
liste = []

# Ce que l'utilisateur voit 
print("Choisissez parmi les 5 options suivantes")
print("1: Ajouter un element à la liste")
print("2: Retirer un element à la liste")
print("3: Afficher la liste")
print("4: Vider la liste")
print("5: Quitter")

a = "1" "2" "3" "4" "5"
a = input("Votre choix: ")

# boucle pour retout au début du programme 

while True:
    if a == "1": 
        b = input("Entrez le nom d'un element à ajouter à votre liste de course: ")
        liste.append(b)
        print(f"l'élement {b} a bien été ajouté à la liste")
        
    elif a == "2":
        c = input("Retirer un element de la liste: ")
        if c not in liste: 
            print("L'élement n'est pas dans ma liste")
        liste.remove(c)
        print(f"l'élement {c} a bien été supprimé de la liste")

    elif a == "3":
        print(liste)

    elif a == "4": 
        liste.clear 

    elif a == "5":
        quit()

    else: 
        print("Entrer non valide !")
       

6 réponses

  1. Bonjour, 

    Si j'ai bien compris ton problème, tu veux que ton programme se relance une fois que l'utilisateur a choisi une option ?

    La boucle "while True" permet de relancer un programme de manière infinie jusqu'à ce que l'utilisateur choisisse l'option de quitter. Essaye de l'intègrer plus haut dans ton programme avant le choix des 5 options.

    1. Contributeur

      bonjour,

      la boucle doit inclure toutes les instructions à répéter.  quelles sont-elles?

      1. Bonjour,

        Tu inclus tout dans le while, et même, tu en ajoutes un autre pour contrôler la saisie

        (tant que l'on répond mal, le menu se ré affiche pour une nouvelle saisie):

        # -*- coding:Utf-8 -*-
        import os
        
        menu = '''
        1	Ajouter
        2	Retirer
        3   Afficher
        4   Afficher
        5	Quitter
        > '''
        
        while(True):
            choix = 0
            while(not choix in [1,2,3,4,5]):
                os.system('cls' if os.name=='nt' else 'clear')
                print('\n' + '''Choisissez :'''.center(50,'*'))
                choix = int(input(menu))
        
            if(choix == 1):
            	.....
            elif(choix == 5):
                break #on sort du while : fin de programme
        1. Merci pour votre réponse, je suis débutant je ne comprend pas cette partie de code pouvez me l'expliquer 

          Merci :) 

          while(True):
              choix = 0
              while(not choix in [1,2,3,4,5]):
                  os.system('cls' if os.name=='nt' else 'clear')
                  print('\n' + '''Choisissez :'''.center(50,'*'))
                  choix = int(input(menu))
      2. Mon but est que l'utilisateur retourne au début du programme au ( a = input "votre choix: ") après avoir fait ce qu'il voulait faire (comme par exemple ajouter un élément dans la liste de course). Il pourra ainsi voir qu'il a bien mis l'élément dans la liste. 

        Je ne sais pas si je dois effectivement utiliser while True en tout quand je lance mon programme et que je sélectionne 1 et que j'ajoute un élément il me retourne à (" b = input("Entrez le nom d'un element à ajouter à votre liste de course: "))

        1. Explication de mon code:

          la boucle extérieure while(True) fait que après avoir choisi 1,2,3 ou 4 dans le menu et donc

          exécuté le code correspondant, on remonte à nouveau au menu pour un nouveau choix

          si l'on choisit 5, on tombe sur mon instruction break qui nous fait sortir ce ce while et donc le programme s'arrête

          .

          la boucle intérieure while(not choix .........) fait que si on entre autre chose que 1,2,3,4 ou 5, l'écran s'efface

          et on ré affiche le menu jusqu'a ce que l'on entre le bon chiffre

          si c'est Ok, on sort de ce while et on continue avec les tests if(choix == 1), etc...

              choix = 0
              while(not choix in [1,2,3,4,5]):
          #       au début choix = 0, donc on affiche le menu
                  os.system('cls' if os.name=='nt' else 'clear') #effacement de l'écran
                  print('\n' + '''Choisissez :'''.center(50,'*'))
                  choix = int(input(menu))  #affichage de menu pour entrer une valeur
          # tant que choix est différent de 1,2,3,4 ou 5, on boucle à nouveau
          # sinon, on sort de ce while

          Tu peux tester mon code en y ajoutant ce qu'il faut dans le if(choix == 1) , else, etc ..

          tu verras que ça marche

        2. @Phil_1857

          Merci pour votre aide, en effet, c'est l'idée que j'avais au début, créer une boucle while si l'utilisateur ne rentre pas la bonne valeur et le faire retourner au début à la fin de la bonne application de celui ci. 

          Une dernière petite question, je voudrai savoir la signification des commandes : 

          os.name=='nt' et center(50,'*')) 

          Merci encore pour votre aide 

        3. @yumeasoko8572

          os est le module permettant de traiter tout ce qui est en rapport avec l'os, l'operating system,

          le système d'exploitation (Windows chez moi)

          et donc os.name donne le nom de ton os

          os.system('cls') permet d'effacer l'écran, mais j'y ai ajouté un test pour rendre la commande

          plus universelle: si c'est Windows, on prend 'cls', sinon, on prends 'clear'

          .

          center(50,*) est un format d'affichage qui permet d'encadrer le texte à afficher sur 50 caractères au total,

          en cadré par des *, comme tu peux le voir sur l'image que j'ai affichée ci-dessus

        4. @Phil_1857

          Bonjour,

          Finalement, ca donnerait ceci (j'ai rectifié une ou deux erreurs) :

          # -*- coding:Utf-8 -*-
          import os
          
          menu = '''
          1   Ajouter
          2   Retirer
          3   Afficher
          4   Vider
          5   Quitter
          > '''
          
          liste = []
          
          while(True):
              choix = 0
              while(not choix in [1,2,3,4,5]):
          #        os.system('cls' if os.name=='nt' else 'clear')
                  print('\n' + '''Choisissez :'''.center(50,'*'))
                  choix = int(input(menu))
          
              if(choix == 1):
                  el = input("Entrez le nom d'un element à ajouter à votre liste de course: ")
                  liste.append(el)
                  print(f"l'élement {el} a bien été ajouté à la liste")
          
              elif(choix == 2):
                  el = input("Element à retirer de la liste: ")
                  if el not in liste:
                      print("L'élement n'est pas dans ma liste")
                  else:
                      liste.remove(el)
                      print(f"l'élement {el} a bien été supprimé de la liste")
          
              elif(choix == 3):
                  print(liste)
          
              elif(choix == 4): 
                  liste.clear()
          
              elif(choix == 5):
                  break