![](/img/trans.png)
[英]I am using ROT13 python and I am getting an error when the number is greater than 26
[英]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.