繁体   English   中英

将代码转换为 python 中的列表理解

[英]Convert the code to list comprehension in python

密码是一种语言的密码。 在本案例研究中,我们将探讨当代希腊历史学家报告的一种密码,该密码曾被 Julius Caesar 在战争期间用于向将军发送秘密信息。

凯撒密码将消息的每个字母转换为与原始字母相距固定距离的字母表中的另一个字母。 如果我们的加密密钥是 1,我们会将 h 移到下一个字母 i,将 i 移到下一个字母 j,以此类推。 如果我们到达字母表的末尾,对我们来说是空格字符,我们只需循环回到 a。 为了解码消息,我们进行了类似的转换,除了我们在字母表中向后移动相同数量的步数。

练习:

在本作业的五个练习中,我们将创建自己的凯撒密码,以及该密码的消息解码器。

***Step1:我们将定义密码中使用的字母表。 示例代码导入了已导入的字符串库。 创建一个称为字母的字符串,该字符串由空格字符 (' ') 后跟(连接)小写字母组成。 请注意,我们在本练习中仅使用小写字母。

Step2:我们将定义一个字典,指定字母表中每个字符的索引。 请注意,字母表如练习 1 中所定义。创建一个字典,其键由字母表中的字符组成,值由 0 到 26 的数字组成。将其存储为位置。

第 3 步:我们将使用凯撒密码对消息进行编码。 请注意,字母表和位置如练习 1 和 2 中所定义。使用位置来创建基于消息的编码消息,其中消息中的每个字符都向前移动了 1 个 position,由位置定义。 请注意,您可以使用 result % 27 确保结果保持在 0-26 范围内。将其存储为 encoded_message。

什么是coded_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的代码?

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

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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM