在Python中的while
或者for
循环之后还可以有else
子句,作用是for
循环中if
条件一直不满足,则最后就执行else
语句。
for i in range(5):
if i == 1:
print 'in for'
else:
print 'in else'
print 'after for-loop'
# in for
# in else
# after for-loop
但我们发现if
条件在循环的过程中成立了,最终还是执行了else
语句里的内容,这是为什么呢?
好的,我们这时看下面这段程序:
for i in range(5):
if i == 1:
print 'in for'
break
else:
print 'in else'
print 'after for-loop'
# in for
# after for-loop
我们在if
里添加了一个break
,这是因为else
是在for
后执行的,但只有for
循环正常退出时才会执行else
语句(不是由break
结束循环)。而当循环是由break
语句中断时,else
就不被执行。
for
/else
等效于下面这段代码,可以类似C语言那样添加一个flag:
found = False
for i in range(5):
if i == 1:
found = True
print 'in for'
if not found:
print 'not found'
print 'after for-loop'
# in for
# after for-loop
与for
语句相似,while
语句中的else
子句用法是一样的,else
块在循环正常结束和循环条件不成立时执行。