"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi ma fonction de chiffrement César en Python affiche-t-elle uniquement le dernier caractère décalé ?

Pourquoi ma fonction de chiffrement César en Python affiche-t-elle uniquement le dernier caractère décalé ?

Publié le 2024-11-08
Parcourir:313

Why Does My Caesar Cipher Function in Python Only Display the Last Shifted Character?

Fonction de chiffrement César en Python : chaînes cryptées

Lors de l'implémentation d'une fonction de chiffrement César en Python, un problème courant survient lorsque le texte final crypté affiche uniquement le dernier caractère décalé. Pour résoudre ce problème, il est nécessaire de comprendre le problème à l'origine de ce comportement.

Dans le code fourni, la boucle parcourt chaque caractère du texte brut. Pour les caractères alphabétiques, il décale le code ASCII du caractère en fonction de la valeur de décalage fournie. Cependant, chaque caractère décalé est ajouté à une chaîne vide nommée cipherText dans la boucle. Par conséquent, seul le dernier caractère est affiché comme texte chiffré.

Pour résoudre ce problème, le texte chiffré doit être construit dans la boucle et renvoyé une fois que tous les caractères ont été traités. Ceci peut être réalisé en modifiant le code comme suit :

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

    return cipherText

Avec cette modification, la chaîne cipherText est initialisée une fois et tous les caractères décalés y sont ajoutés dans la boucle. Lorsque la fonction est renvoyée, la chaîne chiffrée contient tous les caractères décalés, comme prévu.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3