show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次研究了 三目运算符
- 根据条件是否满足
- 可以得到不同的结果值
- 三目运算符都可以转化 if 语句
- 如果我有想有三个分支怎么办??🤔
- 这里先判断了
- score 是否大于 60
- 如果大于 60
- 那么判断他是否大于 80
- 如果大于 80
- 输出 perfect
- 否则的话
- 输出 normal
- 那你怎么知道这个 else 跟着哪个 if 呢?
- 看缩进
- 现在的缩进显示 else 跟着的是第 3 行的 if
- 如果我就想让他跟第 2 行的 if 配对呢?
- 调整缩进
- 其实就是在调整 else 是跟谁 else 的逻辑
- 为什么缩进可以控制逻辑呢?
- 我们先看看 python 的前辈 c 语言经常出错误的一个点
- 在以上的 c 语言伪代码中
- else 并不会和想象中的外层 if 配对
- 而是和他离得最近的 if 配对
- 除非你是用大括号控制
- python 中又是如何呢?
- python 不会出现上面的问题
- 因为 python 从缩进上
- 就把逻辑关系整得明明白白的
- 读者一看就明白
- 缩进不但控制了代码的样式
- 同时控制了代码的逻辑
- 而且 python 当中也可以 tab 和 space 混合使用
- python 是如何翻译这些空格和 tab 的呢?
- 词法分析器使用一个堆栈来存储语句的缩进等级
- 0 就是没有缩进
- 如果下一行有缩进的话
- 就把一个 token 令牌压入堆栈
- 文本流中把空格或 tab 替换为
<INDENT>
- 如果下一行同样缩进
- 就不添加
<INDENT>
- 就不添加
- 如果下一行在上一行的基础上添加缩进
- 就在流中添加
<INDENT>
- 一行最多一个
<INDENT>
- 就在流中添加
- 如果下一行减少缩进
- 就根据减少缩进的数量
- 在流中添加相应的
<DEDENT>
- 一行可能有多个
<DEDENT>
- 下图中
- 左边是流中插入的文本
- 右边是堆栈中的状态
- 这一步发生在语法分析之前
<INDENT>
、<DEDENT>
已经成为了文本流中的一部分- 然后再去分析语法分析
- 控制语法树中 block 的范围
- 我觉得缩进方面
- python 还是明显领先于其他语言的
- 能把上面三种可能性都处理了么?
- 我们按照这个流程图编程
- 可以有如下的程序
- 这个样子就是嵌套的程序
- 再来一个例子
- 编写的代码是这样的
- 逻辑结构如图
- 嵌套条件结构就是一层层的 if 进行嵌套
- 目前两层
- 可以有很多很多层
- 二分法
- dichotomy [daɪˈkɒtəmi]
- dicho-
- 二
- 来自di-的希腊语形式
- -tomy
- 砍,切
- 词源同atom, anatomy
- 即切成两半的
- 拼音文字
- 善于分析
- 而且实际情况是多个用户基于不同角色的各种选择
- 可能性很多
- 都要准备好
- 多重角色的选择构成了我们的各种流程
- 我们的生活中面对各种各样的选择
- 这次看了条件语言的嵌套
- 条件语句下面还可以有条件语句
- 缩进结构既是样式也是逻辑关系
- 嵌套可以有很多很多层
- 可以把嵌套语句的层数降低么???🤔
- 下次再说 👋