鱼C论坛

 找回密码
 立即注册
查看: 5852|回复: 6

Python中,not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 的结果是什么

[复制链接]
发表于 2016-10-9 17:15:13 | 显示全部楼层 |阅读模式

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

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

x
          Python中,not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 的结果是什么,以及原因,求解。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-9 17:38:50 | 显示全部楼层
  1. >>> not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
  2. 4
  3. >>> (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
  4. 4
  5. >>> (0)  or (0) or (4) or (6) or (9)
  6. 4
  7. >>>
复制代码

优先级:非 > 与 > 或
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-9 21:41:41 | 显示全部楼层
好像小甲鱼视频里有说叫 短路逻辑 吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-9 23:01:14 | 显示全部楼层
domenet 发表于 2016-10-9 21:41
好像小甲鱼视频里有说叫 短路逻辑 吧

编程语言常用的逻辑
if a and b:#如果a是false,那么跳过b的判断,结果直接false
if a or b:#如果a为true,那么跳过b的判断,直接true
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-9 23:05:20 | 显示全部楼层
ssz940728 发表于 2016-10-9 23:01
编程语言常用的逻辑
if a and b:#如果a是false,那么跳过b的判断,结果直接false
if a or b:#如果a为 ...

我在百度中找到的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-9 23:21:33 | 显示全部楼层
ssz940728 发表于 2016-10-9 23:05
我在百度中找到的

if a and b:#如果a是false,那么跳过b的判断,结果直接false
if a or b:#如果a为true,那么跳过b的判断,直接true
     例子: >>> not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
4
>>> (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
4
>>> (0)  or (0) or (4) or (6) or (9)
4
     个人理解:在这个例子中首先是逻辑判断的优先级问题,not  >  and  >  or
               然后是and 的短路逻辑。因为在and 中,两个为Ture才是真正的Ture .
               在 0 and 1 中 ,如果第一个值是0 也就是False ,系统会认为反正第二个值不管是什么都会返回一个 0 (False),在 3 and 4 中 ,第一个值是 3 也就是Ture,系统就会继续向下读值,也就会返回 4 了。
               然后是or 的短路逻辑。因为在or中,一个为Ture就是Ture了。
   在(0)  or (0) or (4) or (6) or (9)中,首先遇到 0 ,0 是False ,接下来的值有可能是Ture,所以会继续向下读,当遇到 4 的时候,为Ture,系统就会停止判断,直接将为Ture的值返回。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-10-9 23:22:04 | 显示全部楼层
ssz940728 发表于 2016-10-9 23:21
if a and b:#如果a是false,那么跳过b的判断,结果直接false
if a or b:#如果a为true,那么跳过b的判 ...

明白了,谢了各位。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 06:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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