簡體   English   中英

關於使用Python進行凱撒密碼的凱撒密碼問題

[英]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在az之間。

    # 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM