Explanation for Python Ceasar Cipher project


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.


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!