虽然循环不破,但找不到bug

时间:2015-08-02 15:34:44

标签: python while-loop

初学者。我的代码有问题。虽然循环没有终止。我哪里出错了?

def check( x ):  # x is defaultdict(list) 
    a = sorted(x , reverse=True)
    j = 0
    while (j<len(a)):
        c = d[a[j]] # current list
        l = len(c) # current list length
        m = 0
        while (m<l) :
            if c[m] == m or c[m] == n-1-m :
                continue
            else:
                return "No"
            m = m + 1
        j = j + 1
    return "Yes"

2 个答案:

答案 0 :(得分:3)

我猜这是问题 -

while (m<l) :
    if c[m] == m or c[m] == n-1-m :
        continue

假设我们有c[m]等于m的值。您只需继续while循环,而不更改m(或c,但我猜测c不会被更改),所以下次再回到这个状态,再次c[m]等于m,因为它们都没有发生变化,您再次continue继续循环。这将永远持续下去。

continue语句不执行while循环的其余部分,它继续循环的下一次迭代。

我认为即使条件为真,你也希望增加m? ,如果是这样尝试像 -

while (m<l) :
    if c[m] != m and c[m] != n-1-m :
        return "No"
    m = m + 1

我不确定你的代码中是否还有其他问题,因为我们真的不知道它应该做什么。

答案 1 :(得分:2)

似乎&#34;继续&#34;语句通过跳过&#34; m = m + 1&#34;来导致无限循环。线