【问题标题】:Convert the code to list comprehension in python将代码转换为python中的列表理解
【发布时间】: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


【解决方案1】:

如果您只想对消息进行编码,请尝试此操作。这是停止者密码,如果您想了解其他技术,请在 cmets 中告诉我。

def encrypt(text, s):
    result = ""

    # traverse text
    for i in range(len(text)):
        char = text[i]

        # Encrypt uppercase characters
        if (char.isupper()):
            result += chr((ord(char) + s - 65) % 26 + 65)

            # Encrypt lowercase characters
        else:
            result += chr((ord(char) + s - 97) % 26 + 97)

    return result


# check the above function
text = "CEASER CIPHER DEMO"
s = 4
print("Text  : " + text)
print("Shift : " + str(s))
print("Cipher: " + encrypt(text, s))

【讨论】:

  • 请不要在未阐明所有细节的情况下回答问题。问题无处提及加密。如果不清楚 OP 的要求是什么,请发表评论或将问题标记为“需要详细信息”。
  • @HarshalParekh 提问者的代码显然是对凯撒密码的尝试。
  • 我正在尝试打印“encoded_message” - 在指出改进/建议之前,请专注于提出的问题。 @CrazyChucky
  • @HarshalParekh 考虑到问题包括"hi my name is caesar"encoded_message += key,我认为阿里已经很好地关注了它。
  • @CrazyChucky,即使它可以回答这个问题,也不是被问到的。 This 有 3 票的评论证明了我的观点。
猜你喜欢
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多