Skip to content

Latest commit

 

History

History
188 lines (141 loc) · 4.29 KB

149-206033-条件分支流程总结.sy.md

File metadata and controls

188 lines (141 loc) · 4.29 KB
show version enable_checker
step
1.0
true

位运算符

回忆

  • 这次研究了移位运算符
    • << 左移 相当于 ✖️2
    • >> 右移 相当于 ➗️2
  • 我们从逻辑运算到位运算再到移位运算
  • 走了好远
  • 最后我们总结一下条件分支流程吧?🤔

什么是分支流程

图片描述

  • 满足某个条件的时候
  • 执行某些代码
  • 这就是单分支 if
  • 如果不满足条件呢?

双分支

图片描述

  • 满足条件 if
    • 如何处理
  • 不满足条件 else
    • 又如何处理

多分支

图片描述

  • 有多种分支的可能性
  • 需要用 elif 来分析出各种分支
  • 当然分支里面还有分支

嵌套分支

图片描述

  • 分情况讨论之后
    • 再分情况讨论
    • 不断细分下去
  • 这些情况是如何得到的呢?

运算符

图片描述

  • 比较运算符
  • 成员测试运算符 in
  • id 测试运算符 is
  • 这些运算符运算的结果是 bool 型的变量,就两种
    • True
    • False
  • 布尔型的变量可以做什么 bool 型的运算符么?

布尔运算

图片描述

  • 布尔运算包括
    • 逻辑非
    • 逻辑与
    • 逻辑或
  • 除了布尔运算还有什么运算?

位运算

图片描述

  • 位元运算
    • 按位与
    • 按位异或
    • 按位或
  • 移位运算
    • 左移
    • 右移
  • 我们回到最初
  • 为什么要有条件语句呢?
  • 分类讨论
  • 用不同的逻辑处理不同的问题

存钱

图片描述

  • 如果小于等于 0 了
  • 那么就需要提示出错了
  • 太小了行
  • 太大了也不行
  • 存钱罐就爆掉了
  • 而且精度也是问题

精度

图片描述

  • 精度小于 0.01 不行
  • 没有一厘钱的物理实体
  • 没法存
  • 需要报错
  • 这就是防御型编程

防御型编程

  • 用户是不知道怎么回事的
  • 一定要处理异常的情况
  • 给用户能够理解的信息
  • 不要让用户看到下面这些

图片描述

  • 用户是看不懂的!

主动防御的好处

  • 增强系统的健壮性
  • 这就是防御型编程
  • Defensive programming
    • 主动判断
    • 容错
    • 健壮性
  • 而且要处理输入钱数的时候可能出现"oeasy"
  • 但是 int("oeasy")会直接报 error 的情况
  • 这就不只需要 if
  • 而且需要 try 了

动手

moneystr= input("how much you want to save:")
try:
    f_money = float(moneystr)
except:
    print(moneystr,"is not a float number.")
else:
    if (f_money<=0):
        print("money should be more than 0")
    elif (f_money>=100):
        print("money should be less than 100")
    elif (f_money*100 - int(f_money*100) > 0):
        print("money with a precision of cent")
    else:
        print("you money",f_money,"is saved!")
  • 这样就可以保证用户无论输入什么
  • 程序都能跑
  • 而且都有合适的提示信息

提示

图片描述

  • 以上各种错误情况已经处理

图片描述

  • 如果有颜色提示就更好了

总结

  • 这次研究了条件分支相关的
    • 有各种分支情况
    • 比较运算符
    • 逻辑运算符
    • 位运算符
  • 最后还做了一个主动防御
  • 现在我们了解了两种程序结构
    1. 顺序结构
      • 从上到下依次执行
      • 一条笔直的大马路
      • 一路畅行无阻
    2. 分支结构是指当程序执行到某步时
      • 需根据实际情况选择性的执行某部分代码
      • 就如同生活中的十字路口
      • 不可能同时走多条路
  • 还有什么结构呢?🤔
  • 下次再说 👋