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

3.1 if-else选择结构

3.1.1 单分支:有条件结账抹零

1.单分支结构

单分支结构流程如图3.2所示。

图3.2 单分支结构流程

2.功能

如果条件为真,则执行语句块1。

3.语法

4.快速体验

【案例3.1】 编写程序,模拟市场有条件结账抹零行为。

【问题分析】

3.2 单分支案例:有条件结账抹零

在案例2.1基础上,假设总金额尾数大于0.5元,不能抹零。张三一次购买了3斤鸡蛋(单价5.6元)、2.4斤黄瓜(单价3.2元)、苹果5斤(单价4.7元),输出抹零后的总价。

【参考代码】

【运行结果】

【程序说明】

1)代码第4行,先假设尾数大于0.5元的计算策略,引入中间变量temp是一种技巧。

2)代码第5、6行是单分支结构,在分支体内修改实收总金额temp。

3.1.2 双分支:判断回文数

1.双分支结构

双分支结构流程如图3.3所示。

图3.3 双分支结构流程

2.功能

如果条件为真执行语句块1,否则执行语句块2。

3.语法

4.快速体验

【案例3.2】 判断回文数。

【问题分析】

3.3 双分支案例:判断回文数

设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。假设n=3,代码如下。

【参考代码】

【运行结果】

【程序说明】

1)代码第1行,强制转化为整型,因为input()函数返回的是字符串。

2)代码第2行,计算除10的余数,提取个位数。

3)代码第3行,计算除10的商相当于小数点左移一位,取整得到前两位,再求除10余数,得到前两位数的个位数,即提取十位数。

4)代码第4行,计算除100的商相当于小数点左移两位,再取整,即提取百位数。

5)代码第5行,构造反序的三位数,原个位上数字变成百位上数字,原百位上数字变成个位上数字。

6)代码第6~9行是一个双分支结构,判断条件:palindrome_num==reverse_order。

5.关于编程风格

Python是使用缩进来区分不同的代码块,所以对缩进有严格要求。

1)缩进不符合规则,解析器会报缩进错误,程序无法运行。

2)缩进的不同,程序执行的效果也有可能产生差异。

例如,图3.4中的代码,左边代码会打印第2行,而右边代码,1、2行都不打印。

图3.4 缩进的不同,程序执行的效果也有可能产生差异

3)相同逻辑层(同一个代码块)保持相同的缩进量。

4)":"标记一个新的逻辑层。

5)Python可以使用空格或制表符(Tab符)标记缩进。缩进量(字符个数)不限。Python PEP8编码规范,指导使用4个空格作为缩进。

6.思考

1)编程判断4位回文数。

2)编程判断3位回文数,不提取十位数。

3)在案例3.2中,如果第一行修改为palindrome_num=input("请输入一个三位数:"),该如何修改案例2.1程序。

4)用单分支实现案例3.2。

5)编写程序,要求判断输入密码是否正确,正确输出“密码正确”,否则输出“密码错误”。

3.1.3 多分支:计算应发放奖金

实际问题时常常需要判定一系列的条件,一旦其中某一个条件为真就立刻停止。如果判断的条件有两个以上,则需要多分支语句。

1.多分支结构

多分支结构流程如图3.5所示。

图3.5 多分支结构流程

2.功能

如果表达式k为真,则执行语句k。

3.语法

4.快速体验

【案例3.3】 计算应发放奖金总数。

【问题分析】

企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万~40万时,高于20万元的部分,可提成5%;超过40万元的部分按3%提成,从键盘输入当月利润,求应发放奖金总数。

3.4 多分支案例:计算应发放奖金总数

【参考代码】

【运行结果】

【程序说明】

1)程序是四分支结构。

2)200000<profit and profit<=400000等价于200000<profit<=400000。

3)代码第7行,100000*0.1+100000*0.075+(profit-200000)*0.05的含义是:假设利润是23万,10万元奖金为1万元,去掉10万后的10万元奖金为7500元,剩下的3万元的奖金为1500元。

4)代码最后一行,第1个%s表示格式化一个对象为字符,占位符;第2个%表示转换。

5.思考

1)程序在什么情况下出错?如何修改?

2)程序可否优化?

3)去掉代码最后一行的%,如何修改程序?

3.1.4 分支嵌套:快递计费系统

1.分支嵌套伪代码

如果分支语句块仍包含分支,则称为分支嵌套(见图3.6)。分支嵌套伪代码如下:

图3.6 分支嵌套

2.快速体验

【案例3.4】 快递计费系统。

【问题分析】

3.5 分支嵌套案例:快递计费系统

快递行业的高速发展,使得人们邮寄物品变得方便快捷。某快递点提供快递计费服务见表3.1。

表3.1 计件价目表

本案例要求根据表3.1提供的数据进行编程,实现快递计费系统。

【参考代码】

【运行结果】

【程序说明】

1)注意:多分支和分支嵌套在功能上没有区别,只是形式的区别。

2)print('快递费为%.1f元'% many)按格式输出第1个%号是占位符,.1f表示保留一位小数,第2个%后的变量表示占位值。

3.思考

用分支嵌套实现案例3.3。 IBh+gP6+ipBPFC7sR0GJLHAAwNCk5pWweU+2tr7XPDcbf+GMQhtYy8IS2Tn26/6J

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