Faire une boucle sur python qui relance le programme
Résolu
mery-mery
Messages postés
15
Statut
Membre
-
mery-mery Messages postés 15 Statut Membre -
mery-mery Messages postés 15 Statut Membre -
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!
Merci beaucoup!
6 réponses
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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 -
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-
#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>
-
-
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)) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
Comme tu veux ... :-)