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 t
with a
in this case like it did in the first one. Looks like in this case, its replacing t
with a
and then that a
with 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.