美文网首页编程随笔
python中逻辑运算符的优先级问题

python中逻辑运算符的优先级问题

作者: jj_jump | 来源:发表于2020-03-17 21:01 被阅读0次
    Image

    python中逻辑运算符的优先级问题

    遇到的问题

    今天做题的时候,碰到一个关于逻辑运算符优先级的问题,看到之后我懵了

        0 and 1 
    
        2 and 3
    
        0 or 1
    
        2 or 3
    
        上面的返回值是什么?
    

    我一开始以为返回的都是左边的值,但是结果和我想的不同,结果如下:

    In [4]: 0 and 1
    Out[4]: 0
    
    In [5]: 2 and 3
    Out[5]: 3
    
    In [6]: 0 or 1
    Out[6]: 1
    
    In [7]: 2 or 3
    Out[7]: 2
    

    为什么 0 and 1 返回的是 0 , 而2 and 3却返回的是3?

    为什么 0 or 1 返回的是 1 , 而 2 or 3却返回的是2?

    经过我不断地额翻阅资料,我找到了答案。

    首先要明白以下2点:

    • 逻辑运算符的优先级:not > and > or

    • Python中所有的空字符串都是假,非空字符串都是真,非零的数字都是真

    关于and:

    • 只要左边的表达式为真,那么整个表达式返回的是右边表达式的值,否则返回的是左边表达式的值

    • 换言之,x and y 的值只能是x 和 y,x为真时就是y,x为假就是x,示例如下:

        In [1]: x=1
      
        In [2]: y=2
      
        In [3]: x and y
        Out[3]: 2
      
        In [4]: x=0
        
        In [5]: y=1
      
        In [6]: x and y
        Out[6]: 0
      

    关于or:

    • 只要两边的表达式都为真,整个表达式的结果返回的是左边表达式的值;

    • 如果一真一假,返回真值表达式的值;

    • 如果两个值都假,比如空值和0,返回的是右边的值

    • 换言之,x or y 的值只可能是 x 和 y,x为真就是x,x为假就是y,示例如下:

        In [7]: x=1
      
        In [8]: y=0
      
        In [9]: x or y
        Out[9]: 1
      
        In [10]: x='hello'
      
        In [11]: y='world'
      
        In [12]: x or y
        Out[12]: 'hello'
      
        In [13]: x=''
      
        In [14]: y=0
      
        In [15]: x or y
        Out[15]: 0
      

    关于not:

    • x为真,则输出False
    • x为假,则输出True

    当not和and及or在一起运算时,优先级为是not>and>or,下面来看下3个逻辑运算符一起使用的结果:

    In [18]: (5>3) and (2>4) or not 6<7
    Out[18]: False
    
    In [19]: (5>3) and (2<4) or not 6<7
    Out[19]: True
    
    In [20]: (5>3) and (2<4) or not 6>7
    Out[20]: True
    

    希望对大家有帮助,也是对自己遇到的问题的记录。

    参考链接

    相关文章

      网友评论

        本文标题:python中逻辑运算符的优先级问题

        本文链接:https://www.haomeiwen.com/subject/qyvxyhtx.html