1. 逻辑运算
逻辑运算符是Python中用于组合或修改条件的工具,常用于if、while等语句中,帮助构建更复杂的判断逻辑。Python提供了三种核心逻辑运算符:and(与)、or(或)、not(非),它们基于布尔值(True/False)进行运算。
1.1 and 运算符(逻辑与)
- 作用:判断多个条件是否同时成立。
- 规则:当且仅当所有操作数(条件)都为True时,结果为True;只要有一个操作数为False,结果就为False。
- 真值表:
| 操作数1 | 操作数2 | 结果(and) |
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
示例:
#基础用法:判断两个条件是否同时满足
a = 10 > 5 # True
b = 3 < 8 # True
print(a and b) #输出:True(两个条件都成立)
c = 7 == 7 # True
d = 2 > 10 # False
print(c and d) #输出:False(第二个条件不成立)
#在if语句中使用:判断年龄大于18且分数高于60
age = 20
score = 75
if age > 18 and score > 60:
print("符合要求") #输出:符合要求1.2 or 运算符(逻辑或)
- 作用:判断多个条件是否至少有一个成立。
- 规则:只要有一个操作数为True,结果就为True;当所有操作数都为False时,结果才为False。
- 真值表:
| 操作数1 | 操作数2 | 结果(or) |
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
示例:
#基础用法:判断至少一个条件满足
x = 5 < 3 # False
y = 9 != 9 # False
print(x or y) #输出:False(两个条件都不成立)
m = "apple" == "apple" # True
n = 100 > 200 # False
print(m or n) #输出:True(第一个条件成立)
#在if语句中使用:判断成绩高于90或竞赛获奖
score = 85
is_winner = True
if score > 90 or is_winner:
print("获得奖励") #输出:获得奖励(虽然成绩不达标,但竞赛获奖)1.3 not 运算符(逻辑非)
- 作用:对单个条件的结果进行取反。
- 规则:如果操作数为True,结果为 False;如果操作数为False,结果为True。
- 真值表:
| 操作数1 | 结果(not) |
| True | False |
| False | True |
示例:
#基础用法:对条件取反
is_raining = False
print(not is_raining) #输出:True(对False取反)
has_ticket = True
print(not has_ticket) #输出:False(对True取反)
#在if语句中使用:判断“不是未成年人”
age = 17
if not age >= 18:
print("未成年人,禁止进入") #输出:未成年人,禁止进入(17 < 18,not age>=18 为True)2. 重要特性:短路求值
Python的逻辑运算符具有 “短路求值” 特性:运算过程中,一旦能确定最终结果,就会停止后续操作数的计算(避免无效计算)。
- and:如果第一个操作数为False,直接返回False,不再判断第二个操作数。
- or:如果第一个操作数为True,直接返回True,不再判断第二个操作数。
示例:
#定义两个带打印的函数,观察是否被执行
def check_a():
print("执行了check_a")
return False #返回False
def check_b():
print("执行了check_b")
return True #返回True
#and短路:第一个操作数为False,不执行第二个
result = check_a() and check_b() #输出:执行了check_a(仅第一个函数被调用)
print(result) # 输出:False
#or短路:第一个操作数为True,不执行第二个
result = check_b() or check_a() #输出:执行了check_b(仅第一个函数被调用)
print(result) # 输出:True3. 运算符优先级
当多个逻辑运算符混合使用时,优先级顺序为:not>and>or(可通过括号()强制改变优先级)。
示例:
#未加括号:遵循 not > and > or
a = True
b = False
c = True
result = not a and b or c
#等价于:(not a) and b → False and False → False;再计算 False or c → True
print(result) # 输出:True
#加括号改变优先级
result = not (a and b) or c
# 等价于:not (True and False) → not False → True;再计算 True or c → True
print(result) #输出:True4. 总结
逻辑运算符是构建复杂条件判断的核心工具:
- and用于 “同时满足” 的场景;
- or用于 “至少满足一个” 的场景;
- not用于 “否定某个条件” 的场景;
- 注意短路求值和优先级对结果的影响,复杂逻辑建议用括号明确顺序。