Hi,
I’m working on this project, however I was super stuck so I looked at the solution to understand it better.
alphabet = "abcdefghijklmnopqrstuvwxyz"
punctuation = ".,?'! "
message = "xuo jxuhu! jxyi yi qd unqcfbu ev q squiqh syfxuh. muhu oek qrbu je tusetu yj? y xefu ie! iudt cu q cuiiqwu rqsa myjx jxu iqcu evviuj!"
translated_message = ""
for letter in message:
if not letter in punctuation:
letter_value = alphabet.find(letter)
translated_message += alphabet[(letter_value + 10) % 26]
else:
translated_message += letter
print(translated_message)
I understand almost all of it, except I dont understand this part:
translated_message += alphabet[(letter_value + 10) % 26]
Why do they use the letter value + 10 and then %26? If someone could explain me this that would be nice.
Thanks!
letter_value
is the index (integer) where that letter/character was found within alphabet
so if the letter
is 'a'
then letter_value
would be 0
.
letter_value + 10
shifts the letter over by 10
to get the index of the new letter
index % 26
gives you a number from 0 to 25
(which is needed because the length of alphabet
is 26.
For example, alphabet[28]
would cause an error, but alphabet[28 % 26]
would not … since that would be alphabet[2]
).
The idea is to “wrap around” the alphabet … meaning use %26
to make the index smaller if its too big.
1 Like
Oh I understand now! Thanks!