密码对照表的第一行为明码行,放置大写字母表(如下表第一行所示。)
第二行为按照以下规则生成的密码行:
给定一个单词,将单词中所有字符转为大写字母,对于单词中重复出现的字母,保留第一次出现的,删除之后重复出现的该字符。
用剩余字母组成秘钥从密码行的开始位置放置;再用未在秘钥中出现的其他大写字母按字母表顺序依次填充密码行剩余位置。
例如:给定单词“HelloPython”,删除其中重复出现字母后得到秘钥“HELOPYTN”,将秘钥依次填入密码行最开始的位置,再用未在秘钥中出现的其他大写字母按字母表顺序依次填充密码行的剩余位置,最终得到密码行(如下的第二行所示)
密码对照表
ABCDEFGHIJKLMNOPQRSTUVWXYZ
HELOPYTNABCDFGIJKMQRSUVWXZ
输入一个字符串,将其中所有字母转为大写字母,依照明码密码对照表对其做加密处理,输出加密后的密文字符串。
输入格式输入有两个:
输入一个字符串做秘钥
输入一个需要加密的符串
输出格式输出加密后的密文字符串
代码:
# 给定明码行
str1="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
mingma=str1
x=input().upper()
z=input().upper()
y=list(set(x))
y.sort(key=x.index)
x=''.join(y)
for i in x:
str1=str1.replace(i,'')
# 得到密码行
mima=x+str1
# maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
transport=str.maketrans(mingma,mima)
# 调用translate()函数
print(z.translate(transport))
输入:
HelloPython
GONE WITH THE WIND
输出:
TIGP VARN RNP VAGO



