def char_shift(char, shift): start = ord('a') if char.isupper() else ord('A') char = ord(char) - start shift = (char + shift) % 26 return chr(shift+start) def caesar(message, shift): out = '' for letter in message: if letter.isalpha(): letter = char_shift(letter, shift) out += letter # or in one line # out += char_shift(letter, shift) if letter.isalpha() else letter return out def decrypt_caesar(message, shift): return caesar(message, shift - (shift*2)) # Add your own assert statements to test your code. sentence = 'But the Caesar Cipher is [still used](http://en.wikipedia.org/wiki/ROT13)' shift = 300 assert(decrypt_caesar(caesar(sentence, shift), 300) == sentence )