show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 这次完成了综合案例 - 猜丁壳
- 猜丁壳中有两个变量
- 你的选择
- 电脑的选择
- 这样就构成了嵌套的条件结构
- 一般来说这种条件结构无法转化为多分支
- 是不是绝对无法转化为多分支呢???🤔
- 要说绝对的事情很难成立
- 毕竟道可道,非恒道
- 物理学框架都没法做到绝对正确
- 可具体怎么转化为多分支呢?
- 我们先去趟游乐场
- 我们可以用一种逻辑运算
- 逻辑与是一个运算符
- 叫做 and
- 去帮助手册查一下 and 的一手资料
- 布尔运算其实有三种
- 逻辑与 and
- 逻辑或 or
- 逻辑非 not
- not 我们见过了
- and 其实就是两个 bool 型变量的运算
- bool 型变量总共就两个
- True
- False
- 我们遍历一下
- 全都得是真的
- 这个结果才能是真的
- 为什么有这种逻辑运算呢?
- 这种逻辑来源于电路
- 两个开关量
- 必须都为 True
- 整个电路才连通起来
- 只连一个不行
- 生活中这种例子也常见
- 如果你快乐并且感到快乐
- 那就拍拍手
- 不快乐不拍
- 感受不到不拍
- 都有的时候才拍
- 一个巴掌拍不响
- 就和搞对象一样
- 比如说俩人搞对象 谈恋爱
- 必须俩人都认为是谈恋爱 才算是谈恋爱
- 否则的话 只有一个人认为是谈恋爱
- 那算是什么
- 算是追求吧。。。应该是
- 那什么能追
- 什么人能追呢?
- 一般来讲有这么两个条件
- 相同物种
- 单身的异性
- 这两条最好都为 True
- 追求才比较合理
- 最好两条都满足
- 就像声控灯似的
- 也要满足两个条件
- 满足哪两个条件呢?
- 光敏开关得满足条件
- 声控开关也满足条件
- 得都满足条件
- 有一个不满足
- 就不行
- 有一个不满足就不亮
- 差一个都不行
- 用户名密码都有都对才行
- 差一点都不对
- 大巴得人都上来了
- 才能开
- 不能说来一个人就开
- 5v5 得都准备好才开
- 你说我等不急了
- 谁先进去谁先开
- 那不行
- 地铁人多的时候
- 什么时候开车
- 得门都关好之后上车
- 你说有个门也不知道关门关好
- 强行开车?
- 那就很可能出危险
- 总之逻辑与就是要保证
- 条件都满足
- 猜丁壳的代码怎么改呢?
- 确实可以变成多分支
- 可是原来的嵌套和现在的多分支哪个效率高呢?
比较项目 | 原来的嵌套条件 | 现在的多分支条件 |
---|---|---|
if 判断次数 | 7 | 9 |
比较运算符使用次数 | 7 | 18 |
逻辑运算符使用次数 | 0 | 9 |
- 可以肯定原来的嵌套条件比这个多分支条件效率高得多
- 是不是嵌套条件就一定比多分支条件效率高呢?
- 一定、绝对这类词汇太绝对
- and 左右两边操作数是不是绝对是 bool 型的呢?
- 绝对不要说绝对啊
- 试试才知道
- 如果有 0 就返回 0
- 如果都不是零
- 就返回后面的
- 最终结果是可以通过 bool 转化的
- 字符串如何呢?
- 有空串返回空串
- 没空串返回后面的
- 判断的是是不是空串
- 还有什么数据类型呢?
- 有空容器返回空容器
- 没有空容器返回后面的
- 如果是两个不同类型的空容器呢?
- 其实返回什么空容器不是很重要
- 各种空容器对应的布尔值是相同的
- 逻辑判断可能是个复杂运算
- 逻辑运算也像四则运算一样
- 可以连续计算
- 上图中第二种表述加了括号
- 逻辑含义更明确
- 符合禅意
- In the face of ambiguity, refuse the temptation to guess.
- 面对不明确的语义时,拒绝猜测
- 可以放心加括号了!
- 越明确清晰越好
- 拒绝猜测
- 这次学习了 and
- and 是一个逻辑与运算符
- 都是 True 的时候
- 才返回 True
- 其余都返回 False
- 这个运算符变量可以
- 有数字、字符串、容器之类的
- 逻辑还是零、空串、空容器对应 False
- 一旦出现 False
- 就返回逻辑值 False 对应的变量
- 什么时候
- 一定要用嵌套条件
- 不能用分支条件呢?
- 下次再说 👋