#要求输入一个字符串,然后输入一个整数作为凯撒加密算法的密钥,然后输出该字符串加密后的结果
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