[英]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.