【问题标题】:Scope of variables in Python when using for loop使用 for 循环时 Python 中的变量范围
【发布时间】:2017-11-30 13:06:11
【问题描述】:

我是 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)

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

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

【问题讨论】:

  • 您在最后一个 if 语句中进行比较:sub == temp 应该是 sub = temp,不是吗?
  • 是的!我没注意到……谢谢!

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


【解决方案1】:

你这么说

sub == temp

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

sub = temp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多