2016-12-30 6 views
-1

この暗号は、キーワードを使用して入力されたメッセージの長さにそれを繰り返した後、数字と数字(アルファベットリストのキーワードとメッセージの各文字の位置)に変換され、それらを合計してサポートされ、変換されますアルファベットリストの文字に戻ります。私は暗号化されたメッセージリスト内の要素の位置を実際の要素(キーワード暗号)に変更するにはどうすればよいですか?

別名再び手紙に合流リストを有効にする方法を見つける必要が私のコード

ある

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

"" .join(joined)? –

+0

[リストの文字列を連結する]の複製があります(http://stackoverflow.com/questions/12453580/concatenate-item-in-list-to-strings) –

+0

いいえ結合リストの要素を変更しようとしていますアルファリストのアルファベットに戻る –

答えて

0

は、これまでのところ、あなたが手紙をシフトしている助けてください適切な量​​ではありますが、依然として序数(または数値)が格納されています。

問題1は26を超える文字を扱うことです(例:z(26)+ a(1)= 27)。

問題2は、数値を数値に戻すためにアルファ配列を使用することです。

何が起きているかを見ることができるように、印刷文を残しました。

# 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値と逆に変換します。

+0

を説明してくれました。 –

関連する問題