您的位置:首页 > 编程语言 > Python开发

使用Python 完成凯撒密码的实现

2017-09-27 09:52 459 查看
实现一个凯撒密码的变种算法,对输入字符串进行加解密处理

把字母a-z分别循环对应为相距13个位置的字母n-m,即

原文字母: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

对应字母:n o p q r s t u v w x y z a b c d e f g h i j k l m

大写字母对应方式与小写字母类似,其他符号(含标点符号)不作处理

输入格式:

一个英文字符串

输出格式:

经过上述算法加密的字符串

输入样例:

The Zen of Python

输出样例:

Gur Mra bs Clguba

其实并不难

巧妙的使用

ord (‘A’) —-> 将字母转换对应的Asci码

chr ( 99 ) —- >将对应的asci码转换为字母

然后根据字母的范围求解:

a-m A-M 的范围的时候 ASCI码+13

N-Z n-Z 的范围的时候 ASCI码+12-26

然后转换成对应的字母即可

# input_str = "The Zen of Python"

# print(input_str)

input_str = input()

start1 = ord('A')
mid1 = ord('M')
end1 = ord('Z')

start2 = ord('a')
mid2 = ord('m')
end2 = ord('z')

dis = end2 - start2  # 26个字母的距离

print('{}-{}-{}-{}-{}-{}'.format(start1, mid1, end1, start2, mid2, end2))
print('{}-{}-{}-{}-{}-{}'.format(chr(start1), chr(mid1), chr(end1),
chr(start2), chr(mid2), chr(end2)))

for i in range(len(input_str)):
src = input_str[i]
dit = ""
cha_int = ord(src)

if (cha_int >= start2 and cha_int <= mid2) or (cha_int >= start1 and cha_int <= mid1):
# 当A-M    a-m
dit = chr(cha_int + 13)  # 直接加13即可
elif (cha_int > mid2 and cha_int <= end2) or (cha_int > mid1 and cha_int <= end1):
# 当 N-Z  n-z 的时候
dit = chr(cha_int + 12 - dis)  # 注意这里是 +12 然后-dis
else:
dit = chr(cha_int)

print(dit, end='')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: