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

实现一个凯撒密码的变种算法,对输入字符串进行加解密处理
把字母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='')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值