Python 流程控制
Python语言中的流程控制类似其他的编程语言,包括了像if,for和while这样的语法结构。
一、if 语句
if语句包含一个逻辑表达式,对给定的条件表达式进行判断,然后根据结果确定执行的代码块。
if语句的语法形式有三种:
1、 if expression:
if_statement(s) #if语句块
2、 if expression:
if_statement(s) #if语句块
else:
else_statement(s) #else语句块
3、 if expression:
if_statement(s) #if语句块
elif expression:
elif_statement1(s) #elif语句块1
elif expression:
elif_statement2(s) #elif语句块2
...
else:
else_statement(s) #else语句块
先来看看第一种if条件语句的语法形式:
if expression:
if_statement(s) #if语句块
执行过程:首先判断expression表达式是否为真,若表达式为真,则执行if_statement语句块,若表达式为假,则(跳过if_statement语句块)执行if语句块外的语句。
注:在Python中,使用缩进作为其语句的分组方法,推荐使用4个空格,而避免使用Tab缩进。
非空-->True, None或0 -->False
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_statement1.py
var = 10
if var:
print 'if语句块执行'
print var
print 'if语句块外的语句被执行'
执行结果:
if语句块执行
10
if语句块外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_statement2.py
var1 = 0
if var1:
print 'if语句块执行'
print var1
print 'if语句块外的语句被执行'
执行结果:
if语句块外的语句被执行
2、if...else语句的语法形式
if expression:
if_statement(s)
else:
else_statement(s)
执行过程:首先判断 expression表示是否为真,若为真则执行if_statement(s)语句块,若为假则执行else_statement(s)语句块,最后执行if语句块外的语句。
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_else_statement1.py
var = 'this is a string'
if var:
print 'if语句块被执行'
print var
else:
print 'else语句块被执行'
print 'if_else语句块外的语句被执行'
执行结果:
if语句块被执行
this is a string
if_else语句块外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_else_statement2.py
var2 = None
if var2:
print 'if语句块被执行'
print var
else:
print 'else语句块被执行'
print 'if_else语句块外的语句被执行'
执行结果:
else语句块被执行
if_else语句块外的语句被执行
3、if...elif...else语句的语法形式
if expression1:
if_statement(s)
elif expression2:
elif_statement1(s)
elif expression3:
elif_statements2(s)
...
else:
else_statement(s)
执行过程:首先判断expression1是否为真,若为真则执行if_statement(s)语句块,若为假则判断elif语句中的expression2是否为真,若expression2为真则执行elif_statement1(s),
为假则继续判断expression3表达式是否为真,若为真则执行elif_statement2(s)语句块,若为假则继续判断elif中的表达式直到最后一个elif中的表达式,若仍为假则执行else_statement(s)语句块。
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_elif_else_statement.py
var1 = 1
var2 = 2
var3 = 3
if var1:
print 'if语句块被执行'
print var1
elif var2:
print 'elif语句块被执行1'
print var2
elif var3:
print 'elif语句块被执行2'
print var3
else:
print 'else语句块被执行'
print 'if语句外的语句被执行'
执行结果:
if语句块被执行
1
if语句外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_elif_else_statement.py
var1 = 0
var2 = 2
var3 = 3
if var1:
print 'if语句块被执行'
print var1
elif var2:
print 'elif语句块被执行1'
print var2
elif var3:
print 'elif语句块被执行2'
print var3
else:
print 'else语句块被执行'
print 'if语句外的语句被执行'
执行结果:
elif语句块被执行1
2
if语句外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_elif_else_statement.py
var1 = 0
var2 = None
var3 = 3
if var1:
print 'if语句块被执行'
print var1
elif var2:
print 'elif语句块被执行1'
print var2
elif var3:
print 'elif语句块被执行2'
print var3
else:
print 'else语句块被执行'
print 'if语句外的语句被执行'
执行结果:
elif语句块被执行2
3
if语句外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_elif_else_statement.py
var1 = 0
var2 = None
var3 = 0
if var1:
print 'if语句块被执行'
print var1
elif var2:
print 'elif语句块被执行1'
print var2
elif var3:
print 'elif语句块被执行2'
print var3
else:
print 'else语句块被执行'
print 'if语句外的语句被执行'
执行结果:
else语句块被执行
if语句外的语句被执行
3、if... elif... else结构可能嵌套的语法:
if expression1:
statement(s)
if expression2:
statement(s)
elif expression3:
statement(s)
else:
statement(s)
elif expression4:
statement(s)
else:
statement(s)
二、for语句(计数循环)
在Python中for循环与c或c++里中的for有根本的区别,Python的for循环主要是采用遍历可迭代对象的方式进行循环,可迭代对象如列表、元组、字符串以及range()函数生成的列表对象。
for循环语句的语法形式:
for iter_var in sequence:
statement(s)
执行过程:用迭代变量iter_var去迭代sequence中的每一个元素的值,迭代变量每取一次sequence中的元素执行一次statement语句块,直到整个sequence对象元素被迭代耗尽。
for循环迭代遍历有两种方式:值遍历和索引遍历(即序列本身的偏移指数)
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:for_statement.py
'''采用值遍历'''
alist = ['allen', 'jack', 'maco']
for iter in alist:
print iter
执行结果:
allen
jack
maco
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:for_statement.py
'''采用索引遍历'''
alist = ['allen', 'jack', 'maco']
for iter in range(len(alist)):
print alist[iter]
执行结果:
allen
jack
maco
三、while循环(条件循环)
while语句当循环条件为真时,重复不断循环执行一段代码,直到条件为假时结束循环。
while循环语法形式:
while expression:
while_statement(s)
执行过程:若expression表达式为真,循环执行while_statement(s)语句块,直到expression表达式为假结束while循环。
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:while_statement.py
num = 0
while 0<9:
print 'the num is:',num
num += 1
print 'while循环结束'
执行结果:
the num is:0
...
the num is:8
while循环结束
while无限循环:
当while的条件表达式永远为真的时候,while中的代码块会无限制地循环执行,必要时使客户端程序可以与它沟通(比如改变循环条件终止循环)。
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
var = True
while var:
user_var = raw_input('输入False退出循环:')
var = user_var
while循环的单个语句组:
while expression:statement
四、循环中的break与continue语句(控制循环)
一般来说我们可以使用break和continue语句来改变控制流程,当break语句在循环语句中执行时它会立即跳出循环转而执行while循环后面的语句。当continue语句在循环中执行时它会结束本次循环重新开始下一轮循环。
1、break语句
执行程序代码遇到break语句结束循环,在for或while循环语句块中的break语句后面的语句不执行。
例子:
我们依次输出列表中的元素,遇到'jack'的时结束循环:
a、for循环中的break语句
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:for_break.py
alist = ['allen', 'maco', 'jack', 'mali']
for item in alist:
if item == 'jack':
break
print item
执行结果:
allen
maco
b、while循环中的break语句
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:while_break.py
i = 0
while i < 5:
if i == 3:
break
print item
执行结果:
0
1
2
2、continue语句
执行代码遇到continue语句时结束本次循环重新开始下一轮循环,也就是说循环体中在continue语句之后的所有语句继续下一轮循环。对于while语句,执行continue语句后会立即检测循环条件;对于for语句,执行
continue语句后并没有立即检测循环条件,而是先将可遍历对象的下一个元素赋给控制变量,然后再检测循环条件。
例子:
a、for循环中的continue语句
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:for_continue.py
alist = ['allen', 'maco', 'jack', 'mali']
for item in alist:
if item == 'jack':
continue
print item
执行结果:
allen
maco
mali
b、while循环中的continue语句
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:while_continue.py
i = 0
while i < 5:
if i == 3:
continue
print item
执行结果:
0
1
2
4
五、for和while循环中的else子句
和c或c++中的for语句和while语句相比,Python语言中的两种循环有一个很大的不同之处,那就是Python语言中的循环语句可以带一个else子句。
1、for循环语句块带else子句形式
for 控制变量 in 可迭代对象:
循环体
else:
语句块
2、while循环语句块带else子句形式
wile 表达式:
循环体
else:
语句块
如果for循环带else子句时,for语句循环体在整个遍历所有元素过程中没有遇到break语句(循环体没有break语句或break语句不被执行)或没有遇到异常退出,那么
循环体结束后else子句中的语句块就会被执行,否则else语句块不被执行,for循环整个流程结束。与for类似的while循环中的else子句在未执行break语句或没有遇到异常退出时被执行
否则else子句不被执行。continue语句对else子句有没有影响呢?continue语句对else子句的执行与否没有影响,continue语句只结束了本轮循环而没有完全退出循环结构(else子句是for循环或while循环的一部分)。
总之,只要循环体中执行了break语句,那么循环结构中的else子句就不会执行,只有循环体正常退出时,才会执行else子句。
六、pass语句
pass语句在代码中起到占位的作用,表示一个空语句组,意思是什么都不做。假如现在在这个语句块不想添加功能,但在以后可能会添加功能,那么我就可以使用pass语句来占位。
Python语言中的流程控制类似其他的编程语言,包括了像if,for和while这样的语法结构。
一、if 语句
if语句包含一个逻辑表达式,对给定的条件表达式进行判断,然后根据结果确定执行的代码块。
if语句的语法形式有三种:
1、 if expression:
if_statement(s) #if语句块
2、 if expression:
if_statement(s) #if语句块
else:
else_statement(s) #else语句块
3、 if expression:
if_statement(s) #if语句块
elif expression:
elif_statement1(s) #elif语句块1
elif expression:
elif_statement2(s) #elif语句块2
...
else:
else_statement(s) #else语句块
先来看看第一种if条件语句的语法形式:
if expression:
if_statement(s) #if语句块
执行过程:首先判断expression表达式是否为真,若表达式为真,则执行if_statement语句块,若表达式为假,则(跳过if_statement语句块)执行if语句块外的语句。
注:在Python中,使用缩进作为其语句的分组方法,推荐使用4个空格,而避免使用Tab缩进。
非空-->True, None或0 -->False
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_statement1.py
var = 10
if var:
print 'if语句块执行'
print var
print 'if语句块外的语句被执行'
执行结果:
if语句块执行
10
if语句块外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_statement2.py
var1 = 0
if var1:
print 'if语句块执行'
print var1
print 'if语句块外的语句被执行'
执行结果:
if语句块外的语句被执行
2、if...else语句的语法形式
if expression:
if_statement(s)
else:
else_statement(s)
执行过程:首先判断 expression表示是否为真,若为真则执行if_statement(s)语句块,若为假则执行else_statement(s)语句块,最后执行if语句块外的语句。
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_else_statement1.py
var = 'this is a string'
if var:
print 'if语句块被执行'
print var
else:
print 'else语句块被执行'
print 'if_else语句块外的语句被执行'
执行结果:
if语句块被执行
this is a string
if_else语句块外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_else_statement2.py
var2 = None
if var2:
print 'if语句块被执行'
print var
else:
print 'else语句块被执行'
print 'if_else语句块外的语句被执行'
执行结果:
else语句块被执行
if_else语句块外的语句被执行
3、if...elif...else语句的语法形式
if expression1:
if_statement(s)
elif expression2:
elif_statement1(s)
elif expression3:
elif_statements2(s)
...
else:
else_statement(s)
执行过程:首先判断expression1是否为真,若为真则执行if_statement(s)语句块,若为假则判断elif语句中的expression2是否为真,若expression2为真则执行elif_statement1(s),
为假则继续判断expression3表达式是否为真,若为真则执行elif_statement2(s)语句块,若为假则继续判断elif中的表达式直到最后一个elif中的表达式,若仍为假则执行else_statement(s)语句块。
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_elif_else_statement.py
var1 = 1
var2 = 2
var3 = 3
if var1:
print 'if语句块被执行'
print var1
elif var2:
print 'elif语句块被执行1'
print var2
elif var3:
print 'elif语句块被执行2'
print var3
else:
print 'else语句块被执行'
print 'if语句外的语句被执行'
执行结果:
if语句块被执行
1
if语句外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_elif_else_statement.py
var1 = 0
var2 = 2
var3 = 3
if var1:
print 'if语句块被执行'
print var1
elif var2:
print 'elif语句块被执行1'
print var2
elif var3:
print 'elif语句块被执行2'
print var3
else:
print 'else语句块被执行'
print 'if语句外的语句被执行'
执行结果:
elif语句块被执行1
2
if语句外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_elif_else_statement.py
var1 = 0
var2 = None
var3 = 3
if var1:
print 'if语句块被执行'
print var1
elif var2:
print 'elif语句块被执行1'
print var2
elif var3:
print 'elif语句块被执行2'
print var3
else:
print 'else语句块被执行'
print 'if语句外的语句被执行'
执行结果:
elif语句块被执行2
3
if语句外的语句被执行
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:if_elif_else_statement.py
var1 = 0
var2 = None
var3 = 0
if var1:
print 'if语句块被执行'
print var1
elif var2:
print 'elif语句块被执行1'
print var2
elif var3:
print 'elif语句块被执行2'
print var3
else:
print 'else语句块被执行'
print 'if语句外的语句被执行'
执行结果:
else语句块被执行
if语句外的语句被执行
3、if... elif... else结构可能嵌套的语法:
if expression1:
statement(s)
if expression2:
statement(s)
elif expression3:
statement(s)
else:
statement(s)
elif expression4:
statement(s)
else:
statement(s)
二、for语句(计数循环)
在Python中for循环与c或c++里中的for有根本的区别,Python的for循环主要是采用遍历可迭代对象的方式进行循环,可迭代对象如列表、元组、字符串以及range()函数生成的列表对象。
for循环语句的语法形式:
for iter_var in sequence:
statement(s)
执行过程:用迭代变量iter_var去迭代sequence中的每一个元素的值,迭代变量每取一次sequence中的元素执行一次statement语句块,直到整个sequence对象元素被迭代耗尽。
for循环迭代遍历有两种方式:值遍历和索引遍历(即序列本身的偏移指数)
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:for_statement.py
'''采用值遍历'''
alist = ['allen', 'jack', 'maco']
for iter in alist:
print iter
执行结果:
allen
jack
maco
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:for_statement.py
'''采用索引遍历'''
alist = ['allen', 'jack', 'maco']
for iter in range(len(alist)):
print alist[iter]
执行结果:
allen
jack
maco
三、while循环(条件循环)
while语句当循环条件为真时,重复不断循环执行一段代码,直到条件为假时结束循环。
while循环语法形式:
while expression:
while_statement(s)
执行过程:若expression表达式为真,循环执行while_statement(s)语句块,直到expression表达式为假结束while循环。
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:while_statement.py
num = 0
while 0<9:
print 'the num is:',num
num += 1
print 'while循环结束'
执行结果:
the num is:0
...
the num is:8
while循环结束
while无限循环:
当while的条件表达式永远为真的时候,while中的代码块会无限制地循环执行,必要时使客户端程序可以与它沟通(比如改变循环条件终止循环)。
例子:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
var = True
while var:
user_var = raw_input('输入False退出循环:')
var = user_var
while循环的单个语句组:
while expression:statement
四、循环中的break与continue语句(控制循环)
一般来说我们可以使用break和continue语句来改变控制流程,当break语句在循环语句中执行时它会立即跳出循环转而执行while循环后面的语句。当continue语句在循环中执行时它会结束本次循环重新开始下一轮循环。
1、break语句
执行程序代码遇到break语句结束循环,在for或while循环语句块中的break语句后面的语句不执行。
例子:
我们依次输出列表中的元素,遇到'jack'的时结束循环:
a、for循环中的break语句
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:for_break.py
alist = ['allen', 'maco', 'jack', 'mali']
for item in alist:
if item == 'jack':
break
print item
执行结果:
allen
maco
b、while循环中的break语句
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:while_break.py
i = 0
while i < 5:
if i == 3:
break
print item
执行结果:
0
1
2
2、continue语句
执行代码遇到continue语句时结束本次循环重新开始下一轮循环,也就是说循环体中在continue语句之后的所有语句继续下一轮循环。对于while语句,执行continue语句后会立即检测循环条件;对于for语句,执行
continue语句后并没有立即检测循环条件,而是先将可遍历对象的下一个元素赋给控制变量,然后再检测循环条件。
例子:
a、for循环中的continue语句
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:for_continue.py
alist = ['allen', 'maco', 'jack', 'mali']
for item in alist:
if item == 'jack':
continue
print item
执行结果:
allen
maco
mali
b、while循环中的continue语句
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
# file_name:while_continue.py
i = 0
while i < 5:
if i == 3:
continue
print item
执行结果:
0
1
2
4
五、for和while循环中的else子句
和c或c++中的for语句和while语句相比,Python语言中的两种循环有一个很大的不同之处,那就是Python语言中的循环语句可以带一个else子句。
1、for循环语句块带else子句形式
for 控制变量 in 可迭代对象:
循环体
else:
语句块
2、while循环语句块带else子句形式
wile 表达式:
循环体
else:
语句块
如果for循环带else子句时,for语句循环体在整个遍历所有元素过程中没有遇到break语句(循环体没有break语句或break语句不被执行)或没有遇到异常退出,那么
循环体结束后else子句中的语句块就会被执行,否则else语句块不被执行,for循环整个流程结束。与for类似的while循环中的else子句在未执行break语句或没有遇到异常退出时被执行
否则else子句不被执行。continue语句对else子句有没有影响呢?continue语句对else子句的执行与否没有影响,continue语句只结束了本轮循环而没有完全退出循环结构(else子句是for循环或while循环的一部分)。
总之,只要循环体中执行了break语句,那么循环结构中的else子句就不会执行,只有循环体正常退出时,才会执行else子句。
六、pass语句
pass语句在代码中起到占位的作用,表示一个空语句组,意思是什么都不做。假如现在在这个语句块不想添加功能,但在以后可能会添加功能,那么我就可以使用pass语句来占位。