停止摸鱼 发表于 2019-6-4 14:31:21

萌新求助大佬解答一下小甲鱼零基础学习python第四讲课后习题。

完全看不懂这道题。。。

4. 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9

如果你的回答是 0,那么小甲鱼很开心你中招了!
答案是:4

not or and 的优先级是不同的:not > and > or

我们按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
== 0 or 0 or 4 or 6 or 9   (是怎么得出等于号后边的内容的。。)
== 4

为啥是 4?

大家还记得第四讲作业提到的“短路逻辑”吗?3 and 4 == 4,而 3 or 4 == 3。
所以答案是:4    3 and 4 == 4 不应该是False吗。。

BngThea 发表于 2019-6-4 16:17:39

逻辑短路
or 如果左边的真,右边的就不判断了,返回的就是左边那个值

and 如果两边都为真,返回的就是右边那个值

停止摸鱼 发表于 2019-6-4 16:48:41

BngThea 发表于 2019-6-4 16:17
逻辑短路
or 如果左边的真,右边的就不判断了,返回的就是左边那个值



那为什么 下边的 3 and 4 == 4
在python里会显示true?
不应该是3 和 4 同时等于4 才显示true吗?
3明显不等于4呀

冬雪雪冬 发表于 2019-6-4 16:51:17

几个规则:
0,空字符串、空列表、空元祖、空字典,空集合等为False,其它为True
and左右都为True,结果为Ture,其它情况为False
or左右都为False,结果为False,其它为True
not优先级最高,and高于or
短路原则见2楼。

not 1 结果为False,返回0
0 and 1,左边为0 Flase,结果就是0 False
0 or 4,先看左边为0 False,再看右边4 True,结果4 True
页: [1]
查看完整版本: 萌新求助大佬解答一下小甲鱼零基础学习python第四讲课后习题。