python分支机构_程序流程控制1 if 分支机构

通常,程序结构分为三种,顺序结构,循环结构和分支结构。程序中的语句按照先后顺序执行,成为顺序结构。分支结构则根据测试条件执行不同的代码。循环结构指重复执行相同的代码。Python用if语句实现分支结构,用for和while实现循环结构。

1、if 分支结构

python用if语句来选择要执行的程序代码,从而实现分支结构。在if语句内部,可以包含其他的语句,包括if语句。所以,if语句是目前接触到的第一个复合语句。

1.1 if 语句的基本结构

if语句的基本结构如下。

if 条件测试表达式1:

语句块1

elif 条件测试表达式2:

语句块2

......

else:

语句块n

语句块n

x

1

if 条件测试表达式1:

2

语句块1

3

elif 条件测试表达式2:

4

语句块2

5

......

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=5

2

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=-5

2

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=85

2

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

False

1

1

2<5

2

True

3

2>5

4

False

5

2==5

6

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 False

2

(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

2

1

10

1

0 and 2

2

0

3

[] and 2

4

[]

5

[] and {}

6

[]

7

2 and 5

8

5

9

5 and 2

10

2

or运算同样执行短路运算,在找到第一个为真的对象时,返回该对象,计算介绍。例如:

0 or 2

2

2 or []

2

False or 5

5

[] or {}

{}

{} or False or []

[]

[]

1

10

1

0 or 2

2

2

3

2 or []

4

2

5

False or 5

6

5

7

[] or {}

8

{}

9

{} or False or []

10

[]

3、if...else三元表达式

考查下面的if语句。

if x>y:

a=x

else:

a=y

a=y

1

1

if x>y:

2

a=x

3

else:

4

a=y

该if语句将x,y中的较大值赋值给a,该语句可简化成如下的if...else三元表达式。

a=X if x>y else y

a=X if x>y else y

1

1

a=X if x>y else y

python还支持从列表中挑选对象,其基本格式如下。

a=[x,y][f]

1

1

a=[x,y][f]

f为假时,将x赋值给a,否则将y赋值给a。例如:

x=5

y=10

a=[x,y][x

a

10

a=[x,y][x>y]

a

5

5

1

1

x=5

2

y=10

3

a=[x,y][x

4

a

5

10

6

7

a=[x,y][x>y]

8

a

9

5