在编程的世界里,Python就像是一把万能钥匙,能打开各种复杂问题的大门。今天,我们就来深入了解Python中的逻辑运算符,这可是编程中非常重要的一部分哦!
一、引入
在Python里,当我们要比较数据的大小、判断是否相等时,可以直接使用比较运算符,像 <
、>
、==
、!=
、>=
、<=
等。但在实际应用中,很多时候不仅仅是简单的大小对比,还会涉及到 “并且”、“或者”、“不” 这样的逻辑关系。
举几个例子:
- 成年
并且
女性 - 本科生
或者
研究生 不
是18周岁以下学生
为了实现这些逻辑关系,Python 提供了逻辑运算符:
and
实现并且
的功能or
实现或者
的功能not
实现不
的功能
这里的 “并且”、“或者”、“不” 是为了方便大家理解而起的名字,在专业术语中,它们分别被称为 “与”、“或”、“非”。
二、逻辑运算符
1. 逻辑运算符有哪些
and
- 实现
与
的功能,通俗来讲就是并且
。一般的用法是:两边都为True
,结果才为True
。
例如:
- 实现
# 100 > 50结果为True ,90 < 200结果为True,就相当于 True and True 所以最后结果是True
print(100 > 50 and 90 < 200)
or
- 实现
或
的功能,也就是或者
。一般用法是:两边只要有一个True
,结果就为True
。
例如:
- 实现
# 100 > 50结果为True , 90 > 200结果为False,就相当于 True or False 所以最后结果是True
print(100 > 50 or 90 > 200)
not
- 实现
非
的功能,即不
。一般用法是:如果之前结果为True
,那么not True
就是False
;如果之前是False
,那么not False
就是True
。
例如:
- 实现
# 本来100>50的结果是True,但前面加了not就相当于反义,所以最后结果为False
print(not (100 > 50)) # 结果为False
# 本来100<50的结果是False, 但前面加了not其反义的作用,所以最后结果是True
print(not (100 < 50)) # 结果为True
2. 逻辑运算符与比较运算符一起使用
- demo1
- 需求:怎样实现用户名与密码同时都相同呢?
- 参考代码:
name = input("请输入用户名:") # 获取用户名
password = input("请输入密码:") # 获取密码
print("用户名和密码相同吗?")
# 输出用户名与密码是否相同
print(name == "dong4716138@163.com" and password == "123456")
- demo2
- 需求:怎样实现老板或者领导就能开门呢?
- 参考代码:
role = "老板" # 定义角色变量,存储职位
print("能开门吗?")
print(role == "老板" or role == "领导") # 输出结果
- demo3
- 需求:怎样实现不小于18岁的判断呢?
- 参考代码:
age = 20
print("大于18岁吗?")
# 方式一:直接用比较运算符
print(age > 18)
# 方式二:用了比较运算符与逻辑运算符
print(not(age <= 18))
- demo4
- 需求:年龄在18~50之间的女性
- 参考代码:
age = 20
gender = "女性"
print("符合要求吗?")
# 方式1:简单的写法
print(18 <= age <= 50 and gender == "女性")
# 方式2:一般的写法
print(age >= 18 and age <= 50 and gender == "女性")
- demo5
- 需求:年龄在
18~50
之间的女性或者18~60
岁之间的男性 - 参考代码:
- 需求:年龄在
age = 20
gender = "男性"
print("符合要求吗?")
print((18<=age<=50 and gender == "女性") or (18<=age<=60 and gender == "男性"))
三、特殊情况下的逻辑运算符
我们一般使用逻辑运算符时,左右两边的结果是 True
或者 False
,最后得到一个 True
或者 False
。但有时逻辑运算符的左右两边不是 True
或者 False
,这种情况我们就需要特别注意。
1. and
看下面的示例,猜猜结果是多少:
print(100 and 200) # 输出什么呢?
print(100 and 100>50) # 输出什么呢?
print(0 and 200) # 输出什么呢?
print(0 and 100>50) # 输出什么呢?
运行结果:
200
True
0
0
为什么会这样呢?想要搞懂这个问题,需要明白两点:
- 第一点:Python 中有布尔类型,即
True
和False
,用True
表示真
,用False
表示假
。而在一些其他编程语言(如 C 语言)中没有布尔类型,为了表示真
、假
,C 语言规定只要数字不是 0
,无论是正数还是负数,统统表示真
,只要是0
就表示假
。后来,虽然 Python 发明了True
和False
,但依然保留了这种开发者习以为常的习惯,所以 Python 中也用非 0 表示真
,0 表示假
。 - 第二点:
and
实现的是两边都是True
最后结果才是True
,否则是False
。它还有个隐藏功能,如果左边的表达式不是True
,那么右边根本不会执行,且将左侧的值当做最后结果;如果左边的表达式是True
,那么右边才会执行,且将右侧的值当做最后的结果。这是因为and
是与
的功能,既然左侧已经为假
了,就没必要看右边了,结果一定是假
,只不过此时把左侧的结果当做最后结果而已。
根据上述两点来看:
print(100 and 200)
,因为 100 不是 0,所以and
左边为真
,接下来执行右边,此时将 200 当做最后的结果。print(100 and 100>50)
,因为 100 不是 0,所以为真
,执行右边100>50
且将它的结果当做最后的结果,所以最后为True
。print(0 and 200)
,因为and
左侧为 0,所以为假
,不会执行右边,且将左边的结果当做最后结果,所以最后为 0。print(0 and 100>50)
,原因与上一条一样,结果为 0。
2. or
有了前面 and
的经验,再看 or
就简单多了。or
的特殊规则如下:
- 如果左边为
真
,那么就把左边的值当做最后的结果。 - 如果左边为
假
,那么就把右边的值当做最后的结果。
or
之所以有这样的功能,是因为 or
是 或
的功能,既然左侧已经为 真
了,就没必要看右边了,结果一定是 真
,只不过此时把左侧的结果当做最后结果而已。
来试试看,掌握了没有:
print(100 or 200) # 输出什么呢?
print(100 or 100>50) # 输出什么呢?
print(0 or 200) # 输出什么呢?
print(0 or 100>50) # 输出什么呢?
运行结果如下:
100
100
200
True
如果还不知道为什么,建议把上面的知识再好好看一遍,只有知道原因才是真正学会了。
四、总结
逻辑运算符 | 表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔 “与”:如果 x 为 False ,x and y 返回 False ,否则它返回 y 的值 | True and False ,返回 False |
or | x or y | 布尔 “或”:如果 x 是 True ,它返回 True ,否则它返回 y 的值 | False or True ,返回 True |
not | not x | 布尔 “非”:如果 x 为 True ,返回 False 。如果 x 为 False ,它返回 True | not True 返回 False ,not False 返回 True |
更多学习内容可以参考 这里。
通过今天的学习,相信大家对 Python 中的逻辑运算符有了更深入的了解。在实际编程中,合理运用逻辑运算符可以让我们的代码更加简洁、高效。大家可以多动手实践,加深对这些知识的理解和掌握。