ccccyp 发表于 2020-3-26 22:31:14

小白请教问题

”and“、”or“和”not“ 的意义,我不太了解。
not 1 or 0 and 1 or 3 and 4 or 5 是怎么样来运作的

请大神教教我,谢谢!

sunrise085 发表于 2020-3-26 22:41:04

你这里面一堆乱码。
我直接说一下逻辑运算和短路逻辑吧
逻辑运算也是有优先级的,not>and>or
可以看看我总结的这个帖子
Python细节之4、逻辑运算符(and、or、not)
短路逻辑就是前面的运算结果已经能代表后面的结果了那就不再运算后面的了

例如:0 and 3 and 4 or 5 and 6 or 7 and 8 and 9
先根据优先级分三段。(0 and 3 and 4) or (5 and 6) or (7 and 8 and 9)
然后从左向右开始计算
0 and 3 and 4,先看到0,不再计算3和4,短路后面的运算,结果为0,
or的第一部分为False,继续运算
5 and 6,先看到5,继续判断6,结果为6,
or的第二部分为True,不再计算or后面的第三部分,短路后面的运算

ccccyp 发表于 2020-3-27 11:01:38

非常感谢您的回答!
我还有个问题请教下:
not a, 则判断bool(a),若为True,则返回False;若为False,则返回True

ccccyp 发表于 2020-3-27 11:03:09

not a, 则判断bool(a),若为True,则返回False;若为False,则返回True

他是怎么判断(a)是ture 或者 false 的? 我不太理解

ccccyp 发表于 2020-3-27 11:03:46

sunrise085 发表于 2020-3-26 22:41
你这里面一堆乱码。
我直接说一下逻辑运算和短路逻辑吧
逻辑运算也是有优先级的,not>and>or


非常感谢您的回答!

我还有个问题请教下:

not a, 则判断bool(a),若为True,则返回False;若为False,则返回True

他是怎么判断(a)是ture 或者 false 的? 我不太理解

sunrise085 发表于 2020-3-27 11:29:55

ccccyp 发表于 2020-3-27 11:03
非常感谢您的回答!

我还有个问题请教下:


以下会被判定为 False :
1、None
2、False
3、所有的数字零,例如, 0, 0.0, 0j.
4、所有的空序列(字符串、元组、列表,字典等),例如, '', (), [].
5、所用空孔映射(mapping), {}.
6、还有用户自定义的空类型,若用户定了的类中重载了 __bool__() 或者 __len__() method, 当这些函数返回值 return 为数字 0 或者 bool类型 False.
  除了以上的,其他的表达式均会被判定为 True

ccccyp 发表于 2020-3-27 12:08:15

sunrise085 发表于 2020-3-27 11:29
以下会被判定为 False :
1、None
2、False


谢谢 回答!
页: [1]
查看完整版本: 小白请教问题