Hello, désolé de vous déranger, mais je suis bloqué sur un projet et je n'arrive pas à trouver ce qui ne va pas.
Je suis en train de coder un décrypteur de texte en python (rien de bien fastidieux, ici c'est du code César, donc un décalage dans l'alphabet, avec une clé, qui désigne de combien de lettres on décale le texte.
J'ai réussi à rédiger un code qui, pour un texte et une clé donnée, va décrypter le message.
Je souhaiterais maintenant que le programme teste toutes les clés possibles (entre 1 et 25), et affiche chaque transcriptions associé à la clé qui a permit de l'obtenir.
Dans l'idée, mon code est fonctionnel, mais toutes les combinaisons s'affichent à chaque fois, s'ajoutant les unes à la suite des autres.
Voici les deux codes, celui fonctionnel permettant de décrypter si on a la clé, et la tentative que je n'arrive pas à mettre en place.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
liste = ['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']
for x in range(len(liste)):    #Dedouble la liste
    liste.append(liste[x])
 
message = input('Entrez votre message : ')
cle = int(input('Entrez votre clef ( entre 1 et 25 ) : '))
 
def dechiffrage_lettre(lettre,liste,cle):
    for i in range(len(liste)):
        if lettre==' ':       #au cas ou il y a un espace
            return ' '
        elif liste[i]==lettre:          
                return str(liste[i-cle])            
message_dechiffre = str()
for lettre in message:
    message_dechiffre += dechiffrage_lettre(lettre,liste,cle)
print(message_dechiffre)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
liste = ['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']
for x in range(len(liste)):    #Dédouble la liste
    liste.append(liste[x])
 
message = 'RTSXNJZW' #input('Entrez votre message : ')
 
def dechiffrage_lettre(lettre,liste,cle):
 
    for i in range(len(liste)):
        if lettre==' ':       
            return ' '
        elif liste[i]==lettre:
            return str(liste[i-cle])
 
message_dechiffre = str()
 
cle = 0
 
for n in range(25):
    cle = cle + 1    
    for lettre in message:
        message_dechiffre += dechiffrage_lettre(lettre,liste,cle)    
    print(cle)
    print(message_dechiffre)
Merci d'avance pour votre aide !!

PS: par soucis de simplicité, le mot à décoder est toujours le même, c'est RTSXNJZW, ce qui donne "MONSIEUR", en majuscule, décodé avec une clé = 5.