鱼C论坛

 找回密码
 立即注册
查看: 1121|回复: 13

[已解决]or 和 and

[复制链接]
发表于 2019-3-7 22:11:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想问下鱼友
0 or 2=2
2 0r 4=2

0 and 2=0
4 and7=7

or 不是等于前面的吗 and等于后面的
为什么到跟0比就不一样了
最佳答案
2019-3-8 19:38:12
第一步:先弄明白短路逻辑,然后看如下解题过程
0 or 2=2 ------0是False,遇or,故继续计算,2为True,所以得2
2 or 4=2------2是True,遇or,结束计算,所以得2
0 and 2=0-----0是False,遇and,结束计算,所以得0(即False)
4 and 7=7-----4是True,遇and,故继续计算,7为True,所以得7
归根结底是短路逻辑没弄明白。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-3-7 22:27:19 | 显示全部楼层
没有前后,只有短路逻辑。
短路逻辑
比如
1 or 2 看到1就足以确定是 真 ,所以后面的2可以不看。
0 or 2 看到0 还不能确定是真还是假,所以还要看后面这位,再看2,这时才能确定为 真。
0 or 0 看到0 还不能确定是真还是假,所以还要看后面这位,再看0,这时才能确定为 假。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-7 22:29:16 | 显示全部楼层
可能因为0是False,我也不懂,猜的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-7 22:35:57 | 显示全部楼层
本帖最后由 °蓝鲤歌蓝 于 2019-3-7 22:37 编辑

什么 or 等于前面的, and 等于后面的啊,你根本没理解 。
or  和 and 都是对真假(即 True 和 False)的比较,而且是惰性求值,你可能不理解,就拿你的代码举例。
第一个为 2 是因为 0 为 False, 2 为 True,所以 假 或 真(中文翻译) 为真,打印 2。
第二个为 2 是因为 2 为真,所以程序不会运行都后面的 4  那里(反正不管后面那个是真/假,最后都是为真,所以为了提高效率,后面的就不看了,所以叫惰性求值),于是打印 2。
第三个 为 0 是因为 0 为假,同上惰性求值(反正不管后面的是什么都是假),所以打印 0。
第四个为 7 是因为 4 为真,程序得运行到 7 那里才知道整体为真还是为假,才打印的 7。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-7 22:43:13 | 显示全部楼层
用来判断的,就和非黑即白一样,  or 或,and 且   真或假 返回真,有一个真满足条件。python非空就是真   注(0=False,1=Ture)这个是特例
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-7 23:00:16 | 显示全部楼层
本帖最后由 jackz007 于 2019-3-7 23:19 编辑

    这是二进制位操作,首先纠正楼主的错误:
0 or 2=2
2 0r 4=6

0 and 2=0
4 and 7=4

      先说说 or,对 2 个数的所有二进制位做测试,在对应位的比较中,只要2个位中有一个是1,那么,该位的运算结果便是 1,当然,如果 2 个位都是 0 那么,该位的运算结果自然是 0
      0 or 2 = 2
  1. 0 : 0 0
  2.     | |
  3. 2 : 1 0
  4. -------
  5. 2 : 1 0
复制代码

      2 or 4 = 6
  1. 2 : 0 1 0
  2.     | | |
  3. 4 : 1 0 0
  4. ---------
  5. 6 : 1 1 0
复制代码


      再说说 and,对 2 个数的所有二进制位做测试,在对应位的比较中,只有2个位都是1,那么,该位的运算结果才是 1,否则都是 0。
      0 and 2=0
  1. 0 : 0 0
  2.     | |
  3. 2 : 1 0
  4. -------
  5. 0 : 0 0
复制代码

      4 and 7 = 4
  1. 4 : 1 0 0
  2.     | | |
  3. 7 : 1 1 1
  4. ---------
  5. 4 : 1 0 0
复制代码

    不知道我是否表达清楚了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 08:10:44 | 显示全部楼层
你简单理解为碰到对的就不往后面看了,python就是个大马虎。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 19:20:39 | 显示全部楼层
本帖最后由 13572044595 于 2019-3-8 19:23 编辑

and -- 左右 同时为 真,结果为真
左边 假,直接返回 左边,不会去考虑 右边
左边 真,才会去判断 右边, 返回 右边的 值     # 不论 右边 真假

or -- 左右 任意一方为 真,结果为真
左边 假,判断 右边,返回 右边的 值     # 不论 右边 真假
左边 真,直接返回 左边,无需考虑 右边
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 19:38:12 | 显示全部楼层    本楼为最佳答案   
第一步:先弄明白短路逻辑,然后看如下解题过程
0 or 2=2 ------0是False,遇or,故继续计算,2为True,所以得2
2 or 4=2------2是True,遇or,结束计算,所以得2
0 and 2=0-----0是False,遇and,结束计算,所以得0(即False)
4 and 7=7-----4是True,遇and,故继续计算,7为True,所以得7
归根结底是短路逻辑没弄明白。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 19:43:26 | 显示全部楼层
jackz007 发表于 2019-3-7 23:00
这是二进制位操作,首先纠正楼主的错误:
0 or 2=2
2 0r 4=6

2 or 4 =2
4 and 7 =7
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 20:33:12 | 显示全部楼层

    没什么好怀疑的,只要运行以下代码就有结论了:
  1. #!/bin/python
  2. #coding:gbk

  3. print "0  or 2 = " , int(0 | 2)
  4. print "2  or 4 = " , int(2 | 4)
  5. print "0 and 2 = " , int(0 & 2)
  6. print "4 and 7 = " , int(4 & 7)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-9 13:34:50 | 显示全部楼层
jackz007 发表于 2019-3-8 20:33
没什么好怀疑的,只要运行以下代码就有结论了:

0  or 2 = 2
2  or 4 =  6
0 and 2 =  0
4 and 7 =  4
>>> 0 or 2
2
>>> 2 or 4
2
>>> 0 and 2
0
>>> 4 and 7
7
>>> 0|2
2
>>> 2|4
6
>>> 0&2
0
>>> 4&7
4
>>>
运行了一下你的代码,
然后又在shell中测试了一番,结果有点不同,问下“|”是代表or,“&”是代表and吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-9 13:49:20 | 显示全部楼层
一X一 发表于 2019-3-9 13:34
0  or 2 = 2
2  or 4 =  6
0 and 2 =  0

      是的,在 Python 中 |、&、^、~(or、and、xor、not) 是二进制位操作符,and 和 or 是逻辑运算符。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-3-10 20:19:40 | 显示全部楼层
一X一 发表于 2019-3-8 19:38
第一步:先弄明白短路逻辑,然后看如下解题过程
0 or 2=2 ------0是False,遇or,故继续计算,2为True,所 ...

一看瞬间明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-11 07:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表