Skip to content

Latest commit

 

History

History
242 lines (180 loc) · 5.46 KB

257-203372-双分支结构_if_else_闪烁的变色狐狸.sy.md

File metadata and controls

242 lines (180 loc) · 5.46 KB
show version enable_checker
step
1.0
true

比较运算符

回忆

  • 上次研究了 not
    • not 就是取反
    • 原来 True 的变 False
    • 原来 False 变 True

图片描述

  • True 和 False 都是 bool 类型变量
    • bool 类型是从 int 型派生而来
    • bool 类型和其他类型之间可以相互转化
    • 如果我相对于 bool 类型判断
  • 真假情况分别处理应该怎么办呢???🤔

重来

图片描述

  • 如果大于 38 度
    • 就报警
t = float(input("your temperature:"))
if t > 38:
    print("\033[41m[warning]\033[0mYou have a fever!")
    print("\033[41m[warning]\033[0mTake a rest!")
  • 那如果小于等于 38 度呢?

判断

  • 这样就是一个岔路口
    • 做判断
    • 两条路

图片描述

  • 两条路都输出提示

补充

图片描述

  • 而且这两个条件
    • t> 38
    • t<= 38
      • 刚好是互补的条件

图片描述

  • 把所有可能性在同一点一分为二
    • 合起来是全集
    • 交起来是空集
  • 还有什么类似的互补的条件

互补运算符

运算符 互补运算符
> <=
< >=
== !=
is is not
in not in
  • 其实构成互补还有个最简单的方法
    • 只需要在原来的条件前面加否定 not
    • 就可以了
  • 比如 t > 38 互补的条件其实就是
    • not t > 38
    • t > 38not t > 38 交集为空 并集为全集

图片描述

  • 这样的两个 if 具有特殊性
  • 可以修改为 else

else

  • 回忆 else
    • 这个 else 其实我们以前见过
  • try 之后
    • 如果出了问题
      • 或者说发现了异常
      • 进入 except
    • 如果没出问题
      • 进 else

图片描述

  • 但是要说起 else
    • 还是和 if 最为登对

if - else

t = float(input("your temperature:"))
if t > 38:
    print("\033[41m[warning]\033[0mYou have a fever!")
    print("\033[41m[warning]\033[0mTake a rest!")
else:
    print("\033[42m[healthy]\033[0mYou are ok!")
    print("\033[42m[healthy]\033[0mThat is all!")
  • 要么满足 t>38
    • 报警
  • 要么不满足 t>38
    • 报平安

流程图

图片描述

  • 这种分析的方式还是很多的
  • 可以从汇编角度理解么?

汇编角度

  • 这个例子怎么理解?

图片描述

  • 反汇编

图片描述

  • 如果判断条件(condition)直接为True呢?

永真条件

  • 条件永远为真

图片描述

  • 编译器把条件语句直接给优化了

    • 永真的必执行
  • 5、6两句

    • 永远不会执行
    • 被叫做死代码(Dead Code)
  • 永真永真怎么这么耳熟呢?

利永贞

  • 坤卦六爻都是阴爻
    • 六爻讲的是坚韧、朴实、忠诚、低调、柔顺、随顺
    • 之后有一个用六
      • 利永贞

图片描述

  • 利永贞
    • 保持谦卑的姿态
    • 保持学习的心态
    • 保持耐心的状态
    • 保持柔顺的体态
    • 永远都对
  • 类似的话
    • Stay Hungry,Stay Foolish
    • 柔弱胜刚强
  • True这个布尔类型的变量
    • 交给while就是死循环
    • 交给if就是永真
    • 永真if的else就是死代码(DeadCode)
  • 不想让代码死掉
    • 把判断条件设置为一个变量
    • 变量是活的

修改

  • 这回好像可以真的跳转了

图片描述

  • 如果b为真
    • 第6行不跳转
    • 从8执行到16
    • 从16跳转到28
  • 如果b为假
    • 第6行跳转到18
    • 一路执行到28
  • 但是由于前面给变量赋了值
    • 变量并不是真的活的
  • 5、6两句还是
    • 无法执行的死代码
      • DeadCode
  • 除非改回手动输入变量
  • if-else很适合制作两帧抖动的动画

闪烁效果

  • 先把fox输出到f.py
  • 然后前后加上三引号
  • 然后变化字体

图片描述

  • 解决\的问题
    • :%s/\\/\\\\/g
      • : 执行命令行模式
      • % 对所有行执行命令
      • s 执行的是替换命令
      • \\ 代表一个反斜杠
      • \\\\ 换成两个反斜杠
      • g 代表global 每一行中所有的匹配项都替换
  • 有可能加上摆尾巴的效果么?

总结

  • 这次研究了 if - else
    • 他们是以缩进来控制代码块 block 范围的
  • else 就是和 if 配对的
    • if 条件满足的话
      • 就运行 if 中的内容
    • if 条件不满足的话
      • 就运行 else 中的内容
  • 如果if条件永为真
    • 那if中的代码必执行
    • else中的代码比不执行
      • 成为死代码
        • Dead Code
  • 单个的 if
    • 是单分支结构
  • if - else
    • 是双分支结构
    • 双分支还有什么好玩的例子吗?
  • 怎么做呢???🤔
    • 下次再说 👋