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?
3 Réponses :
Chaque fois que vous passez par votre boucle, vous remplacez une lettre dans modifier réellement la chaîne en place via String CODE>, puis attribuez le résultat de cette substitution à une seule lettre au
ciiphérité code>, é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.
remplacer code> 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: p>
Seule la dernière lettre est modifiée car vous créez une chaîne code> citiphérité code> 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é. cela devrait fonctionner. p> p>
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()