逻辑运算用于检验真假。
下面列出了目前支持的逻辑运算符,相应的示例和解释。
应注意的是,逻辑运算的结果是个布尔值,并且参与逻辑运算的所有事物也应是布尔值。
如果参与逻辑运算的不是布尔值,而是其他数据类型对应的事物,则运算结果是不确定的。
| 运算符 | 用途 | 示例 | 解释 |
|---|---|---|---|
| and | 与运算 | A and B and ... and N | A、B、...、N 是否同时为真。 如果是这样的,则计算结果为真,否则为假。 |
| or | 或运算 | A or B or ... or N | A、B、...、N 是否有一个为真。 如果是这样的,则计算结果为真,否则为假。 |
| not | 取反运算 | not A | 布尔值 A 的反转便为计算结果。 这意味着真将变为假,假将变为真。 |
| in | 成员检查运算 | A in B | 检查 A 是否在 B 中。 如果是这样的,则计算结果为真,否则为假。 如检查 'AB' 是否在 'ABC' 中。 |
特别地,上面的与运算和或运算会在可以断言结果真假时停止处理。
这意味着如果与运算的过程中,如果已经出现假,则整个运算为假;
在或运算的过程中,如果已经出现真,则整个运算为真。
另外,上面几个运算符的优先级,从高到低分别如下。
- 成员检查运算 (in)
- 取反运算 (not)
- 与运算 (and)
- 或运算 (or)
数学计算是常规的数学表达式。
下面是支持的数学运算符及相应的示例和解释。
| 运算符 | 用途 | 示例 | 解释 | 备注 |
|---|---|---|---|---|
| + | 加运算 | A + B + C + ... + N | 计算 A 到 N 的和 | 如果 A 到 N 中有一个是浮点数, 则结果为浮点数,否则为整数。 |
| - | 减运算 | A - B - C - ... - N | 计算 A 减去 B,然后再减去 C, 然后一直操作下去直到减去 N 的结果 |
如果 A 到 N 中有一个是浮点数, 则结果为浮点数,否则为整数。 |
| * | 乘运算 | A * B * C * ... * N | 计算 A 乘以 B 乘以 C, 直到乘以 N 的结果 |
如果 A 到 N 中有一个是浮点数, 则结果为浮点数,否则为整数。 |
| / | 除运算 | A / B / C / ... / N | 计算 A 除以 B,然后再除以 C, 然后一直操作下去直到除以 N 的结果 |
结果一定是浮点数。 |
上面给出的示例的空格不是必须的,仅是美观用途。
另外,上面几个运算符的优先级与实际的四则运算的优先级是相同的。
比较运算可以用于字符串和数字,并且确保所有比较运算的结果都是布尔值。
下面是目前已经支持的比较运算,以及相应的示例和解释。
注意,下方给出的示例的空格不是必须的,仅是美观用途。
| 运算符 | 用途 | 示例 | 解释 |
|---|---|---|---|
| > | 检查是否大于 | A > B | 如果 A 大于 B,则计算结果是真,否则是假 |
| < | 检查是否小于 | A < B | 如果 A 小于 B,则计算结果是真,否则是假 |
| >= | 检查是否大于或等于 | A >= B | 如果 A 大于 B 或 A 等于 B,则计算结果是真,否则是假 |
| <= | 检查是否小于或等于 | A <= B | 如果 A 小于 B 或 A 等于 B,则计算结果是真,否则为假 |
| == | 检查是否等于 | A == B | 如果 A 等于 B,则计算结果是真,否则为假 |
| != | 检查是否不等于 | A != B | 如果 A 不等于 B,则计算结果是真,否则为假 |
另外,任何比较运算都不能连用,例如下面的使用方法是错误的。
1 < 10 < 100必须改写为
1 < 10 and 10 < 100在部分情况下,连用比较运算不会产生报错,但它的运算结果是不确定的。
字符串也可以参与计算。下面列出了字符串可以使用的运算。
注意,下方给出的示例的空格不是必须的,仅是美观用途。
| 运算符 | 用途 | 运算结果 |
|---|---|---|
| + | 拼接一个或多个字符串 | 字符串 |
| * | 重复字符串本身 | 字符串 |
| == | 检查字符串相同 | 布尔值 |
| != | 检查字符串不同 | 布尔值 |
| in | 检查字符串包含 | 布尔值 |
| 示例 | 运算结果 | 解释 |
|---|---|---|
| 'a' + 'b' + 'c' | 'abc' | 将 'a'、'b'、'c' 按顺序拼接到一起 |
| 'ak' * 5 | 'akakakakak' | 将 'ak' 重复 5 次 |
| 'aa' == 'ab' | False | 检查 'aa' 和 'ab' 是否相同 |
| 'ac' != '666' | True | 检查 'ac' 和 '666' 是否不相同 |
| '吃饭' in '我吃饭了' | True | 检查 '吃饭' 是否在 '我吃饭了' 之中 |
| 'ak5' in '我买了一个新的 ak5' | True | 检查 'ak5' 是否在 '我买了一个新的 ak5' 之中 |
| '差点没买 ak5' in '我差点买了 ak5' | False | 检查 '差点没买 ak5' 是否在 '我差点买了 ak5' 之中 |
字符串也可以被比较。这意味着上一章节,即比较运算,其中列出的所有运算符也都适用于字符串。
在技术实现中,我们实际上按顺序比较字符串中的每一个字符,以一种叫做字典序的方式。
受限于篇幅限制,本文档不会详细描述字符串具体是如何比较的。
这意味着您更被推荐通过执行实际的代码来了解这一切是如何工作的。
一个例子是,由于 a 排在 b, c, d, ..., z 的前面,
所以 a 开头的所有字符串都一定小于 b 到 z 开头的所有字符串。