使用两个字典进行映射,一个从字母到加密代码,反之进行解密:
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)
输出:
IAMMP EPCMO
HELLO WORLD
使用您的方法,您的输入必须是大写的,并且用户被限制为 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