2018.6.18 学习日志-----凯撒密码

#要求输入一个字符串,然后输入一个整数作为凯撒加密算法的密钥,然后输出该字符串加密后的结果
import string
def kaisa(s,k):
    lower=string.ascii_lowercase     #全部的小写字母
    upper=string.ascii_uppercase     #全部的大写字母
    intab=string.ascii_letters       #全都的大小写字母
    outtab=lower[k:]+lower[:k]+upper[k:]+upper[:k]
    table=str.maketrans(intab,outtab)   #创建好了映射表
    out=s.translate(table)           #加密完成
    return print(out)
s=input("请输入一个字符串:")
k=int(input("请输入一个整数密钥:"))
kaisa(s,k)

string.ascii_letters
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’

string.ascii_lowercase
‘abcdefghijklmnopqrstuvwxyz’

string.ascii_uppercase
‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’

Python maketrans() 与 translate() 方法
Python maketrans() 方法用于给 translate() 方法创建字符映射转换表。

可以只接受一个参数,此时这个参数是个字典类型

对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符第二个参数也是字符串,表示转换的目标。两个字符串的长度必须相同,为一一对应的关系。

在Python3中可以有第三个参数,表示要删除的字符,也是字符串

上面的凯撒密码当k=5时

intab:
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
outtab:
fghijklmnopqrstuvwxyzabcdeFGHIJKLMNOPQRSTUVWXYZABCDE

上下一一对应 创建了一个映射表

再利用 translate() 方法进行转换

请输入一个字符串:nihao
请输入一个整数密钥:3
snmft

猜你喜欢

转载自blog.csdn.net/yk_0311/article/details/80725383