簡體   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