[英]Cipher/Decipher Python Beginner Program
問題:有人可以編輯我的2行代碼嗎?
只是想指出這是為了學校作業,所以我不想發布我的所有代碼來防止復制/抄襲問題。 由於我只對配置的一個小要求有困難,所以我認為我的所有代碼都不是必需的。
來自assgn的要求我指的是:
下一頁末= ORD(X)3
Newx將是一個整數。 要找出整數表示的字母,可以使用chr函數,如下所示:actualLetter = chr(x)編寫一個名為cipher的函數,它接受一個字符串和一個鍵(整數)。 該函數將字符串加密為另一個字符串並返回新字符串。 請注意,當我們達到'z'並且我們想要添加密鑰時,我們必須再次“滾動”到字母表中,因此ord('z')+ 3應該給我們ord('c')。
當我運行並測試我的程序並輸入'z'時,我沒有得到'c',我得到:
我導致此問題的程序部分的代碼是:
example_string = letters[((ord(i)+key)%97)%26]
example2_string += letters[((ord(i)-key)%97)%26]
(example_string和example2_string是假名)
你不應該執行任何模97.如果你有一個97個字符的字母表,只執行模97。
這樣做的正確方法是:
所以你會得到:
alphabetSize = ord('z') - ord('a') + 1
k = 3
c = 'z'
if (ord(c) >= ord('a')) | (ord(c) <= ord('z')):
n = ord(c) - ord('a')
n = (n + k) % alphabetSize
ctc = chr(n + ord('a'))
else:
ctc = c
print ctc
魔術(在這種情況下加密是因為在鍵k
之前使用+
)當然是在if
語句中的3行。 當然,這些可以合並 - 如果需要合並為一條線 - 但這更加整潔。
我認為模97處於錯誤的位置。 你應該做ord(i)%97-3然后它的工作原理。
chr(ord('a')+(ord('z')%97-3)%26)
example_string = letters[((ord(i)%97+key)%26]
你可以做的另一件事是從z中減去a然后像這樣做你的減法:
chr(ord('a')+(ord('z')-ord('a')-3)%26)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.