Faire une boucle sur python qui relance le programme

Résolu
mery-mery Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
mery-mery Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous,je voulais vous demandez une petite questions en ce qui concerne un problème qui me tracasse . Je suis entrain de faire un tout mini programme, et j'aimerai bien que le programme demande a l'utilisateur si il veut quitter ou bien en continuer , donc si il veut quitter le programme s'éteint ,mais si l'utilisateur dis oui je veux en convertir un autre ben le programme doit se ré-exécuter sans devoir éteindre puis ré-allumer le programme...Je sais pas si j'ai étais très clair, enfin si quelqu'un a une idée qu'il me la fasse partager.
Merci beaucoup!

6 réponses

mery-mery Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
tu pourrais ajouter ceci en bas de ton module:
continuer = True
while continuer:
    main()
    d=input("stop (s) ou encore (c)?")
    if d != "c":
        continuer = False

Si tu souhaites ne pas changer ton module et faire la boucle dans un autre module, c'est également possible, ainsi:
import modulemain
continuer = True
while continuer:
    modulemain.main()
    d=input("stop (s) ou encore (c)?")
    if d != "c":
        continuer = False
1
mery-mery Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
merci ça a marcher ,le problème est résolue .
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
Bonjour,

Peux-tu afficher ton code ici, que l'on voie au moins ce que tu as déjà fait

Et l'afficher avec les balises de code:

https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
mery-mery Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
#code pour cryptage de cesar

    


banner = '''
 ██████╗███████╗███████╗ █████╗ ██████╗    ██████╗ ██╗   ██╗
██╔════╝██╔════╝██╔════╝██╔══██╗██╔══██╗   ██╔══██╗╚██╗ ██╔╝
██║     █████╗  ███████╗███████║██████╔╝   ██████╔╝ ╚████╔╝ 
██║     ██╔══╝  ╚════██║██╔══██║██╔══██╗   ██╔═══╝   ╚██╔╝  
╚██████╗███████╗███████║██║  ██║██║  ██║██╗██║        ██║   
 ╚═════╝╚══════╝╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝╚═╝        ╚═╝                                 
'''

print(banner)

def recebeModo():
    while True:
        option = input("veux tu cripter ou descripter? ")
        option = option.lower()
        if option == 'c' or option == 'cripter' or option == 'descripter' or option == 'd':
            return option
        print("valeur invalide . soit ('cripter', 'c') ou bien ('descripter', 'd')")


def recebeChave():
    while True:
        chave = int(input("valeur de decalage: "))
        if 1 <= chave <= 26:
            break
        print("valeur invalide ")

    return chave

def geraMsgTraduzida(modo, mensagem, chave):
    cripto = ''

    if modo == 'c' or modo == 'cripter':
        for i in mensagem:
            if 'A' <= i <= 'Z':
                if ord(i) + chave > ord('Z'):
                    cripto += chr((ord('A') + chave - (ord('Z')+1 - ord(i))))
                else:
                    cripto += chr(ord(i) + chave)


            elif 'a' <= i <= 'z':
                if ord(i) + chave > ord('z'):
                    cripto += chr((ord('a') + chave - (ord('z')+1 - ord(i))))
                else:
                    cripto += chr(ord(i) + chave)
            else:
                cripto += i

    elif modo == 'd' or modo == 'descripter':
        for i in mensagem:
            if 'A' <= i <= 'Z':
                if ord(i) - chave < ord('A'):
                    cripto += chr(ord('Z') - (chave - (ord(i)+1 - ord('A'))))

                else:
                    cripto += chr(ord(i) - chave)


            elif 'a' <= i <= 'z':
                if ord(i) - chave < ord('a'):
                    cripto += chr(ord('z') - (chave - (ord(i)+1 - ord('a'))))
                else:
                    cripto += chr(ord(i) - chave)
            else:
                cripto += i 

    return cripto

def main():
    modo = recebeModo()
    chave = recebeChave()
    mensagem = input("donner le mot ou le text a traiter: ")
    print(geraMsgTraduzida(modo, mensagem, chave))

main()
<code python>
</code>
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
OK,

Moi, je mettrais le contenu de Main() dans une boucle While infinie, et en plus j'afficherai un menu du genre:

1_ Crypter
2_ Quitter
Votre choix :

après la ligne 73

si choix == 1, je continue sur les lignes 74 à 77, et ensuite, avec la boucle, le menu s'affiche à nouveau
si choix == 2, je sors de la boucle donc la fonction se termine et le programme s'arrête

Ceci dit, il faut aussi que tu soignes ton orthographe :-) :-)

veux tu cripter ou descripter,? -> veux tu crypter ou décrypter ?

Sinon, si tu veux faire un menu qui contrôle si on a bien entré un choix valide, et qui repose la question tant que c'est incorrect, tu peux faire comme ça (et supprimer la ligne 74)
menu = '''
1 Crypter
2 Décrypter
3 Quitter
> '''
choix = ''

while(not choix in [1,2,3]):
    print('\n' + '''Choisissez une option'''.center(50,'*'))
    choix = int(input(menu))
0
mery-mery Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
est-ce possible d’expliquer plus en détail , car la j’arrive pas bien a comprendre .
0

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

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
En fait, je supprimerais la fonction recebeModo(), et je ferais la fonction Main() comme ceci:
def main():

    menu = '''
    1 Crypter
    2 Décrypter
    3 Quitter
    > '''
    modo = ''

    while(modo != 3):
        while(not modo in [1,2,3]):
            print('\n' + '''Choisissez une option'''.center(50,'*'))
            modo = int(input(menu))

        if(modo == 3): break

        chave = recebeChave()
        mensagem = input("donner le mot ou le text a traiter: ")
        print(geraMsgTraduzida(modo, mensagem, chave))
        modo = ''


apres, dans les autres fonctions, il faut remplacer les tests sur modo en comparant avec 1 ou 2, et non plus sur les strings
0
mery-mery Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
non moi j’aimerai bien garder le script comme il est, je veux juste ajouter une boucles c’est tous.
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
Comme tu veux ... :-)
0