第三章-4-分支结构

==========分支结构==========

本节对应书本p75-p80

分支结构对应现实生活中需要根据条件来选择后续步骤的实例

比如说

如果刷了牙的话:去吃早饭;

如果没刷牙的话:先去刷牙;

在这个事件中,刷没刷牙就是我们要判断的条件;根据条件的不同去做不同的事(吃早饭或去刷牙)

 

那这种选择如何在python中用代码表述呢?

 

===单分支结构===

if <条件>:

  <语句块>

【如果 <条件>为真,则执行<语句块中的内容>】

 

*注意

  • 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  • 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。

 

 

比如

 

 

 

1.赋值a为整型10

2.判断条件 a>5;10>5返回True,为真(关系运算符返回True或者False,我们在第三章第一节已经介绍过)

3.条件为真则执行语句块 a=a+1;赋值语句先执行等号右边 将11+1的值赋值给等号左边的a;a=11a被重新赋值

4.print(a)输出变量a的值,即11

【输出】11

======

 

又比如

 

 

 

1.赋值a为整型4

2.判断条件 a>5;4>5返回False,为假

3.条件为假则不执行语句块内容,继续执行分支结构后续语句

4.print(a)输出变量a的值,即4

【输出】4

 

===双分支结构===

if <条件>:

  <语句块1>

else:

  <语句块2>

【如果<条件>为真,执行<语句块1>的内容;否则(条件为假),则执行<语句块2>的内容】

======

  

如上程序

如果我们在键盘上输入10;

1.int(input())函数嵌套函数,由内而外,先执行input()获取我们的输入10,并返回字符串型的'10'int('10')返回整型10;执行赋值语句a=10;

2.判断 if a>5;10>5;条件为真,执行if下的语句块print(a+1);输出11

3.执行了if则不执行else;分支结构结束,执行后续语句print('over')输出了字符串'over'

【输出】11,'over'

 

分支结构的特点是:当执行某一分支,其他分支被忽略,可以借助下图流程图来理解

 

 

=======

同理,如果我们输入2

 

1.a=2

2.判断if a>5;2>5;条件为假;执行else下属语句块print(a+2);输出4

3.执行后续语句print('over')输出了字符串'over'

 

 

===多分支结构===

我们可以用多分支结构来进行更加细致的判断

if <条件判断1>:

  <语句块1>

elif <条件判断2>:

  <语句块2>

…….

elif <条件判断n>:

  <语句块n>

else:

  <语句块n+1>

 

【只要条件为真,就执行其所对应的语句块,然后退出该判断结构;当if语句和elif子句的条件都不成立时,执行else子句的语句块】

 

举例如下

 

 

 

1.赋值age为18

2.先判断 age<18为假

3.判断 elif age>=18 and age<30,该条件为真;执行该子句下的语句块print('青年');输出字符串'青年'

4.结束该分支结构,执行后续语句print('over');输出字符串'over'

【输出】'青年','over'

======

 

 

 

修改age的赋值为100

显然不满足if和所有elif子句中的条件;执行else下的语句块print('老年');输出字符串'老年'

结束分支结构,执行后续语句print('over');输出字符串'over'

【输出】'老年','over'

======

当然,else子句是可以省略的

 

 

 

1.赋值age为100

2.不满足if和elif子句中的条件;结束分支结构,执行后续语句

3.执行print('over');输出字符串'over'

【输出】'over'

 

===缩进===

在上面的代码中,同学们应该已经观察到了,有一些语句相较其他语句往里面缩进了

python最具特色的就是使用缩进来表示代码块

 

比如下面的这个程序,print('1')if所属语句块;而print('2')是后续语句

 

 

 

如果我们没有缩进

 

 

 

哪些部分是if下属语句块?哪些又是后续语句?就区分不开了!

 

*注意,缩进的空格数是可变的,但是同一代码块的语句必须包含相同的缩进空格数

举例如下

 

 

 

===例题===

#1

请编写程序完成如下要求:

输入一个成绩,按成绩对应为相应等级输出

[0,60):F级

[60,80):C级

[80,90):B级

[90,100]:A级

比如:

输入成绩为 95,输出等级A

输入成绩为46,输出等级为F

 

思考:

我们可以先用input函数获取键盘输入,但要注意input函数获取键盘输入后返回的是字符串类型,所以要再用int函数转字符串为整型

然后我们可以用多分支结构来实现输出对应成绩;判断成绩在0~60的话,就用print函数输出‘F’,其他区间同理

 

答案

 

 

 

#2

请编写编写程序完成如下要求:

输入一个自然数,判断它是奇数还是偶数并输出

比如:

输入12;输出偶数

输入7;输出奇数

 

思考:

首先要获取这个数的输入

然后我们思考下,如何判断一个数是奇数还是偶数?

一个偶数除以2,余数是多少?  4/2 = 2 …0

一个奇数除以2,余数是多少?  5/2 = 2 …1

 

答案

写法一

 

写法二

 

写法三

 

 

 

 

 

===思考===

 

 

 

 

上面的程序为何输出了字符串'teenager'?

 

因为分支结构一旦执行其中一条支路,就不再执行其他分支的条件判断

故20>6成立后执行print('teenager')然后便结束了该分支结构

 

posted @ 2021-11-24 18:09  半月黄昏  阅读(466)  评论(0)    收藏  举报