为了账号安全,请及时绑定邮箱和手机立即绑定

Python字典凯撒:查找一个数值,+1,然后返回其关联键

Python字典凯撒:查找一个数值,+1,然后返回其关联键

互换的青春 2021-08-17 09:53:12
这是一个非常有趣的凯撒密码问题。这是我的字典:**{'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}**显然,字典是无序的。它们不是按字母顺序或数字顺序排列的,而是成对排列的。我必须:在这本字典中查找字符串中的每个字母(“嗨,我的名字是凯撒”)返回一个编码的消息。如果字母是“a”,则这是字典中的值 1。但是,我的代码是打印字典中值为 2 的字母“b”。我见过使用列表的凯撒示例(可以由我订购),但并没有尝试以这种方式导航字典......我会在弄清楚这一点后立即发布我的答案。目前我只是对此感到困惑。写下来有助于阐明可能需要的步骤。注意,如果代码正常工作,我认为“”会变成“a”。预期输出:“ijanzaobnajtadbftbt”
查看完整描述

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 


查看完整回答
反对 回复 2021-08-17
?
沧海一幻觉

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.


查看完整回答
反对 回复 2021-08-17
?
冉冉说

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'

但对于一般的解决方案,滑块的方法是最优雅的,我会说。


查看完整回答
反对 回复 2021-08-17
  • 3 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信