[英]Caesar Cipher Issue in Regards to Caesar Cipher in Python
我的解碼功能可以正常工作,但是我的編碼功能在最后一個字母之前都很好。 計算出來后,它應顯示“ uryyb”打招呼,但應顯示“ uryyl”。 這是我的代碼:
def encode(w, o):
result = ""
w = w.lower()
for i in w:
letter = ord(i)
if ord('a') <= letter <= ord('z'):
new_letter = letter + (o % 26)
if new_letter < 26:
new_letter += 26
result += chr(new_letter)
else:
result += chr(letter)
return result
你在那兒 您處理過if new_letter < 26
但未處理new_letter > 26
編輯:順便看一下由ord(i)返回的值。 您會注意到26不是要檢查的正確數字
假設o
是班次數。 您需要確保ord在a
和z
之間。
# truncate overflowing
while new_letter < ord("a"):
new_letter += 26
# however, case above never shows up. Why?
while new_letter > ord("z"):
new_letter -= 26
result += chr(new_letter)
您將在哪里找到:
>> ord("a") # the base is not 26!
97
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.