簡體   English   中英

如何在加密字符串的函數中修復“字符串索引超出范圍”錯誤

[英]How to fix 'string index out of range' error in a function that ciphers a string

我不知道如何有效地回到字母表的開頭,當(字母索引+13)超出范圍時

我編寫了一個僅在(字母索引+13)在范圍內時才有效的函數。

def rot13(message):
    letters = [i for i in message]
    for i in letters:
        if i.isupper():
            letters[letters.index(i)] = 
string.ascii_uppercase[string.ascii_uppercase.index(i) + 13]
        elif i.islower():
            letters[letters.index(i)] = 
string.ascii_lowercase[string.ascii_lowercase.index(i) + 13]
        else:
            continue
    return ''.join(letters)

當我打電話時,例如rot13('Test'),當然我得到'字符串索引超出范圍'錯誤,我應該怎么解決這個問題?

使用模運算符%

Modulo將數字除以給定因子並保留其余因子,例如:

27 % 26 = 1

在你的情況下,這將是這兩行:

string.ascii_uppercase[(string.ascii_uppercase.index(i) + 13) % 26]

string.ascii_lowercase[(string.ascii_uppercase.index(i) + 13) % 26]

暫無
暫無

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

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