python关系运算符和逻辑运算符的优先级_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

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

参考链接

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值