索引错误:字符串索引超出范围python

时间:2017-09-13 14:37:27

标签: python-3.x

我一直在尝试编写一个程序,在字符串中按字母顺序打印出最长的子字符串。 这是我的代码:

s = 'azcbobobegghakl'
n = 0
longest = "a"

while n < len(s):
    x = n
    for i in s:
       if s[x + 1] >= s[x]:
          x += 1
       else:
          break

   sub_string = (s[n:x+1])
   if len(sub_string) > len(longest):
   longest = sub_string
   n += 1

print(“按字母顺序排列的最长子字符串为:”+最长)

因为我在每次迭代时递增'x',因此索引很快就会超出范围。只是想知道我是否有办法解决这个问题。 感谢。

1 个答案:

答案 0 :(得分:0)

试试这个: -

s = 'azcbobobegghakl'
n = 0
longest = "a"
while n < len(s):
    x = n
    for i in s:
        if x+1<len(s) and s[x + 1] >= s[x]:
            x += 1
        else:
            break
    sub_string = (s[n:x+1])
    if len(sub_string) > len(longest):
        longest = sub_string
    n += 1
print(longest)

编辑:当n = len(s)-1 s [x + 1]指向s的第n个字符时,这是无效的。所以你需要一个额外的条件x+1<len(s)来控制它。