使用for循环时Python中的变量范围

时间:2017-06-27 12:59:27

标签: python python-3.x for-loop scope anaconda

我是Python的新手(以及一般的编程)。我一直试图通过反复试验来学习它并遇到了一个问题。

我试图实现的代码是获取字母顺序最长的子字符串。也就是说,

  • 输入“ abcdeasdccjh ”,输出应为“ abcde
  • 输入“ abbcdabcd ”时,输出应为“ abbcd

我写的代码如下:

s = 'abbcdabcd'
sub = ''
temp = '' 

for index in range(len(s)):
    temp = s[index]
    for i in range(len(s[index:])):
        if index+i+1 < len(s):
            if s[index+i+1] < s[index+i]:
                break
            else:
                temp += s[index+i+1]

    if len(temp) >= len(sub):
        sub == temp

print('final ',sub)

这可能不是为此实现的最佳逻辑,但它似乎正在起作用。问题是,最终的print语句不断打印子变量的初始值。我该如何克服这个问题?

PS:出于上述目的,如果我可以使用更好的算法,请随时在评论中分享。但是,这对我来说只是次要的事情。

1 个答案:

答案 0 :(得分:2)

你在说那个

sub == temp

请记住&#34; ==&#34;运算符用于比较,不用于赋值。您正在比较sub和temp而不是分配。使用

sub = temp