使用两个dict进行映射,一个是从字母到加密代码,另一个是解密:letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
encryption_code = 'LFWOAYUISVKMNXPBDCRJTQEGHZ'
enc = dict(zip(letters,encryption_code))
dec = dict(zip(encryption_code, letters))
s = "HELLO WORLD"
encr = "".join([enc.get(ch, ch) for ch in s])
decr = "".join([dec.get(ch, ch) for ch in encr])
print(encr)
print(decr)
输出:
^{pr2}$
使用你的方法,你的输入必须是大写的,如果你想允许其他字符只需将映射添加到dicts中,那么用户只需将字母加密到A-Z。在letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
encryption_code = 'LFWOAYUISVKMNXPBDCRJTQEGHZ'
letters += letters.lower()
encryption_code += encryption_code.lower()
enc = dict(zip(letters,encryption_code))
dec = dict(zip(encryption_code, letters))
s = "HELLO world"
encr = "".join([enc.get(ch, ch) for ch in s])
decr = "".join([dec.get(ch, ch) for ch in encr])
print(encr)
print(decr)
输出:IAMMP epcmo
HELLO world
任何非字母字符在encr和decr中都是相同的,即:s = "HELLO world!#}%"
IAMMP epcmo!#}% # encr
HELLO world!#}% # decr