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语言实现
  1. = float(input('请输入x:'))
  2. x > 1:
    y = x
  3. 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 好程序的三个指标

  • 简单易懂
  • 扩展性强
  • 忠实于自己的算法
Last modification:March 26th, 2020 at 12:37 am