Maison  >  Article  >  développement back-end  >  Pourquoi ma fonction de chiffrement Python César affiche-t-elle uniquement le dernier caractère décalé ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 21:30:29685parcourir

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

Fonction de chiffrement César en Python : dépannage du problème de changement de caractère

En essayant de créer une fonction de chiffrement César en Python, les utilisateurs rencontrent un problème récurrent où seul le dernier caractère décalé est affiché, plutôt qu'une chaîne chiffrée entière. Pour résoudre ce problème, nous examinons le code et identifions la cause première.

Le code fourni adhère aux principes du chiffre de César : il accepte le texte en clair et les valeurs de décalage, et il parcourt chaque caractère, en appliquant les décalages nécessaires. Cependant, il manque une étape cruciale : créer une nouvelle chaîne pour stocker les caractères chiffrés.

Au sein de la fonction, l'initialisation de cipherText doit avoir lieu en dehors de la boucle. Dans l'état actuel des choses, cipherText est réinitialisé à chaque itération, écrasant ainsi le caractère chiffré précédent et entraînant l'affichage uniquement du dernier caractère décalé.

Pour remédier à ce problème, nous modifions 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

    print("Your ciphertext is: ", cipherText)
    return cipherText</code>

Voici comment cela fonctionne :

  • Nous déclarons cipherText en dehors de la boucle, en l'initialisant comme une chaîne vide.
  • À l'intérieur de la boucle, après avoir calculé finalLetter, nous ajoutons à la chaîne cipherText.

Ce code mis à jour accumule correctement tous les caractères décalés, produisant la chaîne chiffrée souhaitée.

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