Maison  >  Article  >  développement back-end  >  Pourquoi mon chiffre César en Python ne renvoie-t-il que le dernier caractère décalé ?

Pourquoi mon chiffre César en Python ne renvoie-t-il que le dernier caractère décalé ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 04:21:02278parcourir

Why does my Caesar Cipher in Python only return the last shifted character?

Fonction de chiffrement César en Python

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!

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