关键词

Python 逻辑运算符

什么是逻辑运算符

我们在高中数学就已经学习过逻辑运算。比如有两个命题,a=真命题,b=假命题。那么“a且b”为假,“a或b”为真,“非a”为假,“非b”为真。

在Python中也有类似的逻辑运算,而使用这些运算的符号即为逻辑运算符

Python中的逻辑运算符有3种,具体含义请看下表:

逻辑运算符 含义 举例说明
and 逻辑与运算,等价于数学中的“且” 如:a and b,当a和b都为真(True)时,a and b 的结果才为真(True),否则为假 (False)
or 逻辑或运算,等价于数学中的“或” 如:a or b,当a 和 b都为假(False)时,a or b 的结果才为假(False),否则为真(True)。
not 逻辑非运算,等价于数学中的“非” 如:not a,当a为真(True)时,not a 的结果为假,当a为假(False)时,not a的结果为真。相当于对a取反。

逻辑运算符的作用

逻辑运算符一般与比较运算符结合使用。例如:

25>10 and 25>30

25>10的结果是True,25>30的结果是False,根据 and 的特性,当两边的结果都为True时,此表达式才为True。但25>10 and 25>30右边表达式的结果为False,所以它的整个表达式的结果为False,不成立。

再举个通俗的例子,加入,某公司要招聘25岁以下的女秘书,即可以用以下方法表示:

age = int(input("请输入年龄:"))
sex = input('请输入性别(男或女):')

if age<25 and sex == '女':
    print('恭喜,您被录取了!')
else:
    print('抱歉,您不符合条件。')

以上程序中,用户将年龄输入在25岁以下,并且性别输入“女”时,会输出“恭喜,您被录取了!”,否则输出“抱歉,您不符合条件。”。

需要注意的一点是,Python逻辑运算符操作的表达式不一定必须是bool类型,而且它的输出结果也不一定是bool类型。

我们看看以下例子:

print(1 and 2 and 3)#输出3
print(0 and 1 and 2)#输出0
print('' or 'http://pythonjishu.com/')#输出 http://pythonjishu.com/
print(0 or 'http://pythonjishu.com/')#输出 http://pythonjishu.com/
print(1 or 'http://pythonjishu.com/')#输出 1

大家可以实际试试以上代码的输出结果是否与注释中一致。接下来我解释下为什么没有输出bool型结果,以及and or的运行机制。

逻辑运算符运行机制

简单来说,在Python的一个逻辑运算表达式中,and、or输出的是其中一个表达式的结果,无论这个表达式是不是bool型。

以上面的print(1 and 2 and 3)为例,and并不是从整体去计算结果的,而是按照1->2->3顺序去计算的,然后输出了最后一个表达式(也就是2)的结果。

同理,or的运行机制也是这样的。

那么为什么print(0 and 1 and 2)这个表达式输出的结果是0而不是2呢?

这是因为0,或者""、''、None这种值,在在Python的逻辑运算中,被认为是与False是等价的。你可以把0当成False去看,就容易理解了。按照 and 的逻辑规则:当a和b都为真(True)时,a and b 的结果才为真(True),否则为假 (False)0 and 1 and 2它的第一个表达式的结果就是0,程序已没必要再去计算后面的表达式结果了,所以直接输出了0。

这是Python的逻辑运算符需要注意的一点。

如果你认为你已经理解了逻辑运算符,那么你可以尝试思考以下几个表达式的结果是什么:

1 and 2 or 3 and 4
1 and 2 and (3 or 4)

如果你思考的结果与程序执行的结果一致,那么恭喜你,你已经理解了逻辑运算符!

本文链接:http://task.lmcjl.com/news/3697.html

展开阅读全文