forked from course-work/week1
27 lines
700 B
Python
27 lines
700 B
Python
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 ) |