Python入门之逻辑运算符

1. 逻辑运算

逻辑运算符是Python中用于组合或修改条件的工具,常用于if、while等语句中,帮助构建更复杂的判断逻辑。Python提供了三种核心逻辑运算符:and(与)、or(或)、not(非),它们基于布尔值(True/False)进行运算。

1.1 and 运算符(逻辑与)

  • 作用:判断多个条件是否同时成立。
  • 规则:当且仅当所有操作数(条件)都为True时,结果为True;只要有一个操作数为False,结果就为False。
  • 真值表:
操作数1操作数2结果(and)
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

示例:

#基础用法:判断两个条件是否同时满足
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)
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

示例:

#基础用法:判断至少一个条件满足
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)
TrueFalse
FalseTrue

示例:

#基础用法:对条件取反
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)  # 输出:True

3. 运算符优先级

当多个逻辑运算符混合使用时,优先级顺序为: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)  #输出:True

4. 总结

逻辑运算符是构建复杂条件判断的核心工具:

  • and用于 “同时满足” 的场景;
  • or用于 “至少满足一个” 的场景;
  • not用于 “否定某个条件” 的场景;
  • 注意短路求值和优先级对结果的影响,复杂逻辑建议用括号明确顺序。

原创内容声明

本文为原创内容,版权归作者所有,未经授权禁止任何形式转载

(0)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注