Maison >développement back-end >Tutoriel Python >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é ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-29 06:05:02778parcourir

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 :

<code class="python">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</code>

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 revient, la chaîne cryptée contient tous les caractères décalés, comme prévu.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn