Maison > Article > développement back-end > Pourquoi mon chiffre César en Python ne renvoie-t-il que le dernier caractère décalé ?
En Python, la mise en œuvre du chiffrement César nécessite le décalage des lettres en fonction de l'entrée spécifiée par l'utilisateur. Cependant, une erreur courante est que le texte chiffré final ne reflète que le dernier caractère décalé plutôt que la chaîne entière.
Le code fourni est confronté à ce problème. Il parcourt le texte en clair et calcule le caractère décalé, mais il met à jour une seule variable cipherText dans la boucle. En conséquence, seul le dernier caractère décalé est ajouté à la sortie.
Pour résoudre ce problème, il est nécessaire de concaténer les caractères décalés dans une nouvelle chaîne lors de chaque itération de la boucle. Voici le code corrigé :
<code class="python">plainText = input("What is your plaintext? ") shift = int(input("What is your shift? ")) def caesar(plainText, shift): cipherText = '' for ch in plainText: if ch.isalpha(): stayInAlphabet = ord(ch) + shift if stayInAlphabet > ord('z'): stayInAlphabet -= 26 finalLetter = chr(stayInAlphabet) cipherText += finalLetter print("Your ciphertext is: ", cipherText) return cipherText caesar(plainText, shift)</code>
Maintenant, la variable cipherText est modifiée et ajoutée à chaque caractère décalé, garantissant que la sortie finale contient la chaîne cryptée complète.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!