如何修复加密字符串的函数中的“字符串索引超出范围”错误

时间:2019-05-29 13:34:15

标签: python string rot13

((字母的索引+ 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'),我当然会收到“字符串索引超出范围”错误,该怎么解决?

1 个答案:

答案 0 :(得分:0)

使用模运算符%

Modulo将数字除以给定因子,其余部分保留下来,例如:

27 % 26 = 1

在您的情况下,将是以下两行:

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

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