0x00 分支结构
- 问题的提出
输入两个整数存放与a和b中,使得a中存放的数据小于b中存放的数据。 分析
- 输入两个数a和b
- a可能小于b也可能大于b
- 如果a小于b,不做任何处理
- 反之,交换a和b
- 这类型的问题需要对不同的情况做不同的处理,这样的问题,顺序结构无法解决
- 分支结构的三种基本形式(单分支、双分支和多分支)
单分支结构
单分支结构的语法形式
if (条件表达式): 语句块 # 条件表达式可以是任意表达式,只要结果不为0即认为True,否则为False # 语句块:可以是一条语句,也可以是多条语句
上述问题的解决
- 问题重述:输入两个整数存放与a和b中,使得a中存放的数据小于b中存放的数据。
- Python语言解决
# 输入两个整数存放与a和b中,使得a中存放的数据小于b中存放的数据。 # 使用分支结构 a = int(input('请输入a:')) b = int(input('请输入b:')) print('处理前') print('a={},b={}'.format(a, b)) if a > b: a, b = b, a # 交换a,b变量值 print('处理后') print('a={},b={}'.format(a, b))
双分支结构
- 双分支结果的语法形式
- 问题:比较两个数的大小,输入两个数,输出较大的数
- 问题:输入三条边的长度,判断是否能组成三角形
- 问题:划船问题,一个老师带个x个学生去划船,每条船最多装4个人,问需要多少船。
多分支结构
- 多分支结构的语法形式
问题:计算分段函数的值,当x>1时,y=x,当x<-1时,y=-x,当x介于-1和1之间时,y=1
- 算法流程图
Python语言实现
# 计算分段函数的值,当x>1时,y=x,当x<-1时,y=-x,当x介于-1和1之间时,y=1 x = float(input('请输入x:')) if x > 1: y = x elif x < -1: y = -x else: y = 1 print('y={}'.format(y))
- 算法流程图
- 问题:已知某课程的百分之分数mark,将其转换为五级制
问题:已知坐标点(x,y),判断其所在象限
## 已知坐标点(x,y),判断其所在象限 x = float(input('请输入x坐标值:')) y = float(input('请输入y坐标值:')) if x == 0 and y == 0: print('该点在原点') elif x == 0: print('该点在y轴上') elif y == 0: print('该点在x轴上') elif x > 0 and y > 0: print('第一象限') elif x < 0 and y > 0: print('第二象限') elif x < 0 and y < 0: print('第三象限') elif x < 0 and y > 0: print('第四象限')
问题:判断某一年是否为闰年
判断闰年的条件是:年份能被4整除但不能被100整除,或者能被400整除。- 流程图
- Python语言实现
# 判断某一年是否为闰年 # 判断闰年的条件是:年份能被4整除但不能被100整除,或者能被400整除。 # 方法1:使用多分支结构 y = int(input('请输入年份:')) if y % 4 == 0 and y % 100 != 0: print('{}年是闰年'.format(y)) elif y % 400 == 0: print('{}年是闰年'.format(y)) else: print('{}年不是闰年'.format(y)) # 方法2:借助逻辑运算符 y = int(input('请输入年份:')) if (y % 4 == 0 and y % 100 != 0) or (y % 400) == 0: print('{}年是闰年'.format(y)) else: print('{}年不是闰年'.format(y))
- 流程图
讨论下述条件表达式
if (y % 4 == 0 and y % 100 != 0) or (y % 400) == 0: if (y % 4 == 0 and y % 100 ) or (y % 400) == 0: if (not(y % 4) and y % 100 ) or (y % 400) == 0:
上述三个条件表达式均具有同一效果,但是第一条更
简单易懂
0x01 好程序的三个指标
- 简单易懂
- 扩展性强
- 忠实于自己的算法