Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python使用下面的代码知道答案按字母顺序是正确的?_Python_Substring_Alphabetical - Fatal编程技术网

为什么Python使用下面的代码知道答案按字母顺序是正确的?

为什么Python使用下面的代码知道答案按字母顺序是正确的?,python,substring,alphabetical,Python,Substring,Alphabetical,我在《计算机科学与Python编程入门》中遇到了这个问题: 假设s是一个小写字符字符串 编写一个程序,打印字母按字母顺序排列的s的最长子字符串。例如,如果s='azcbobobeghakl',那么您的程序应该按字母顺序打印:最长的子字符串是:beggh 如果是领带,请打印第一个子字符串。例如,如果s='abcbcd',那么您的程序应该按字母顺序打印:最长的子字符串是:abc 我已经阅读了很多关于这个问题的答案(代码)。我可以说我理解这些答案背后的逻辑 然而,我无法理解的是,“Python如何知道

我在《计算机科学与Python编程入门》中遇到了这个问题:

假设s是一个小写字符字符串

编写一个程序,打印字母按字母顺序排列的s的最长子字符串。例如,如果
s='azcbobobeghakl'
,那么您的程序应该按字母顺序打印:最长的子字符串是:beggh

如果是领带,请打印第一个子字符串。例如,如果
s='abcbcd'
,那么您的程序应该按字母顺序打印:最长的子字符串是:abc

我已经阅读了很多关于这个问题的答案(代码)。我可以说我理解这些答案背后的逻辑

然而,我无法理解的是,“Python如何知道答案按字母顺序是正确的?”

以下是我在网上看到的正确代码,仅供参考:

s = "azcbobobegghakl"  
longest = current = s[0]

for i in range (len(s) - 1):

        if s[i+1] >= s[i]:
            current += s[i+1]
            if len(current) > len(longest):
                longest = current
        else:
            current = s[i+1]

    print("Longest substring in alphabetical order is:", longest)
同样,我理解代码背后的逻辑。我不知道的是Python如何知道答案按字母顺序是正确的


我知道这可能是个愚蠢的问题。但由于我是编程新手,这个问题的答案对我来说意义重大。

该程序跟踪到目前为止发现的最长字母顺序子字符串(变量
最长
)。当它发现一个新的比它已经知道的长(
current
)时,它会记住那个(
longest=current

在此代码中,条件

if s[i+1] >= s[i]
比较两个字符。在python中,当比较两个字符时,就是在比较它们的ascii代码。如您所见,字符在ascii表中按字母顺序排列


如果按字母顺序排列,则会将其添加到可能的解决方案中。在另一种情况下,它只是创建一个新的可能的解决方案。

为什么需要排序?如果按字母顺序对字符串进行排序,则按字母顺序排列的最长子字符串将是已排序的字符串本身。再次阅读问题最长的子串是azcbobo[beggh]akl我不明白“理解这些答案背后的逻辑”是什么意思。因为你的例子只是一个普通的简单解决方案。嗨,现在我看我的问题,它的措辞很糟糕。我的意思是Python如何知道答案按字母顺序是正确的。嗨,现在我看看我的问题,它的措辞很糟糕。我的意思是Python如何知道答案是字母正确的。因为字符
I+1
(下一个字符)大于字符
I
(当前字符)。