There is still some things to do to complete the script. But I’m going step by step and got stuck on my way.
# On the way to complete a function for the "Caesar cipher" import string def rotate(text: str, key: int): # Creating a list of a-z (lc) lc = list(string.ascii_lowercase) print(lc) # Creating a new list of a-z (new_lc) with shifted positions # for the characters of "lc" according to the argument passed in parameter "key" new_lc =  for i in range(26): i = i + key if i > 25: i = i - 26 new_lc.append(lc[i]) print(new_lc) for char in text: if char.isalpha() and char.islower(): # Replacing each character of "text" by shifting the letter for the value of the "key" text = text.replace(char, new_lc[lc.index(char)]) return text print(rotate("a e t", 7)) print(rotate("e t a", 7))
The output is:
h l a l h h
I was expecting the second one to be
l a h but for some reason (which I don’t understand) it doesn’t replace
a in this case like it did in the first one. Looks like in this case, its replacing
a and then that
h (repeating the replacing for one letter) which is confusing.
I found the script is working fine with some random strings like “hi there”, “kill” but not working with some others like, “kill the cockroach”. I Can’t understand the problem.
Any help to make me understand and provide a standard solution is appreciated.
Thanks for reading this far.