簡體   English   中英

試圖創建一個 ROT13 解碼器,我發現了一個我不太明白的錯誤

[英]Trying to create a ROT13 decoder and I found an error I don't quite understand

我對一般的編碼世界還是很陌生,在完成最近一個以密碼學為主題的 Codecademy 項目后,我受到啟發嘗試使用類似的設置創建我自己的 ROT13 解碼器,因為我已經看到 ROT13 在一些粉絲網站上使用了很多我經常去掩蓋劇透。 我寫的代碼如下:

ABCs = "abcdefghijklmnopqrstuvwxyz"
punctuation = ".,?'! "
user_input = input("Enter message to be decoded: ")

def ROT13_decode(message):
    translation = ""
    for letter in message:
        if not letter in punctuation:
            letter_value = ABCs.find(letter)
            translation += ABCs[(letter_value + 13)]
        else:
            translation += letter
    return translation

print(ROT13_decode(user_input))

但是,在調試時,我收到以下錯誤消息:

line 10, in ROT13_decode
    translation += ABCs[(letter_value + 13)]
IndexError: string index out of range

我不知道我的字符串索引怎么會超出范圍,因為只有 26 個字母可以使用。 我錯過了什么?

當您將13添加到您的字母值時,您必須能夠將結果循環回字母表的開頭,這是使 ROT13 工作的整個技巧。 如果您將翻譯代碼更改為:

translation += ABCs[(letter_value + 13) % 26]

通常會給你一個大於ABCs長度的值的字母表的上半部分保證總是小於 26。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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