什么是逻辑运算符
我们在高中数学就已经学习过逻辑运算。比如有两个命题,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)
如果你思考的结果与程序执行的结果一致,那么恭喜你,你已经理解了逻辑运算符!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 逻辑运算符 - Python技术站