练习:恺撒密码 I
平台:Python123.io
教师:嵩天
描述
凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26
假设用户可能使用的输入仅包含小写字母a~z和空格,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
输入
示例1: python is good
输出
示例1: sbwkrq lv jrrg
a = input()
password = list(a)
outpassword = '' #初始化输出字符串
#制作一个索引表,用于获取输入字符串的“序号”
list1=['a','b','c','d','e',
'f','g','h','i','j',
'k','l','m','n','o',
'p','q','r','s','t',
'u','v','w','x','y','z']
#制作另一个索引表,用于输出加密后的字符串,在末尾又添加了一次abc,免去计算的麻烦
list2=['a','b','c','d','e',
'f','g','h','i','j',
'k','l','m','n','o',
'p','q','r','s','t',
'u','v','w','x','y','z','a','b','c']
length = len(password) #获取输入字符串长度,用于设定循环次数
for i in range(length):
if password[i] != ' ': #如果字符串那一位是字符,则按“序号”+3的规则翻译,并输出加密后的字符
b = list1.index(password[i])
print(list2[b+3],end='')
else: #如果字符串那一位是空格,则直接输出一个空格
print(' ',end='')