我是Python
的新手,但我认为保留词在编程中必须具有相似的含义。但是,我不知道为什么第二个break
内的if-condition
会打破两个for-loop
。
我想检查列表是否为空,所以我使用while-loop
。假设如果newList
仍有元素,它将保留在loop2
中。但是,在break
中的con2
后,它会直接转到loop1
,即使newList
仍有元素。
while list:
print ("loop1")
result = 'n'
for e in list:
print ("loop2")
result = 'n'
for h in longList:
print ("loop3")
for i in e.getList():
print ("loop4")
if (i == h.getId()):
print ("con1")
result = 'y'
break
if (result == 'y'):
print ("con2")
break
答案 0 :(得分:1)
您的link_extractor
语句正在从两个循环中断开,因为如果您在执行第一个break
语句之前查看,则将值break
分配给变量y
。在您第一次循环result
之后,接下来测试的行是break
,然后再次if (result == 'y'):
break
更新:
在Python中,您可以将while newList:
print ("loop1")
result = 'n'
for node in newList:
print ("loop2")
result = 'n'
for parent in parents:
print ("loop3")
for neighbourId in node.getNeighbours():
print ("loop4")
if (neighbourId == parent.getId()):
print ("con1")
result = 'y' # assignment
break # first break
if (result == 'y'): # occurs after the first break and will be true
print ("con2")
break # second break
else:
print('This loop was not terminated with a break statement')
else:
print('while loop ended')
子句添加到循环中,并且只有在循环已完全执行时才会运行此else
子句,即从未到达else
语句