鱼C论坛

 找回密码
 立即注册
查看: 1160|回复: 11

《零基础入门学习Python》【最新版】第11讲问答题第2题

[复制链接]
发表于 2020-5-18 04:53:59 | 显示全部楼层 |阅读模式

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

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

x
小白求助:

提问表达式的值是多少:

>>> 3 and 5 + True or False


给的答案解析是:"基于“短路逻辑”(从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值),3 and 5 的结果为 5。另外,True 和 False 参与运算是是作 1 和 0 使用的,所以结果为 6。"

疑问:虽然答案都是6,但是按照优先级,难道不该先运算 5 + True 吗?得出 6, 再运算 3 and 6 or False?

请各位大神指教,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-18 07:51:18 | 显示全部楼层
and前面为真直接会返回后面表达式的值作为结果, or前面的值为假后面的值作为结果,如果or前面为真返回该值。and优先级高于or
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 07:53:42 | 显示全部楼层
python优先级问题,是先算加减,再算and or not 这种逻辑运算符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 07:54:15 | 显示全部楼层
如果帮助到了就给个最佳喔
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 08:05:03 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-18 08:19 编辑

代码:
3 and 5 + True or False
True 可以等价表示为 1
False 等价表示为 0
等价于:
3 and 5 + 1 or 0

#运算优先级从低到高
逻辑运算符: or
逻辑运算符: and
逻辑运算符:not
成员测试: in, not in
同一性测试: is, is not
比较: <,<=,>,>=,!=,==
按位或: |
按位异或: ^
按位与: &
移位: << ,>>
加法与减法: + ,-
乘法、除法与取余: *, / ,%
正负号: +x,-x




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 08:06:17 | 显示全部楼层
Twilight6 发表于 2020-5-18 08:05
代码:

可以等价于:

我很好奇你怎么等价的,结果都不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 08:08:39 | 显示全部楼层
按照优先级
优先级的作用是什么?

优先级的作用是保证
3 and 5 + True or False
不会按照
(3 and 5) + (True or False)
来计算,但是后面计不计不算是管不着的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 08:08:47 | 显示全部楼层
本帖最后由 heidern0612 于 2020-5-18 08:16 编辑

优先级依次是:+ - not and or ,加减同一级。


3 and 5 + True or False..

等价于 (3 and(5+True)) or False

--->5+True = 6

--->3 and 6  = 6

--->6 or False  = 6


and运算采用举假法,有假举假,没假则取最后一位真。

or运算采用举真法,有真举真,没真则取最后一位假。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 08:14:03 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-18 08:06
我很好奇你怎么等价的,结果都不一样

我刚刚正在更改,我自己都发现错误了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 08:14:22 | 显示全部楼层
Twilight6 发表于 2020-5-18 08:05
代码:

True 可以等价表示为 1

最终结果为6,普及到优先级问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 08:50:09 | 显示全部楼层
楼主疑问是正确。验证方法,1.把代码加括号;2.代码位置变化后加括号。
>>> 3 and 5 + True or False
6
>>> 3 and (5 + True) or False
6
>>> (3 and 5) + (True or False)
6

>>> 3 and 5 + False or True
5
>>> 3 and (5 + False) or True
5
>>> (3 and 5) + (False or True)
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 11:03:22 | 显示全部楼层
运算中先算逻辑运算符(not or and)再算&#10133;&#10134;&#10006;&#10135;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 07:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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