2017-01-24 91 views
0

我試圖創建一個程序,它可以根據用戶給出的鍵或數字來加密消息。因此,例如字母C的鍵爲2將更改爲字母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:加密 - = toobig' –

+0

但是如果密鑰像100這樣瘋狂地大,假設該字母是C將會有序的3.這將是103,它會從中減去26,但它仍然會返回錯誤信。 – JazzHandz

回答

0

你想要模數運算,%。例如,27 % 26給出1

+0

哦,好的。我認爲這是有道理的。謝謝。 – JazzHandz

0

如果我正確理解您的問題,解決此問題的常用方法是使用模運算符「%」。該運算符返回操作數之間的整數除法的其餘部分。

它可能看起來像這樣:

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

如果ord(ind) + int(numkey)結果爲27,% 27結果在0(因此附加的1偏移量)。

+0

這很有道理。謝謝。 – JazzHandz

2

如果我理解正確的話僅包含字符:AZ 如果是這樣,你可以更換行:

encrypt = ord(ind) + int(numkey) 

有:

encrypt = ord('a') + (ord(ind) - ord('a') + int(numkey)) % 26