簡體   English   中英

如何將列表中元素的位置更改為實際元素(關鍵字密碼)?

[英]how to i change the positions of elements in a list to the actual elements (keyword cipher)?

此密碼使用關鍵字並將其重復到輸入的消息的長度,然后將兩者都轉換為數字(字母表列表中關鍵字和消息的每個字母的位置),然后將它們加在一起,然后再轉換回字母表中的字母。

alpha =         ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
keyword = input("Please enter a keyword: ")

sentence = input("Enter message: ")

new_keyword = []
while len(keyword) < len(sentence):
    keyword = keyword + keyword
keyword = (keyword.lower())


for letters in keyword:
    pos1 = alpha.index(letters) + 1
    new_keyword.append(pos1)
print (new_keyword)

new_sentence = []   

for letters in sentence:
    pos2 = alpha.index(letters) + 1
    new_sentence.append(pos2)
print (new_sentence)

joined = [x + y for x, y in zip(new_keyword, new_sentence)]
print (joined)

那是我的代碼

我需要找到一種方法將加入的列表再次變成字母,也就是加密消息

請幫忙

到目前為止,您已經將字母移動了適當的數量,但仍然存儲了序數(或數字)值。

問題 1 是處理超過 26 的字母(例如 z (26) + a (1) = 27)。

問題 2 是使用 alpha 數組將值轉換回數字。

我已經留下了打印語句,所以你可以看到發生了什么。

# Original code - unedited
alpha = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
keyword = input("Please enter a keyword: ")

sentence = input("Enter message: ")

new_keyword = []
while len(keyword) < len(sentence):
    keyword = keyword + keyword
keyword = (keyword.lower())


for letters in keyword:
    pos1 = alpha.index(letters) + 1
    new_keyword.append(pos1)
print (new_keyword)

new_sentence = []   

for letters in sentence:
    pos2 = alpha.index(letters) + 1
    new_sentence.append(pos2)
print (new_sentence)

joined = [x + y for x, y in zip(new_keyword, new_sentence)]
print (joined)

# Take any value over 26 and wrap it back round (so z + 1 = a)

for i in range(len(joined)):
    if joined[i] > 26:
        joined[i] -= 26

print (joined)

# Convert each numeric value back into its character, using the alpha list

ciphertext = []

for letters in joined:
    char = alpha[letters - 1]
    ciphertext.append(char)

print(ciphertext)

一個稍微簡單的方法是使用 ord() 和 chr() 函數。 它們分別將字符轉換為它們的 ASCII 值並返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM