DM programme CHiffre de Vigenère - Python - Programmation
Marsh Posté le 28-11-2016 à 00:18:37
Le problème vient de ton "for k ...".
En effet tu vas boucler sur tout les lettres de la clé à chaque fois et donc X prendra toujours la valeur de la dernière lettre de la clé.
Il te faut y remplacer ce for qui ne fait pas ce que tu penses par un index que tu initialises à 0 avant la boucle "for i ..." Et que tu incrémentes modulo C à chaque iteration.
Marsh Posté le 28-11-2016 à 06:40:14
Merci beaucoup pour votre réponse, je vais essayer de modifier ça !
Sinon dans l'idée avec deux boucles "for" je peux pas réussir à le faire ? Car il me semblait que mon prof nous avait conseillé de faire ça, sauf que je n'ai pas réussi...
Marsh Posté le 28-11-2016 à 07:42:15
C'est possible d'utiliser deux boucles for en rusant, mais mon avis est que c'est une très mauvaise idée dans ce cas précis.
Une seule boucle for sur l chaîne de caractères et un index qui boucle sur la clé c'est tout ce dont tu as besoin.
À noter que tu peux itérer sur une chaine de caractère directement en python:
Code :
|
Marsh Posté le 28-11-2016 à 14:27:39
Ah d'accord merci mais je sais pas trop comment faire car on ne l'a pas vu mais je vais y réfléchir.
C'est bien ça, il faut que j'essaie merci !
Marsh Posté le 28-11-2016 à 15:54:26
Je l'ai refait :
t=input("Saisir le message" )
c=input("Donner la clé" )
C=len(c)
T=len(t)
l=0
for i in range (0,T):
w=ord(t[i])
x=ord(c[l])
y=(w+x)-ord('a')
if y>122:
y=y-26
z=chr(y)
l=l+1
if l==C:
l=0
print(z)
Est-ce mieux ?
Marsh Posté le 28-11-2016 à 18:33:04
Oui c'est mieux.
Une version un peu plus lisible:
Code :
|
Ça ne fonctionne que si tous les caractères entrés sont en minuscule et sans accents par contre.
Marsh Posté le 28-11-2016 à 18:38:24
Oh merci beaucoup !! C'est très gentil pour votre aide.
Et oui en effet il faut que ça marche pour les lettres minuscules et sans accents.
Marsh Posté le 08-11-2019 à 15:43:53
Bonjour comment on peut decrypter ce code en python alors?
Marsh Posté le 27-11-2016 à 19:33:27
Bonjour,
Alors voilà je dois faire un programme sur le Chiffre de [/contents/217-le-chiffrement-de-vigenere Vigenère] sur Python. Il doit être très simple car je suis une très grande débutante (c'est pour l'ISN) et je ne m'y connais pas en programmation. Il doit aussi coder seulement les lettres minuscules.
J'ai fait le programme mais je n'arrive pas à comprendre mes erreurs car il ne fonctionne pas.
J'en ai fait plusieurs différents de programme et dans mon ancienne version il fonctionnait seulement si le nombre de caractères de ma clé était supérieure ou égale au nombre de caractères de mon message à coder ( en effet la clé ne se répétait pas ). Je l'ai donc modifié et ce petit problème est résolu sauf que maintenant il ne code pas du tout selon Vigenère...
Voilà mon programme:
t=input("Saisir le message" )
c=input("Donner la clé" )
C=len(c)
T=len(t)
for i in range (0,T):
w=ord(t[i])
for k in range (0,C):
x=ord(c[k])
y=(w+x)-ord('a')
if y>122:
y=y-26
z=chr(y)
print(z)
Si quelqu'un pourrait m'aider svp, seulement en essayant de m'expliquer ce qui ne va pas. Bien sûr je ne demande pas qu'on fasse mon travail mais seulement un petit peu d'aide ou quelque chose qui pourrait m'aider à trouver seule.
Merci d'avance