【问题标题】:Python: "IndexError: string index out of range" BeginnerPython:“IndexError:字符串索引超出范围”初学者
【发布时间】:2016-09-08 23:23:34
【问题描述】:

我知道,我知道,这个问题已经被问过很多次了。但我无法弄清楚如何在这里修复它 - 在这个特定的例子中。当我减去推荐的 2 时,我仍然在 if 语句中得到相同的错误。谢谢 代码(至少应该)采用字符串“s”并根据字母“顺序”对其进行测量,然后给出 s 中按字母顺序排列的最长子字符串的输出。

order = "abcdefghijklmnopqrstuvwxyz"
s = 'abcbcdabc'
match = ""

for i in range(len(s)):
for j in range(len(order)):
    if (((i + j ) - 2) < len(order) and order[i] == s[j]):
        match += s[i] 

print("Longest substring in alphabetical order is: " + match)

【问题讨论】:

  • 什么是s,什么是order?你到底想做什么?你能总结一下你的问题,展示一个示例输入,以及你的预期输出吗?
  • 该代码应该采用一个字符串并找到它与另一个字符串(顺序)共有的最长字符串,并且输出是最长的匹配字符串。我将使用其余代码编辑主代码

标签: python for-loop indexing


【解决方案1】:

那是因为您使用order 列表的索引j 来访问s 列表。 j 可能大于 len(s),因此 IndexError

我不知道你想用代码实现什么。但无论如何,您可以更改以使其正常工作:match += s[i]match += order[j]

【讨论】:

  • 问题实际上在 if 语句中。很抱歉没有澄清
  • 是的。我似乎错过了这一点。感谢您的指出。
猜你喜欢
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 2012-02-01
相关资源
最近更新 更多