平时我们把在if结构中使用else语句当作理所当然,然而,python强大的语法糖可以让else语句在for和while循环中使用!下面我们就通过例子来看一下python的for和break循环结构中使用else语句的技巧
在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块在循环正常结束和循环条件不成立时执行。
对于条件语句 if- else 我们已经很熟悉了, 但是在python中,for-else用于处理遍历失败。
比如我们要实现这样一个功能:找出(81,99)中最大的完全平方数并输出,找不到则输出提示。
如果用c++的for循环实现,必须手动的判断for循环是否遍历失败:
#include
#include
using namespace std;
int main()
{
int i;
float n;
for(i=99;i>81;i–)
{
n=sqrt((float)i);
if(n==int(n))
{
cout