0
votes

essayer d'écrire un programme Python pour créer un cryptage Caesar

string = input("Enter your string ")
for i in string:
     alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
     cipher = "ZYXWVUTSRQPONMLKJIHGFEDCBA"
     char = alphabet.find(i)
     ciphered = string.replace(i,cipher[char])
print(ciphered)
Any idea why this one only returns the last letter of the string changed?

0 commentaires

3 Réponses :


1
votes

Chaque fois que vous passez par votre boucle, vous remplacez une lettre dans String , puis attribuez le résultat de cette substitution à une seule lettre au ciiphérité , écrase quelle que soit la valeur avait précédemment eu. La valeur que vous obtenez à la fin est la valeur qui a été attribuée lors de la dernière itération de la boucle.

modifier réellement la chaîne en place via remplacer est une mauvaise idée depuis que vous allez finir par retourner la même chose lettres d'avant en arrière. Au lieu de cela, vous pourriez accumuler la chaîne ciphéreuse itétirative: xxx


0 commentaires

0
votes

Seule la dernière lettre est modifiée car vous créez une chaîne citiphérité sur chaque boucle de la chaîne d'entrée d'origine, par conséquent sur la dernière boucle, seul le dernier élément est modifié. xxx

cela devrait fonctionner.


0 commentaires

0
votes

Peut-être que vous devriez également convertir la chaîne en lettres majuscules, car sinon la fonction Rechercher () peut renvoyer la valeur -1.

string = string.capitalize()


0 commentaires