分支结构的应用场景

迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种结构的代码我们称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后我们要根据玩家得到分数来决定究竟是进入第二关还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行,这就是程序中分支结构。类似的场景还有很多,给大家一分钟的时间,你应该可以想到至少5个以上这样的例子,赶紧试一试。

if语句的使用

在Python中,要构造分支结构可以使用ifelifelse关键字。所谓关键字就是有特殊含义的单词,像ifelse就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。下面的例子中演示了如何构造一个分支结构。

"""
用户身份验证Version: 0.1
Author: 骆昊
"""username = input('请输入用户名: ')
password = input('请输入口令: ')
# 如果希望输入口令时 终端中没有回显 可以使用getpass模块的getpass函数
# import getpass
# password = getpass.getpass('请输入口令: ')
if username == 'admin' and password == '123456':print('身份验证成功!')
else:print('身份验证失败!')复制代码

唯一需要说明的是和C/C++、Java等语言不同,Python中没有用花括号来构造代码块而是使用了缩进的方式来设置代码的层次结构,如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了,换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。

当然如果要构造出更多的分支,可以使用if…elif…else…结构,例如下面的分段函数求值。

$$f(x)=\begin{cases} 3x-5&\text{(x>1)}\x+2&\text{(-1}\leq\text{x}\leq\text{1)}\5x+3&\text {(x<-1)}\end{cases}$$

"""
分段函数求值3x - 5  (x > 1)
f(x) =  x + 2   (-1 <= x <= 1)5x + 3  (x < -1)Version: 0.1
Author: 骆昊
"""x = float(input('x = '))
if x > 1:y = 3 * x - 5
elif x >= -1:y = x + 2
else:y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))复制代码

当然根据实际开发的需要,分支结构是可以嵌套的,例如判断是否通关以后还要根据你获得的宝物或者道具的数量对你的表现给出等级(比如点亮两颗或三颗星星),那么我们就需要在if的内部构造出一个新的分支结构,同理elifelse中也可以再构造新的分支,我们称之为嵌套的分支结构,也就是说上面的代码也可以写成下面的样子。

"""
分段函数求值3x - 5    (x > 1)
f(x) = x + 2  (-1 <= x <= 1)5x + 3   (x < -1)Version: 0.1
Author: 骆昊
"""x = float(input('x = '))
if x > 1:y = 3 * x - 5
else:if x >= -1:y = x + 2else:y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))复制代码

**说明:**大家可以自己感受一下这两种写法到底是哪一种更好。在之前我们提到的Python之禅中有这么一句话“Flat is better than nested.”,之所以提出这个观点是因为嵌套结构的嵌套层次多了之后会严重的影响代码的可读性,如果可以使用扁平化的结构就不要去用嵌套,因此之前的写法是更好的做法。

练习

练习1:英制单位与公制单位互换

"""
英制单位英寸和公制单位厘米互换Version: 0.1
Author: 骆昊
"""value = float(input('请输入长度: '))
unit = input('请输入单位: ')
if unit == 'in' or unit == '英寸':print('%f英寸 = %f厘米' % (value, value * 2.54))
elif unit == 'cm' or unit == '厘米':print('%f厘米 = %f英寸' % (value, value / 2.54))
else:print('请输入有效的单位')复制代码

练习2:掷骰子决定做什么

"""
掷骰子决定做什么事情Version: 0.1
Author: 骆昊
"""from random import randintface = randint(1, 6)
if face == 1:result = '唱首歌'
elif face == 2:result = '跳个舞'
elif face == 3:result = '学狗叫'
elif face == 4:result = '做俯卧撑'
elif face == 5:result = '念绕口令'
else:result = '讲冷笑话'
print(result)复制代码

**说明:**上面的代码中使用了random模块的randint函数生成指定范围的随机数来模拟掷骰子。

练习3:百分制成绩转等级制

"""
百分制成绩转等级制成绩
90分以上    --> A
80分~89分    --> B
70分~79分    --> C
60分~69分    --> D
60分以下    --> EVersion: 0.1
Author: 骆昊
"""score = float(input('请输入成绩: '))
if score >= 90:grade = 'A'
elif score >= 80:grade = 'B'
elif score >= 70:grade = 'C'
elif score >= 60:grade = 'D'
else:grade = 'E'
print('对应的等级是:', grade)复制代码

练习4:输入三条边长如果能构成三角形就计算周长和面积

"""
判断输入的边长能否构成三角形
如果能则计算出三角形的周长和面积Version: 0.1
Author: 骆昊
"""import matha = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b > c and a + c > b and b + c > a:print('周长: %f' % (a + b + c))p = (a + b + c) / 2area = math.sqrt(p * (p - a) * (p - b) * (p - c))print('面积: %f' % (area))
else:print('不能构成三角形')复制代码

**说明:**上面的代码中使用了math模块的sqrt函数来计算平方根。用边长计算三角形面积的公式叫做海伦公式。

练习5:个人所得税计算器。

"""
输入月收入和五险一金计算个人所得税Version: 0.1
Author: 骆昊
"""salary = float(input('本月收入: '))
insurance = float(input('五险一金: '))
diff = salary - insurance - 3500
if diff <= 0:rate = 0deduction = 0
elif diff < 1500:rate = 0.03deduction = 0
elif diff < 4500:rate = 0.1deduction = 105
elif diff < 9000:rate = 0.2deduction = 555
elif diff < 35000:rate = 0.25deduction = 1005
elif diff < 55000:rate = 0.3deduction = 2755
elif diff < 80000:rate = 0.35deduction = 5505
else:rate = 0.45deduction = 13505
tax = abs(diff * rate - deduction)
print('个人所得税: ¥%.2f元' % tax)
print('实际到手收入: ¥%.2f元' % (diff + 3500 - tax))复制代码

**说明:**上面的代码中使用了Python内置的abs()函数取绝对值来处理-0的问题。

Python基础教程100天:Day03-分支结构相关推荐

  1. python菜鸟教程100例-Python 基础教程 | 菜鸟教程

    Python 基础教程 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像P ...

  2. Python基础教程(第3版)》笔记:第6章抽象

    Python基础教程(第3版)>笔记:第6章抽象 **斐波那契数列:**每个数都是前两个数的和. fibs = [0,1] for i in range(8):fibs.append(fibs[ ...

  3. 【莫烦Python】Python 基础教程——学习笔记

    文章目录 本笔记基于p1-p29[莫烦Python]Python 基础教程 大家可以根据代码内容和注释进行学习. 安装 我的:python3.8+anaconda+VS code print() pr ...

  4. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

  5. 《Python基础教程》学习笔记——条件、循环及其他语句

    Python基础教程--条件.循环及其他语句 条件.循环及其他语句 再谈 print 和 import 打印多个参数 导入时重命名 赋值魔法 序列解包 链式赋值 增强赋值 代码块:缩进的乐趣 条件和条 ...

  6. Python基础教程-菜鸟教程学习笔记1

    Python基础教程-菜鸟教程学习笔记1 文章目录 Python基础教程-菜鸟教程学习笔记1 前言 Python 简介 1. 第一个Python程序 2. Python 中文编码 3. 基本语法 1) ...

  7. python基础教程 pdf github_Python极速入门的多本最佳书籍,不可错过的Python学习资料...

    Python作为现在很热门的一门编程语言,介于Python的友好,许多的初学者都将其作为首选,为了帮助大家更好的学习Python,我筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. p ...

  8. python基础教程第二版和第三版哪个好-python基础教程 2版和3版哪个适合新手?!...

    python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...

  9. python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...

    下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...

最新文章

  1. SQL语句统计错误率
  2. Jquery 常用方法经典总结
  3. Python-str函数
  4. down 网卡端口周期性的up_Linux 中如何启用和禁用网卡?
  5. 吴恩达的 CS229,有人把它浓缩成 6 张中文速查表!
  6. 浙江巨丰管业有限公司网站
  7. 持续集成接口自动化-jmeter+ant+jenkins(一)
  8. qt开发环境 - c++之输入,输出,名字空间定义,名字空间指令,名字空间声明
  9. java 合并单元格 把数据合并没了_合并单元格
  10. MakerDAO 通过首个实体融资执行提案
  11. cad添加自己线性_如何在CAD中添加自行创建的线型.doc
  12. adb 命令获取ip和mac地址
  13. 电信悦meYMB0300-CW-卡刷-刷机固件
  14. 基于STM32单片机智能RFID刷卡汽车位锁设计(论文
  15. 微信小程序-退款业务
  16. fatal Couldn‘t find remote ref master
  17. 神舟gx8cp5s1uefi的win10和ubuntu18.04双系统删除ubuntu
  18. Android GoogleMap接入
  19. 美团后台开发笔试-数字字符
  20. MySQL从入门到精通:多表查询的灵活运用_02

热门文章

  1. Python批量修改图片size
  2. 要塞十字军东征HD for Mac(即时战略游戏)
  3. 软考高级 真题 2009年上半年 信息系统项目管理师 综合知识
  4. 大量数据进行数组操作的Redim Preserve替代方法
  5. [iOS @2x @3x pt px 分辨率]
  6. Shell 脚本进入编辑模式和保存退出
  7. windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍
  8. 苯乙烯基/綦乙烯基/苯丁烯基修饰BODIPY染料|聚合物BODIPY染料定制服务
  9. 为啥总感觉前端有时候学不懂,想努力学又学不进去?
  10. 数据结构真的很难学?