Se connecter / S'enregistrer
Votre question

python cryptographie clé de cesar

Tags :
  • Python
  • Alpha
  • Programmation
Dernière réponse : dans Programmation
30 Décembre 2012 21:49:36

Bonsoir, j'ai un exercice a faire pour le lycée (Terminal S option Isn). Il s'agit d'utiliser python et de faire cette exercice:
  1. # Affichage de l'alphabet de départ (espace et minuscules)
  2. alpha = [' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
  3. print "Alphabet de départ :"
  4. print alpha
  5.  
  6.  
  7. # Affichage de l'alphabet après décalage
  8. # Demander à l'utilisateur de combien de rang(s) il veut décaler l'alphaber (entier de 1 à 26) - améliorer la saisie TANT Que l'entier n'est pas dans l'intervalle...
  9. # decalage = ..........
  10. alphaDecale = alpha[decalage:len(alpha)]
  11. alphaDecale.extend(alpha[0:decalage])
  12. print "Nouvel alphabet (après décalage) :"
  13. print alphaDecale



Pouvez-vous m'aidé je n'y arrive pas

Autres pages sur : python cryptographie cle cesar

a b L Programmation
31 Décembre 2012 09:57:40

Bonjour ...

On est ici pour t'aider par pour faire t'es devoir !

commence par faire quelque chose, et dit nous la ou tu bloque précisément !

31 Décembre 2012 10:15:45

voila ce que j'ai fais, mais la boucle tant que tourne a l'infinie, je n'arrive pas à faire a ce que sa se reproduit une seul fois

  1. alpha = [' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
  2. print "Alphabet de départ :"
  3. print alpha
  4.  
  5. decalage = int(input("De combien de rang(s) voulez-vous décaler l'alphabet de départ ?"))
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12. a=decalage
  13. a<1
  14. a>26
  15. while (a>26) :
  16. print "Erreur"
  17. decalage = int(input("De combien de rang(s) voulez-vous décaler l'alphabet de départ ?"))
  18. alphaDecale = alpha[decalage:len(alpha)]
  19. alphaDecale.extend(alpha[0:decalage])
  20. print "Nouvel alphabet (après décalage) :"
  21. print alphaDecale
  22.  
  23. print "Nouvel alphabet (après décalage) :"
  24. print alphaDecale

31 Décembre 2012 10:22:43

si ici je ne peut pas me faire aidé pour mes devoirs, sur quel forum dois-je aller alors ?
a b L Programmation
31 Décembre 2012 17:44:04

Pour ton exercice, il faut tester si la valeur donnée est valide (0 <= decalage <= 26), et boucler tant que c'est invalide.
Je te suggère de passer par un booléen : "estValide = False". Comme ça tu boucle tant que "estValide" reste à "False", et dans la boucle tu le mets à "True" si "decalage" est valide.
1 Janvier 2013 16:34:58

voila ce que j'ai fais mais sa ne fonctionne pas

  1. # -*- coding: cp1252 -*-
  2. alpha = [' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
  3. print "Alphabet de départ :"
  4. print alpha
  5.  
  6. decalage = int(input("De combien de rang(s) voulez-vous décaler l'alphabet de départ ?"))
  7.  
  8. a=decalage
  9.  
  10. 0<=a <=26
  11.  
  12. valide = False
  13. while (valide == False) :
  14. print "Erreur"
  15. decalage = int(input("De combien de rang(s) voulez-vous décaler l'alphabet de départ ?"))
  16. while (valide == True) :
  17. alphaDecale = alpha[decalage:len(alpha)]
  18. alphaDecale.extend(alpha[0:decalage])
  19. print "Nouvel alphabet (après décalage) :"
  20. print alphaDecale

a c 232 L Programmation
1 Janvier 2013 18:38:24

Tu ne définies jamais valide, hormis le mettre à false dès le début. Du coup c'est tout le temps false...
1 Janvier 2013 19:36:50

j'ai trouver une autre solution est ce que cela conviendrait ?

  1. # -*- coding: cp1252 -*-
  2. alpha = [' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
  3. print "Alphabet de départ :"
  4. print alpha
  5.  
  6. decalage = int(input("De combien de rang(s) voulez-vous décaler l'alphabet de départ ?"))
  7.  
  8. a=decalage
  9.  
  10. while (a>26):
  11. print "Erreur, vous devez saisir un entier entre 1 et 26 !"
  12. decalage = int(input("De combien de rang(s) voulez-vous décaler l'alphabet de départ ?"))
  13. break
  14. while (a<1):
  15. print "Vous devez saisir un entier entre 1 et 26 !"
  16. decalage = int(input("De combien de rang(s) voulez-vous décaler l'alphabet de départ ?"))
  17. break
  18.  
  19. alphaDecale = alpha[decalage:len(alpha)]
  20. alphaDecale.extend(alpha[0:decalage])
  21.  
  22. print "Nouvel alphabet (après décalage) :"
  23. print alphaDecale

a b L Programmation
3 Janvier 2013 22:02:00

Tu fais 2 boucles différentes : celle du a>26, puis lorsque c'est terminé (a<=26), tu fais la seconde boucle indépendamment.
Donc, si tu mets -1 dès le début, tu ne rentres pas dans la première boucle, mais tu rentres dans la seconde (tu ne reviens plus dans la première). Donc, si tu mets 30, tu sors de la seconde boucle, et tu fais le traitement (alors que ce second nombre est également invalide).

En fait, il te faut juste améliorer le test du while : il te faut faire la boucle tant que c'est invalide, c'est-à-dire tant que a > 26 ou a < 0:
  1. while a<0 or a>26:


Le fait de passer par une variable "valide", te permet de ne faire qu'un seul "input" (pas besoin de faire le premier input si la variable est bien initialisée à False):
  1. while not valide: # boucle tant que ce n'est pas valide
  2. # input
  3.  
  4. # Test de validité
  5. if a >= 0 and a <= 26:
  6. # C'est valide
  7. valide = True

Comme ça, tu n'écris qu'une fois le 'input', et c'est plus simple à comprendre (point de vue fonctionnel et pas algorithmique).
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS