逻辑¶
注解
逻辑模块中的指令大多是逻辑运算处理内容,具体可分为:比较运算、范围判断、逻辑运算、代表非、真、假、空的块、?运算、列表存在判断和列表相等判断。
1.比较运算符¶
注解
在Python中,比较运算符是用于比较两个对象的运算符号,结果是一个Boolean逻辑值,为True或者False。
1.1 等于(=)¶
1.1.1 描述¶
等于符号用两个对象之间的比较,判断符号两侧的对象的数据值和数据类型是否相等。
1.1.2 规则¶
如果两个数据值相等,且数据类型相同,则结果为True,否则结果为False。
注意
Python中的对象有三个属性:
1.id:身份标识,是对象在内存中的地址,python中用函数id(x)返回对象 x 在内存中的地址
2.type:数据类型,python中用函数type(x)返回对象 x 的数据类型
3.value:值
Python中,比较运算符除”==”外还有”is”,他们的区别是:
“==” 是对两个对象的 value 和 type 进行比较,比较两个对象的值和数据类型是否相等
“is” 是对两个对象的 id 进行比较 ,比较两个对象的内存地址是否相等
Mixly中比较运算符模块中的”=”,使用的是Python中的”==”,可以从代码中查看:
1.1.3 示例¶
返回结果:
True False False
1.2 不等于(≠)¶
1.2.1 描述¶
不等于符号使用方法与等于符号相同,返回与等于符号相反的结果。
1.2.2 规则¶
符号两边的对象值和数据类型相等时,结果False,否则结果为True。
1.2.3 示例¶
返回结果:
False True True
3.逻辑运算符¶
4.否定运算符¶
4.1 描述¶
否定运算符(非)(not)用于对象或表达式前面,结果与原对象或表达式逻辑值相反。即原逻辑值为True,则结果为False;若原逻辑值为False,则结果为True。
4.2 示例¶
返回结果:
True True False
5.逻辑值¶
5.1 描述¶
MicroPython中的逻辑值包含真(True),假(False)。逻辑值可以直接参与逻辑运算,得出的运算结果也是逻辑值。
5.2 示例¶
返回结果:
False True False
6.空值(None)¶
6.1 描述¶
- None是一个特殊的常量。
- None和False不同。
- None不是0。
- None不是空字符串。
- None和任何其他的数据类型比较永远返回False。
6.2 示例¶
返回结果:
True False False False False False
7. ?:模块¶
7.1 描述¶
对于条件表达式模块 a ? x : y,先计算条件 a 的逻辑结果,然后进行判断。 如果 a 的值为True,则计算表达式 x 的值,模块的值即为 x 的值; 否则,计算表达式 y 的值,模块的值即为 y 的值。
7.2 参数¶
- a: 判断条件,先计算判断条件的值
- x: 当判断条件的值为True,模块的值即为x的值
- y: 当判断条件的值为False,模块的值即为y的值
提示
- 一个条件表达式不会既计算 x ,又计算 y 。
- 条件运算符是右结合的,也就是说,从右向左分组计算。例如,a ? b : c ? d : e 将按 a ? b : (c ? d : e) 执行。
- 实际上,MicroPython中没有 ? : 语句,这实际上是通过 if 条件语句实现的。
7.3 示例¶
这一段代码可以在 a 和 b 中选择出较大数字。
返回结果:
5
8.元素存在判断¶
8.1 参数¶
元素:可以是各种常量和变量对象,包括数列。
数列:需要被判断是否存在某元素的数列;是多维数列时要求前一参数是对应维度的数列。
此模块的值为逻辑值,当参数元素存在于数列中时,此模块值为True;当参数元素不存在于数列中时,此模块值为False。
8.2 示例¶
返回结果:
True False
9.数列相等判断¶
9.1 描述¶
此模块的两个参数均为数列对象,模块的值为逻辑值,当前后两数列相等时,此模块值为True;当前后两数列不相等时,此模块值为False。
注意
此模块使用的是”is”进行相等判断。还记得之前讲过的Python对象的三个属性和”==”与”is”判断的区别吗?
Python中的对象有三个属性:
1.id:身份标识,是对象在内存中的地址,python中用函数id(x)返回对象 x 在内存中的地址
2.type:数据类型,python中用函数type(x)返回对象 x 的数据类型
3.value:值
Python中,比较运算符除”==”外还有”is”,他们的区别是:
“==” 是对两个对象的 value 和 type 进行比较,比较两个对象的值和数据类型是否相等
“is” 是对两个对象的 id 进行比较 ,比较两个对象的内存地址是否相等
所以此模块判断的也是判断前后两个数列的内存地址是否相等,请结合一下示例进一步了解。
9.2 示例¶
返回结果:
False True