2017-01-24 18 views
0

私は、ユーザーが与えるキーまたは番号に従ってメッセージを暗号化するプログラムを作成しようとしていました。たとえば、キーが2の文字Cは、文字Eに変更されます。26文字に制限する方法がわかりませんが、保存された辞書または序数を使用することを考えていました。例えば、今の私のコードは次のようになります。Pythonの単純な暗号化

word = input("Please enter a word") 
numkey = input("Please enter a key") 

for ind in word: 
    encrypt = ord(ind) + int(numkey) 
    actual_encrypt = chr(encrypt) 

このコードの問題は、私は26に暗号化値を制限し、それがそこに達すると、それが再び開始したいということです。したがって、例えば27の代わりに、再び1になります。私はそれを設定する方法についてちょっと混乱しています。ありがとうございました。

+0

簡単な方法は、 '暗号化する場合> =がtooBigあなたが行を置き換えることができますので、場合AZ を:暗号化= = toobig' –

+0

しかし、もし鍵が100のように大きくて巨大で、序数3を持つCと書かれているとしましょう。これは103で、それから26を引いたものですが、文字。 – JazzHandz

答えて

0

モジュラス演算を実行する場合は%とします。たとえば、27 % 261となります。

+0

大丈夫です。私はそれが理にかなっていると思う。ありがとうございました。 – JazzHandz

0

私があなたの質問を正しく理解していれば、この問題を解決する一般的な方法はモジュロ演算子 "%"を使用することです。この演算子は、オペランド間の整数除算の剰余を返します。

なお、このようになります

encrypt = ((ord(ind) + int(numkey)) % 27) + 1 
ord(ind) + int(numkey)

の結果が27である場合、0で% 27結果(1オフセットしたがって追加)。

+0

それは理にかなっています。ありがとうございました。 – JazzHandz

2

私は右理解していれば、あなたの言葉は文字のみ含まれていますと

encrypt = ord(ind) + int(numkey) 

encrypt = ord('a') + (ord(ind) - ord('a') + int(numkey)) % 26 
関連する問題