繁体   English   中英

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

[英]How To Fix String Index Out of Range in 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))

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

您正在从0 to len(string)并在for循环内尝试访问索引: i+1这是根本原因:要么:

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

此外,强烈建议不要使用range(len(x)) 您可以像for i in x:如果您也想要索引,请查看enumerate() 而且您可以完全忘记索引错误。

检查范围内的索引是否大于字符串中的字符数。 它可能看起来像这样:

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: ")))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM