请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Not And Or 的练习提问

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

正在回答 回答被采纳积分+3

1回答

demo_up 2018-07-25 23:58:59

从最外层开始看,用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 回复 有任何疑惑可以回复我~
  • 提问者 Lemonster #1
    你好,首先谢谢你的回答,现在我已经明白了怎么运行了,而且我发现你的解释中有几个错误,我们交流一下,以下是我了解的思路:
    
    1.逻辑表达式的优先级 Not > And > or
    2.append( )函数的返回值为 None 为False
    3.And 逻辑运算 即使第一个表达式为True 它也会比较第二个 是否True 如果第一个 为False 它就不会去管第二个值了(⁄ ⁄•⁄ω⁄•⁄ ⁄)
    
    代码运行:
    x=2 所以 x>5 为False
    表达式等价于      
    (F1 or  F2) and F3  
    F2 and F3 
    F2 即 添加了列表
    
    
    
    
    回复 有任何疑惑可以回复我~ 2018-07-26 09:30:08
  • 提问者 Lemonster #2
    x=10 所以 x>5 为True
    表达式等价于
    (T or F1) and F2
    T and F2
    F2 即 添加x>5的列表元素
    回复 有任何疑惑可以回复我~ 2018-07-26 09:32:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信