初学者。我的代码有问题。虽然循环没有终止。我哪里出错了?
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"
答案 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;来导致无限循环。线