如何修复Python中超出范围的字符串索引

2024-10-05 21:53:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在学习python。书中有一个练习概述了解码代码。我跟随着这个代码,但是我一直在程序中间找回一个错误。

以下是导致问题的代码:

def decode(string_for_decoding):
    result = ""
    for i in range(0, len(string_for_decoding)):
        if string_for_decoding[i+1].isdigit():
            result += string_for_decoding[i] * int(string_for_decoding[i+1])
        elif string_for_decoding[i].isalpha():
            result += string_for_decoding[i]
    return result


string_for_decoding = input("Enter a string to decode: ")
print(decode(string_for_decoding))

Tags: 代码inforstringlenifdef错误
3条回答

您将从0 to len(string)进入for循环,并尝试访问索引:i+1 这是根本原因!要么:

  • 迭代直到长度减少一个,例如直到len(string) - 1
  • 或使用索引 适当地在里面

此外,非常不鼓励使用range(len(x))。如果您也想要索引,您可以简单地以for i in x:的形式迭代任何集合数据类型。请查看^{}。您可以一起忘记索引错误

检查范围中的索引是否大于字符串中的字符数。可能是这样的:

def decode(string_for_decoding: str):
    result = ""
    for i in range(0, len(string_for_decoding)):
        if len(string_for_decoding) > i + 1 and string_for_decoding[i + 1].isdigit():
            result += string_for_decoding[i] * int(string_for_decoding[i + 1])
        elif string_for_decoding.isalpha():
            result += string_for_decoding[i]
    return result

print(decode(input("Enter a string to decode: ")))

您试图获取的索引i+1不能等于或大于len(string)

相关问题 更多 >