Python基础:逻辑运算符

Python基础:逻辑运算符

一、知识点详解

1.1 逻辑运算符功能

运算符名称功能示例结果
and逻辑与所有条件同时为真时返回True,否则False(5 > 3) and (2 < 4)True
or逻辑或至少一个条件为真时返回True,全假返回False(5 < 3) or (2 > 4)False
not逻辑非反转布尔值(TrueFalseFalseTruenot (5 == 5)False

1.2 真值表(逻辑运算规则)

ABA and BA or Bnot A
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue

记忆口诀

  • and:有假则为假
  • or:有真则为真
  • not:真假互换

1.3 运算优先级

从高到低(建议用 () 明确优先级):

  1. ()(括号)
  2. not(逻辑非)
  3. and(逻辑与)
  4. or(逻辑或)
print(True or False and not True)  
# 等效于:True or (False and (not True)) → 结果:True  

1.4 短路评估

  • and:若左侧为 False,右侧表达式不再执行(整体必为 False)。
  • or:若左侧为 True,右侧表达式不再执行(整体必为 True)。
def check():  
    print("函数被调用")  
    return True  

print(False and check())  # 输出:False(函数未执行)  
print(True or check())    # 输出:True(函数未执行)  

二、说明示例

2.1 复合条件判断(年龄与成绩筛选)

age = int(input("年龄:"))  
score = int(input("成绩:"))  
is_qualified = (age >= 18) and (score >= 60)  
print("是否合格:", is_qualified)  

2.2 输入验证(非字母数字检测)

char = input("输入一个字符:")  
is_special = not (char.isalpha() or char.isdigit())  
# str.isalpha():判断是否为字母;str.isdigit():判断是否为数字  
print("是否为特殊字符:", is_special)  

2.3 优先级调整(明确逻辑顺序)

condition = (age > 12 and age < 20) or (score > 90)  
# 清晰表达:(青少年)或(高分者)  

三、知识点总结

  1. 核心规则
    • and:全真为真,否则为假;
    • or:一真为真,全假为假;
    • not:反转布尔值。
  2. 优先级not > and > or,建议用 () 避免歧义。
  3. 关键应用
    • 用户输入验证(如格式检测);
    • 复合条件筛选(如年龄、分数区间组合)。
  4. 易错点
    • 忽略优先级导致逻辑错误(如 x > 5 or x < 0 and y == 10 需加括号);
    • 短路评估影响代码执行(右侧含函数调用时需注意)。

四、扩展知识

4.1 德摩根定律

简化复杂逻辑表达式
(A B)” 等价于 “ A B” ,即
not (A and B) = not A or not B
(A B)” 等价于 “ A B” , 即
not (A or B) = not A and not B

age = 20  
score = 55  
# 原条件:年龄<18 或 成绩<60 → 不合格  
is_fail = (age < 18) or (score < 60)  
# 德摩根转换:not (age >=18 and score >=60)

4.2 位运算符(了解)

位运算符直接对整数的二进制位进行操作,速度极快,适用于底层优化(如标志位处理)。

常见位运算符

运算符名称功能描述示例结果
&按位与两位均为1时结果为1,否则为05 & 3101 & 0111
|按位或两位中有1时结果为15 | 3101 | 0117
^按位异或两位不同时结果为1,相同时为05 ^ 3101 ^ 0116
~按位取反二进制位取反(0变1,1变0),结果等价于 -x - 1~5-6
<<左移二进制位左移指定位数,右侧补0(等价于乘以 2^n5 << 220
>>右移二进制位右移指定位数,左侧补符号位(正数补0,负数补1,等价于整除 2^n20 >> 25

核心特点

  • 操作对象:仅适用于整数(自动转为二进制处理)。
  • 优先级:低于算术运算符(如 +*),高于比较运算符(如 >)。
  • 注意事项:右移负数时高位补1,过度使用可能降低代码可读性。

五、知识点考察题

a = 5  
b = 3  
c = 0  
result = a > b or c and a / c > 0  

以上代码输出输出结果()
A. True
B. False
C. 报错 ZeroDivisionError
D. 0


关注公众号「安于欣」获取更多Python技巧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值