>>> if('合并') or ("并购") in ("C轮"):
... print 2
... else:
... print 3
...
2
这是为啥呢?我写的有问题吗?
>>> if('合并') or ("并购") in ("C轮"):
... print 2
... else:
... print 3
...
2
这是为啥呢?我写的有问题吗?
上面已经讲了很清楚了,一共3个知识点:
1.Python中那些为False
判断为假的情况有:
None
False
数值中的零,包括0,0.0,0j(虚数)
空序列,包括空字符串(”),空元组(()),空列表([])
空的字典{}
自定义的对象的实例,该对象的__bool__方法返回False或者__len__方法返回0
除了以上的情况外,所有的对象在if或者while语句中的表现都为真。
除此之外,都是真。
2.python中运算符的优先级
以下列出了从最高到最低优先级的所有运算符:
运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符
优先级的意思是,如果有高一级的运算符,先运算高一级的。
3.python真值表
NOT
not False <=> True
not True <=> False
(not的结果与原值相反)
OR
True or False <=> True
True or True <=> True
False or True <=> True
False or False <=> False
(只要有一个值为True,OR的结果就是True)
AND
True and False <=> False
True and True <=> True
False and True <=> False
False and False <=> False
(只要有一个值为False,AND的结果就是False)
NOT OR
not (True or False) <=> False
not (True or True) <=> False
not (False or True) <=> False
not (False or False) <=> True
NOT AND
not (True and False) <=> True
not (True and True) <=> False
not (False and True) <=> True
not (False and False) <=> True
4.总结一下
if('合并') or ("并购") in ("C轮")
先利用运算符优先级,判断运算顺序为:
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
非空字符串是真值,所以'合并' 是为真
or表达式只要一个为真就为真,所以为真
所以执行print 2,打印 值2