Not And Or 的练习提问

来源:6-3 表达式优先级练习

Lemonster

2018-07-19

>>> x=2
>>> n=[ ]
>>> (x>5 or n.append('x<5')) and n.append('x>5')
>>> print(n)
>>> ['x<5']
为什么可以这样添加列表?为什么不能这样添加字典?希望老师解释一下前者能添加的原理?还有后者不能添加的原因。谢谢老师

写回答

1回答

demo_up

2018-07-25

从最外层开始看,用A、B、C替换掉三个表达式:

(A or B and C)

or和and优先级相同,程序从左向右执行,即等价于:

((A or B)and  C)

运行顺序理清后,开始执行代码

步骤一(A or B)结果为 true: 

① x > 5  结果为  false

② n.append('x<5')  结果为  true (此时已为n赋值)

步骤二( true and C):

根据and的运算特性,已经拿到true就不再继续运算,故C无需执行,直接返回结果

综上两个append只有前面的运行了一次,所以print(n)结果为 ['x<5']

0
2
Lemonster
x=10 所以 x>5 为True 表达式等价于 (T or F1) and F2 T and F2 F2 即 添加x>5的列表元素
2018-07-26
共2条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14590 学习 · 4469 问题

查看课程