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


我不知道

如何有效地回到字母表的开头,当(字母索引 + 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'(,当然我会收到"字符串索引超出范围"错误,我应该如何处理这个问题?

使用取模运算符%

模数按

给定因子除以数字并保留其余部分,例如:

27 % 26 = 1

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

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

相关内容

  • 没有找到相关文章

最新更新