恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文: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~zA~Z、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
输入实例
python is good
输出实例
sbwkrq lv jrrg
解题思路:IPO(I:输入 P:处理 O:输出)
I:用户从键盘上输入一串字符
P:原字符+3得到加密后的字符
O:水平输出加密字符
代码实现:
s = input()
t = ''
for c in s:
if 'a' <= c <= 'z':
t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 )
elif 'A' <= c <= 'Z':
t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 )
else:
t += c #t+=是实现了两个字符相加,eg:输入abc第一次循环t = d,第二次循环t = de,第三次循环t = def
print(t)
代码解释:t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 )
在这个代码中最外层的chr()是python类型转换函数,使得输出为字符;ord(c)-ord('a')的作用是计算输入字符和字符‘a’之间的距离,就比如输入i,z到a的距离是8,后面又加上了3,则是在原来的距离基础之上进3位,目的是想输出I,但是现在只是单纯的在距离上加了11,电脑内a的ascll不是0,所以前面还要加上ord('a');最后还有一个%26,这是一个取模运算,目的是用来处理当输入为x、y、z时的处理,比如,输入z时,z距离a25,加3后为28,28%26余2,而2对应的正好是c。