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()