Code python : comment retourner au début du programme

Résolu/Fermé
yumeasoko8572 Messages postés 18 Date d'inscription mardi 22 novembre 2022 Statut Membre Dernière intervention 5 janvier 2023 - 3 janv. 2023 à 18:05
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 6 janv. 2023 à 11:48

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 !")
       
A voir également:

6 réponses

blux Messages postés 25956 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 12 avril 2024 3 283
3 janv. 2023 à 18:26

Salut,

tu dois intégrer ton choix dans ta boucle...


1
xHaMaz Messages postés 108 Date d'inscription mardi 3 janvier 2023 Statut Membre Dernière intervention 23 avril 2023 14
3 janv. 2023 à 18:37

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
yg_be Messages postés 22675 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 avril 2024 1 467
3 janv. 2023 à 18:20

bonjour,

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

0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 177
Modifié le 4 janv. 2023 à 10:54

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
0
yumeasoko8572 Messages postés 18 Date d'inscription mardi 22 novembre 2022 Statut Membre Dernière intervention 5 janvier 2023
4 janv. 2023 à 17:09

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))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yumeasoko8572 Messages postés 18 Date d'inscription mardi 22 novembre 2022 Statut Membre Dernière intervention 5 janvier 2023
4 janv. 2023 à 17:15

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: "))

0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 177
Modifié le 4 janv. 2023 à 17:48

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

0
yumeasoko8572 Messages postés 18 Date d'inscription mardi 22 novembre 2022 Statut Membre Dernière intervention 5 janvier 2023 > Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024
5 janv. 2023 à 18:10

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 

0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 177 > yumeasoko8572 Messages postés 18 Date d'inscription mardi 22 novembre 2022 Statut Membre Dernière intervention 5 janvier 2023
Modifié le 5 janv. 2023 à 22:07

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

0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 177 > Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024
Modifié le 6 janv. 2023 à 11:49

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
1
Julien_3144 Messages postés 3 Date d'inscription mardi 3 janvier 2023 Statut Membre Dernière intervention 3 janvier 2023
3 janv. 2023 à 23:09

oui tu déplace ta selection de choix en début de while

-1