2016-09-19 60 views
0

我没有写出打印字符串中最长的子字符串的程序,其中字母出现在我第一次Python测试中的字母顺序中。尝试查找最长的字符串时出现意外错误

注释读

因此,这里是我的尝试“你的程序不符合问题问什么,但也与规则编号4,所以你的答案将不被接受违背”代码:

def obtain_longest_substring(string): 
    current_substring = longest_substring = string[0] 
    for letter in string[1:]: 
     if letter >= current_substring[-1]: 
      current_substring += letter 
      if len(current_substring) > len(longest_substring): 
       longest_substring = current_substring 
     else: 
      current_substring = letter 
    return longest_substring 


def main(): 
    s = input("Enter a string: ") 
    print("Longest substring in alphabetical order is: " + obtain_longest_substring(s)) 

if __name__ == "__main__": 
    main() 

但是,预期的解决方案有一些我必须遵循的规则。规则4说:

对于这样的问题,不要包括输入语句或定义已经提到的变量。我们的自动化测试将为您提供价值。

我是新来的Python。谁能告诉我我做错了什么?

+0

仔细阅读任务。你说它要求*程序*,但它可能实际上是一个*程序*?在这种情况下,它的字面意思就是过时了。 – usr2564301

+0

阅读规则4并查看您的代码。 – TigerhawkT3

回答

0

该规则明确指出而不是包含input语句或定义变量(您也做过)。

你可以尝试重写它:

current_substring = longest_substring = s[0] 
for letter in s[1:]: 
    if letter >= current_substring[-1]: 
     current_substring += letter 
     if len(current_substring) > len(longest_substring): 
      longest_substring = current_substring 
    else: 
     current_substring = letter 

print("Longest substring in alphabetical order is: " + str(longest_substring)) 
+0

非常感谢兄弟。有用!!! – MachineLove

+0

如果它的工作方式与您想要的完全一样,请点击左侧的绿色勾号。这将采取这个答案作为一个公认的:)很高兴我可以帮助。 – jiltedpotato

0

该规则说“不包括输入语句”;你包括一个输入语句(在main)。

+0

那么'main'还会好吗?在Python中背叛我的新手状态。 “全球性”变量足以幸存于任何程序中? – usr2564301

相关问题