通常,程序结构分为三种,顺序结构,循环结构和分支结构。程序中的语句按照先后顺序执行,成为顺序结构。分支结构则根据测试条件执行不同的代码。循环结构指重复执行相同的代码。Python用if语句实现分支结构,用for和while实现循环结构。
1、if 分支结构
python用if语句来选择要执行的程序代码,从而实现分支结构。在if语句内部,可以包含其他的语句,包括if语句。所以,if语句是目前接触到的第一个复合语句。
1.1 if 语句的基本结构
if语句的基本结构如下。
if 条件测试表达式1:
语句块1
elif 条件测试表达式2:
语句块2
......
else:
语句块nx
1
if 条件测试表达式1:2
语句块13
elif 条件测试表达式2:4
语句块25
......6
else:7
语句块n根据python缩进规则,if,elif和else必须对齐,以表示他们是同一个语句。各个语句块中的代码同样必须对齐。elif和else都可以省略,可以有多个elif。
(1)最简单的if语句
最简单的if语句不包含elif和else。例如:
x=5
if x>0:
print(x,"是正数")
.....
5 是正数1
1
x=52
if x>0:3
print(x,"是正数")4
.....5
5 是正数执行if语句时,python首先计算表达式“x>0”,x的值为5,计算结果为真(True),所以执行print()输出。如果表达式“x>0" 计算结果为假(False),则不会执行print()。
(2)双分支if语句
双分支if语句由if和else两部分组成。例如:
x=-5
if x>0:
print(x,"是正数")
else:
print(x,"不是正数")
......
-5 不是正数1
1
x=-52
if x>0:3
print(x,"是正数")4
else:5
print(x,"不是正数")6
......7
-5 不是正数执行if语句时,python首先计算表达式“x>0”,计算结果为真则执行if部分的语句,否则执行else部分的语句。
(3)多分支if语句
多分支if语句由if、一个或者多个elif和else部分组成,else部分可省略。例如:
x=85
if x<60:
print("不及格")
elif x<70:
print("及格")
elif < 90:
print("中等")
else:
print("优秀"
......
中等)1
10
1
x=852
if x<60:3
print("不及格")4
elif x<70:5
print("及格")6
elif < 90:7
print("中等")8
else:9
print("优秀"10
......11
中等)python在执行多分支if语句时,按照先后顺序依次计算各个测试表达式。当前面的测试表达式为假时,才会计算下一个测试表达式,否则执行相应的语句块,语句块执行完则if语句结束,不在计算后续测试表达式。如果所有的测试表达式为假,而执行else部分的语句。
2、真值测试
python 与C/C++ 在处理真值和逻辑运算的方式有所不同。在python中:
任何非0数字和非空对象都为真
数字0、空对像(如空列表[]、空字典{})、None都为假
比较和相等测试返回True或False
逻辑运算and和or会返回参与运算的真或假的对象
not x: x 为真时,结果为假,否则结果威震
x and y : x和y均为真时,结果为真,否则为假
x or y : x 和y均为假时,结果为假,否则为真
(1)比较 和 相等 测试
比较 和 相等 测试总是返回True或False。例如:
2<5
True
2>5
False
2==5
False1
1
2<52
True3
2>54
False5
2==56
False(2)not 运算
not 运算返回Ture或False。例如:
not True,not False
(False,True)
not 0,not 1,not 2 #非0数字为真
(True,False,False)
not ‘abc‘,not[1,2],not{"a":12} #非空对象为真
(False,False,False)
not ",not [],not {} #空的对象为假
(True,True,True)1
10
1
not True,not False2
(False,True)3
4
not 0,not 1,not 2 #非0数字为真5
(True,False,False)6
7
not ‘abc‘,not[1,2],not{"a":12} #非空对象为真8
(False,False,False)9
10
not ",not [],not {} #空的对象为假11
(True,True,True)(3)and 和 or
python中的and和or运算符总是返回参与运算的对象,而不是True或False。
python在计算and运算时,总是按从左到右的顺序计算。在找到第一个为假的对象时,返回该对象,即使右侧还有需要计算的对象,计算都结束。这种计算方式称为短路计算。如果参与的运算对象都为真,则返回最后一个为真的对象。例如:
0 and 2
0
[] and 2
[]
[] and {}
[]
2 and 5
5
5 and 2
21
10
1
0 and 22
03
[] and 24
[]5
[] and {}6
[]7
2 and 58
59
5 and 210
2or运算同样执行短路运算,在找到第一个为真的对象时,返回该对象,计算介绍。例如:
0 or 2
2
2 or []
2
False or 5
5
[] or {}
{}
{} or False or []
[]1
10
1
0 or 22
23
2 or []4
25
False or 56
57
[] or {}8
{}9
{} or False or []10
[]3、if...else三元表达式
考查下面的if语句。
if x>y:
a=x
else:
a=y1
1
if x>y:2
a=x3
else:4
a=y该if语句将x,y中的较大值赋值给a,该语句可简化成如下的if...else三元表达式。
a=X if x>y else y1
1
a=X if x>y else ypython还支持从列表中挑选对象,其基本格式如下。
a=[x,y][f]1
1
a=[x,y][f]f为假时,将x赋值给a,否则将y赋值给a。例如:
x=5
y=10
a=[x,y][x<y]
a
10
a=[x,y][x>y]
a
51
1
x=52
y=103
a=[x,y][x<y]4
a5
106
7
a=[x,y][x>y]8
a9
5