购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务一
使用分支结构

在现实生活中,对于一件事情可能会有多个解决方案。例如,如果今天不下雨就去爬山,如果下雨就去看电影。在程序设计语言中使用分支结构来解决这类问题,分支结构能够根据不同的条件选择执行不同的分支,从而增强程序的灵活性和实用性。

微课

活动一 计算整数的绝对值

【问题描述】

输入一个整数,输出这个整数的绝对值。

●输入数据:

-564

●输出结果:

x的绝对值为 564

【题前思考】

根据问题描述,填写表 3-1-1。

表 3-1-1 问题分析

【解题思路】

计算一个数的绝对值,首先判断这个数是负数还是正数,如果是负数就取相反数,如果是正数就不变。因此,我们只需要考虑输入的数为负数的情况,将其转换为它的相反数即可,而正数就不做任何改变。

【程序代码】

【代码分析】

①:将输入数据转换为整数存入变量x。

②:判断x是否小于 0(为负数),如果为负数就执行语句x=-x。注意if和其后的表达式x<0 之间至少要有一个空格,而且表示条件的表达式之后还有一个西文的冒号(:)。if下方受if控制的语句块要缩进,当条件成立时会执行if下方的语句块。此处的语句块只有一条语句x=-x,表示将x的相反数再赋给x。注意观察print( )函数,它就没有缩进,这就意味着它与if无关,不管条件是否成立,都需要执行。

【技术全貌】

1.单分支结构语句

if语句的一般格式为:

其功能是先计算条件表达式的值,如果条件表达式成立,则执行后面的语句块,执行的语句块可以是多行,以缩进格式来表示同一范围;当条件表达式不成立时,则跳过语句块,结束分支结构,执行分支结构后面的代码,执行流程图如图 3-1-1所示。

条件表达式可以是一个单一的值或者变量,也可以是复杂的表达式。False、0、空字符串、None(空值)、[ ](空列表)、{}(空字典)等都表示不成立,其他表示成立。

语句块由相同缩进量的若干条语句组成,表示条件成立时要执行的语句序列。

注意:条件表达式后面的冒号(:)千万不要忘记。

2.比较运算符和关系表达式

图 3-1-1 if语句执行流程图

if后的表达式可以是任何类型的表达式,但通常是关系表达

式和逻辑表达式。本活动介绍关系表达式,关系表达式中的运算符称为比较运算符,Python中的比较运算符见表 3-1-2。

表 3-1-2 比较运算符

一展身手

输入两个数,按从大到小的顺序输出。程序流程图如图 3-1-2所示。

输入:12 26

输出:26 12

活动二 判断闰年

微课

【问题描述】

输入一个年份,判断是否为闰年。闰年的条件是年份能被 4整除且不能被 100 整除,或者能被 400 整除。

图 3-1-2 程序流程图

●输入数据:

2000

●输出结果:

是闰年

【题前思考】

根据问题描述,填写表 3-1-3。

表 3-1-3 问题分析

【解题思路】

根据闰年的定义,判断闰年的第一条件为年份能被 4 整除且不能被 100 整除,第二条件为能被 400 整除,两者只需要一个成立即是闰年。

【程序代码】

【代码分析】

①:一个年份,要么是平年,要么是闰年,因此使用分支来进行判断。首先判断闰年,只要满足两个条件中的任意一个即是闰年,一个是年份能被 4 整除但不能被 100 整除,表示为y%4==0 and y%100!=0,运算符and是布尔运算符表示运算符两边都成立结果才成立,意思就是y能被 4 整除而且y不能被 100 整除。另一个条件则是能被 400 整除,表示为y%400= = 0 即除以 400 的余数为 0。这两个条件满足其中之一就是闰年,所以中间用or来连接。or也是布尔运算符,表示运算符两边只要一边成立结果就成立,整个表达式的意思就是(y%4==0 and y%100!=0)成立或者(y%400 = = 0)成立。如果整个表达式成立,就执行下面缩进的语句块,在这里是print("是闰年"),输出“是闰年”这 3 个字。

②:如果不是闰年就是平年,执行else下面的语句,注意else后也有冒号(:),且下面的语句块也要缩进,表示if后的表达式不成立时要执行的语句。

【优化提升】

以上代码可改写为if-else表达式,代码更加简洁:

"是闰年" if y%4==0 and y%100!=0 or y % 400 == 0 else "是平年",这个表达式表示的意思是如果y%4==0 and y%100!=0 or y % 400 == 0 成立,则其值为if前的表达式的值“是闰年”,否则其值为else后的表达式的值“是平年”。

【技术全貌】

1.双分支结构语句

if else语句的一般格式为:

if 条件表达式:

其功能是先计算条件表达式的值,如果条件表达式成立,则执行后面的语句块 1;当条件表达式不成立时,则执行语句块 2,执行流程图如图 3-1-3所示。

else不能单独使用,必须和if一起使用,并且要正确配对。

if条件表达式和else后面的冒号(:)千万不能忘记。

图 3-1-3 if else语句执行流程图

在编程的过程中,有时候我们会先搭建起程序的整体逻辑结构,只是暂时不去实现某些细节,而是在这些地方加一些注释,方便以后再添加代码。Python还提供了空语句pass,用来让解释器跳过此处,什么都不做。

当条件表达式t<=0 成立时,执行空语句pass,跳过此处执行if else语句后面的语句。

2.逻辑运算符和逻辑表达式

Python支持布尔运算(也称逻辑运算),详细描述见表 3-1-4。

表 3-1-4 逻辑运算

例如:

输出结果为:

1 - 这是与运算,a、b都为 true

2 - 这是或运算,a、b都为 true,或其中一个变量为 true

3 - 这是非运算,a为真

把a的值改为 0,输出结果为:

1 - 这是与运算,a、b有一个不为 true

2 - 这是或运算,a、b都为 true,或其中一个变量为 true

3 - 这是非运算,a为假

一展身手

编写一个程序,输入一个字符,如果是大写字母就输出对应的小写字母,如果是小写字母就输出对应的大写字母。程序流程图如图 3-1-4 所示。

微课

提示:字符串的方法islower( )和isupper( )用于判断字符串的字符是否全是大写或全是小写。

图 3-1-4 程序流程图

活动三 百分制成绩转换成等级

【问题描述】

输入一个学生的百分制成绩,按以下规则将百分制成绩转换成等级:90 分及以上为A等级,70~89 分为B等级,60~69 为C等级,60 分以下为D等级。

●输入数据:

75

●输出结果:

B

【题前思考】

根据问题描述,填写表 3-1-5。

表 3-1-5 问题分析

【解题思路】

成绩有A、B、C、D4 个等级,即有 4 个条件,需要使用多分支来解决这个问题。成绩在90 分及以上为A等级,成绩在 70~89 分为B等级,成绩在 60~69 分为C等级,成绩在 60 分以下为D等级,正确表示几个条件非常重要。

【程序代码】

【代码分析】

①:判断输入的成绩是否在 70~90 分(包括 70,不包括 90)。elif是else if的缩写,表示“反之再判断”的意思。elif前面的if或其他elif判断失败之后,才会执行此处的判断,也就是说x>=90 不成立时才会执行到这里判断后面的条件x>=70 and x<90。当条件成立时执行其后缩进的语句块print("B"),如果不成立执行后面的elif或else子句。

②:当前面列出的所有条件都不成立时执行else后面缩进的语句块print("D"),这是一个可选的子句,根据情况选用。

【技术全貌】

多分支结构语句的格式为:

其功能是先计算条件表达式 1 的值,如果条件表达式 1 成立,则执行后面的语句块 1;如果条件表达式 1 不成立则判断条件表达式 2,如果条件表达式 2 成立,则执行后面的语句块 2;如果条件表达式 2 不成立则继续判断条件表达式 3,如果条件表达式 3 成立,则执行后面的语句块 3;依次类推,如果前面的条件表达式均不成立,则执行语句块n+1,如果没有else后面的语句块n+1,则什么也不执行,结束分支语句,结构流程图如图 3-1-5 所示。

图 3.1.5 多分支结构流程图

注意:

elif和else均不能单独使用,必须和if一起使用,并且要正确配对。

每一个if、elif、else后面都有冒号(:),均不能省略。

不管有多少个分支,都只能执行一个分支,或者一个也不执行,不能同时执行多个分支。

一展身手

所示。编写一个程序,输入x的值,计算分段函数 的值。程序流程图如图 3-1-6

图 3-1-6 程序流程图 FyKJ9tKHVIRu5VBN3U7BZ5vq7DG+mblT3DC6Dc/VS/rWZ0fsBniH3IVMGFc9aSyk

点击中间区域
呼出菜单
上一章
目录
下一章
×