【发布时间】:2020-05-03 18:05:48
【问题描述】:
密码是一种语言的密码。在本案例研究中,我们将探讨当代希腊历史学家报告的一种密码,该密码曾被凯撒大帝用于在战争期间向将军们发送秘密信息。
凯撒密码将消息中的每个字母转换为与原始字母相距固定距离的字母表中的另一个字母。如果我们的加密密钥是 1,我们会将 h 移到下一个字母 i,i 移到下一个字母 j,以此类推。如果我们到达字母表的末尾,对我们来说是空格字符,我们只需循环回到 a。为了解码消息,我们进行了类似的移位,只是我们在字母表中向后移动相同的步数。
练习:
在本作业的五个练习中,我们将创建自己的凯撒密码,以及该密码的消息解码器。
***Step1:我们将定义密码中使用的字母表。 示例代码导入了已导入的字符串库。创建一个称为字母的字符串,该字符串由空格字符 (' ') 后跟(连接)小写字母组成。请注意,我们在本练习中仅使用小写字母。
Step2:我们将定义一个字典,指定字母表中每个字符的索引。 请注意,字母表与练习 1 中的定义相同。创建一个字典,其键由字母表中的字符组成,值由 0 到 26 之间的数字组成。将其存储为位置。
第 3 步:我们将使用凯撒密码对消息进行编码。 请注意,字母表和位置在练习 1 和 2 中定义。使用位置来创建基于消息的编码消息,其中消息中的每个字符都向前移动了 1 个位置,由位置定义。 请注意,您可以使用 result % 27 确保结果保持在 0-26 范围内。 将其存储为 encoded_message。
什么是encoded_message?(用列表理解编写的代码)***
我已经为 Step1 和 Step2 编写了代码。以下是我的第 3 步代码。 我想编辑“encoded_message”以列出理解。下面是我的代码:
message = "hi my name is caesar"
encoded_message = ''
for c in message:
for key, values in positions.items():
if values == (positions[c] + 1) % 27:
encoded_message += key
print(encoded_message)
我的代码运行良好。但是我需要将整个代码写在一行中并发送encoded_message的代码?
【问题讨论】:
-
请
format your code -
positions是什么?将其添加到您的代码中 -
你能分享
positions的样本值吗? -
您说“我正在尝试...”,但您的代码没有显示此类尝试。请发布适用的代码。我们可以帮助您您的尝试,但这不是编码服务。请将此减少并增强为预期的MRE。
-
通过使用列表理解 - 列表理解在哪里?
标签: python list-comprehension data-science