为什么break语句在这种情况下不起作用(python)



我有两个列表:

list1 = [0,1,2,3,4,5]
list2 = [6,7,8,9,10,11]

我想把List2添加到List1中,直到我们找到第一个大于10的和,打印出总和,然后停止。

我的代码是:

for val1 in list1: 
for val2 in list2:
if val1+val2 > 10 :
print (val1, val2, val1 + val2)
break
else:
continue

但结果是:

0 11 11
1 10 11
2 9 11
3 8 11
4 7 11
5 6 11

如何使循环在第一个和处停止?非常感谢。注意:我想维护for。。。if循环结构。

您的'break'语句只中断第一个(EDIT:inner(循环。将其放入一个函数中,并返回如下值:

def foo(list1, list2):
for val1 in list1: 
for val2 in list2:
if val1+val2 > 10 :
print (val1, val2, val1 + val2)
return (val1 + val2) # or whatever you are interested in
else:
continue

break关键字用于突破仅一个循环突破多个循环最初使用_breakboolean变量,即False

list1 = [0,1,2,3,4,5]
list2 = [6,7,8,9,10,11]
_break = False
for val1 in list1: 
for val2 in list2:
if val1+val2 > 10 :
print (val1, val2, val1 + val2)
_break = True
if _break:
break
if _break:
break

输出:

0 11 11

只需维护一个标志变量即可脱离外循环。

list1 = [0,1,2,3,4,5]
list2 = [6,7,8,9,10,11]
flag=0
for val1 in list1: 
for val2 in list2:
if val1+val2 > 10 :
print (val1, val2, val1 + val2)
flag=1
break
else:
continue
if(flag):
break

如果在此之后没有任何要执行的内容,可以使用exit((方法终止代码。

list1 = [0,1,2,3,4,5]
list2 = [6,7,8,9,10,11]
for val1 in list1: 
for val2 in list2:
if val1+val2 > 10 :
print (val1, val2, val1 + val2)
exit()
else:
continue

这只是打破了内部循环。若你们想打破这两个循环,那个么,你们可以使用flag。

list1 = [0,1,2,3,4,5]
list2 = [6,7,8,9,10,11]
flag = 0
for val1 in list1: 
for val2 in list2:
if val1+val2 > 10 :
print(val1, val2, val1 + val2)
flag = 1
break
else:
continue
if flag:
break

最新更新