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 好程序的三个指标

  • 简单易懂
  • 扩展性强
  • 忠实于自己的算法
Last modification:January 25, 2022
If you think my article is useful to you, please feel free to appreciate