3 回答
TA贡献1798条经验 获得超3个赞
好的,这是我的看法
d = {'v': 22, 'g': 7, 'w': 23, 'h': 8, 'a': 1, 'm': 13, 'c': 3, 'o': 15, 'd': 4, 's': 19, 'r': 18, 'u': 21, 'j': 10, 't': 20, 'f': 6, 'k': 11, 'y': 25, 'z': 26, 'l': 12, ' ': 0, 'b': 2, 'e': 5, 'q': 17, 'n': 14, 'i': 9, 'p': 16, 'x': 24}
sentence = 'hi my name is caesar'
for char in ''.join(sentence.split()):
print(d[chr(ord(char) + 1)], end=' ')
输出
9 10 14 26 15 2 14 6 10 20 4 2 6 20 2 19
TA贡献1824条经验 获得超5个赞
您可以创建一个反向字典并使用它来构建您的加密字符串。反向字典将有助于查找与给定字符的“下一个”数字对应的字符:
d = {'v': 22, 'g': 7, 'w': 23, 'h': 8, 'a': 1, 'm': 13, 'c': 3, 'o': 15, 'd': 4, 's': 19, 'r': 18, 'u': 21, 'j': 10, 't': 20, 'f': 6, 'k': 11, 'y': 25, 'z': 26, 'l': 12, ' ': 0, 'b': 2, 'e': 5, 'q': 17, 'n': 14, 'i': 9, 'p': 16, 'x': 24}
reverse_d = {v: k for k, v in d.items()}
sentence = 'hi my name is caesar'
encrypted = ''.join([reverse_d.get(d[c] + 1, reverse_d[0]) for c in sentence])
print(encrypted)
# ijanzaobnfajtadbftbs
请注意,0如果在reverse_d.
TA贡献1877条经验 获得超1个赞
如果字典总是只表示字母表中字符的数量,你甚至不需要字典,这是一个单行:
sentence = 'hi my name is caesar'
encoded = ''.join([chr(ord(c)+1) if ord(c)>96 and ord(c)<122 else "a" for c in sentence])
这给
In [14]: encoded
Out[14]: 'ijanzaobnfajtadbftbs'
但对于一般的解决方案,滑块的方法是最优雅的,我会说。
添加回答
举报