如何在Python中打印给定字符串的最长字母顺序子字符串?

如何在Python中打印给定字符串的最长字母顺序子字符串?,python,string,Python,String,我对编码基本上是新手,一直在通过edX平台学习。第一个任务之一要求我们编写一段代码,打印给定字符串中最长的字母顺序子字符串 我试着在互联网上到处找,但我能找到的只是固定的答案,而不是为什么我的代码不起作用。我想要一些帮助来找出原因,因为这在我的头脑中是有道理的 代码: s = 'abcdszabc' start = 0 end = 0 a = '' b = '' while len(b) < len(s[start:]): while s[end] <= s[end+1]:

我对编码基本上是新手,一直在通过edX平台学习。第一个任务之一要求我们编写一段代码,打印给定字符串中最长的字母顺序子字符串

我试着在互联网上到处找,但我能找到的只是固定的答案,而不是为什么我的代码不起作用。我想要一些帮助来找出原因,因为这在我的头脑中是有道理的

代码:

s = 'abcdszabc'
start = 0
end = 0
a = ''
b = ''

while len(b) < len(s[start:]):
    while s[end] <= s[end+1]:
        end += 1
    a = s[start:end+1]
    if a > b:
        b = a
    print(b)
    start += 1
    end = start
s='abcdszabc'
开始=0
结束=0
a=''
b=“”
而len(b)
当我运行时,它检索到一个错误声明:

while s[end] <= s[end+1]:
    IndexError: string index out of range

当s[end]对代码应用基本跟踪时

while len(b) < len(s[start:]):
    print ("WHILE 1", s, end)
    while s[end] <= s[end+1]:
        end += 1
        print ("WHILE 2", s, end)
    a = s[start:end+1]
    if a > b:
        b = a
    print("RESULT", b)
    start += 1
    end = start
而len(b)
输出:

WHILE 1 abcdszabc 0
WHILE 2 abcdszabc 1
WHILE 2 abcdszabc 2
WHILE 2 abcdszabc 3
WHILE 2 abcdszabc 4
WHILE 2 abcdszabc 5
RESULT abcdsz
WHILE 1 abcdszabc 1
WHILE 2 abcdszabc 2
WHILE 2 abcdszabc 3
WHILE 2 abcdszabc 4
WHILE 2 abcdszabc 5
RESULT bcdsz
WHILE 1 abcdszabc 2
WHILE 2 abcdszabc 3
WHILE 2 abcdszabc 4
WHILE 2 abcdszabc 5
RESULT cdsz
WHILE 1 abcdszabc 3
WHILE 2 abcdszabc 4
WHILE 2 abcdszabc 5
RESULT dsz
WHILE 1 abcdszabc 4
WHILE 2 abcdszabc 5
RESULT sz
WHILE 1 abcdszabc 5
RESULT z
WHILE 1 abcdszabc 6
WHILE 2 abcdszabc 7
WHILE 2 abcdszabc 8
Traceback (most recent call last):
  File "so.py", line 9, in <module>
    while s[end] <= s[end+1]:
IndexError: string index out of range
而1 abcdszabc 0
而2 abcdszabc 1
而abcdszabc2
而2 abcdszabc 3
而2 abcdszabc 4
而2 abcdszabc 5
结果abcdsz
而1 abcdszabc 1
而abcdszabc2
而2 abcdszabc 3
而2 abcdszabc 4
而2 abcdszabc 5
结果bcdsz
而1 abcdszabc 2
而2 abcdszabc 3
而2 abcdszabc 4
而2 abcdszabc 5
结果cdsz
而1 abcdszabc 3
而2 abcdszabc 4
而2 abcdszabc 5
结果dsz
而1 abcdszabc 4
而2 abcdszabc 5
结果sz
而1 abcdszabc 5
结果z
而1 abcdszabc 6
而2 abcdszabc 7
而2 abcdszabc 8
回溯(最近一次呼叫最后一次):
文件“so.py”,第9行,在

s[end]那么,在错误点,
s
end
的值是多少?哦,我现在看到了。非常感谢你的帮助!!