你有很多重复的代码。。。我们来解决这个问题。。在
首先只为Caesar密码定义2个函数。一个用于加密和解密字符,另一个用于整个字符串。在
正数shift是加密,负数shift是解密。在def cipher_character(character, shift):
# Don't convert anything other than english characters
if not character.isalpha():
return character
# declare some helping constants
alpha_length = 26
ascii_shift = ord('A') if character.isupper() else ord('a')
cipher_shift = shift % alpha_length
# shift down to 0..25 for a..z
shifted = ord(character) - ascii_shift
# rotate the letter and handle "wrap-around" for negatives and value >= 26
shifted = (shifted + cipher_shift + alpha_length) % alpha_length
# shift back up to english characters
return chr(shifted + ascii_shift)
# Rotate a string k-positions
def cipher_string(string, shift):