Python逻辑运算符及其用法

本文介绍了Python的逻辑运算符,包括与、或、非,说明了其操作规则和返回值。通过示例展示了组合复杂逻辑时可能出现的问题,强调使用圆括号保证运算顺序的重要性,即便结果相同,使用括号也可提高程序可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑运算符用于操作 bool 类型的变量、常量或表达式,逻辑运算的返回值也是 bool 值。

 

Python 的逻辑运算符有如下三个:

  1. and:与,前后两个操作数必须都是 True 才返回 True;否则返回 False。
  2. or:或,只要两个操作数中有一个是 True,就可以运回 True;否则返回 False;
  3. not:非,只需要一个操作数,如果操作数为 True,则返回 False;如果操作数为 False,则返回 True。

下面代码示范了与、或、非这三个逻辑运算符的使用:

  # 直接对False求非运算,将返回True  print(not False)  # 5>3返回True,20.0大于10,因此结果返回True  print(5 > 3 and 20.0 > 10)  # 4>=5返回False,"c">"a"返回True。求或后返回True  print(4 >= 5 or "c" > "a")

有些时候,程序需要使用多个逻辑运算符来组合复杂的逻辑。例如,假设想表达如下逻辑:需要购买一套必须以“Python”结尾的教程,且教程价格小于 50 元或该教程是基于“正式版”的。假如使用如下程序:

  bookName = "C语言中文网Python"  price = 99  version = "正式版"  if bookName.endswith('Python') and price < 50 or version == "正式版" :      print("打算购买这套Python教程")  else:      print("不购买!")

编译、运行上面程序,可以看到程序输出“打算购买这套Python教程”。那么上面程序是否有问题呢?

其实问题是存在的,这是因为程序会先计算 bookName.endswith('Python') and price < 50,即使该逻辑表达式中的两个条件都是 False,但只要后面的 version==“正式版” 返回 True,整个表达式就会返回 True,从而导致程序依然会输出“打算购买这套Python教程”。因此,即使把上面程序中的 bookName 改为不以“Python”结尾,程序也依然会输出“打算购买这套Python教程”。

运算结果显然与逻辑需求并不一致,逻辑需求是:需要购买一套名以“Python” 结尾的教程。此时应该使用圆括号来保证程序先对 price < 50 || version =="正式版" 求值,然后再与 bookName.endswith('Python') 的结果求与。

因此,应该把程序改为如下形式:

  bookName = "C语言中文网Python"  price = 99  version = "正式版"  if bookName.endswith('Python') and (price < 50 or version == "正式版") :      print("打算购买这套Python教程")  else:      print("不购买!")

从上面代码可以看出,对于组合逻辑来说,使用圆括号保证运算顺序非常重要。

需要说明的是,即使不是为了保证逻辑运算的顺序,且有括号和没括号的输出结果是一样的,本教程也依然建议使用圆括号来提高程序的可读性。

1.Python变量及其使用
2.Python变量命名规则
3.Python数值类型(整形、浮点型和复数)
4.Python字符串
5.Python bytes
6.Python转义字符
7.Python格式化字符串
8.Python截取字符串
9.Python字符串大小写转换
10.Python去除字符串中空格
11.Python字符串操作(查找,替换,分割和连接)
12.Python赋值运算符
13.Python算术运算符
14.Python位运算符
15.Python bool类型和比较运算符
16.Python逻辑运算符
17.Python三目运算符
18.Python运算符优先级

### Python 中的逻辑运算符及其用法 #### 一、概述 Python 提供了三种基本的逻辑运算符:`and`、`or` 和 `not`。这些运算符主要用于组合或修改布尔值(`True` 或 `False`)的条件表达式,广泛应用于条件判断、循环控制以及函数调用中[^2]。 --- #### 二、`and` 运算符 ##### (一)功能说明 `and` 运算符用于测试两个条件是否同时成立。如果第一个操作数为 `False`,则直接返回该操作数;否则返回第二个操作数的结果[^4]。 ##### (二)示例代码 以下是一个简单的例子,展示如何使用 `and` 运算符: ```python a = 10 b = 20 result = (a > 5) and (b < 30) # 判断 a 是否大于 5 且 b 小于 30 print(result) # 输出 True ``` ##### (三)短路特性 需要注意的是,`and` 运算符具有“短路”行为。这意味着如果第一个条件已经为 `False`,那么后续的条件将不再被评估。 ```python def test(): print("Test function called") return False result = test() and (10 > 5) # 测试短路行为 print(result) # 输出 False,因为 test() 已经返回 False ``` --- #### 三、`or` 运算符 ##### (一)功能说明 `or` 运算符用于测试至少有一个条件为真时的情况。如果第一个操作数为 `True`,则直接返回该操作数;否则返回第二个操作数的结果[^4]。 ##### (二)示例代码 以下是使用 `or` 运算符的一个简单例子: ```python a = 10 b = 20 result = (a < 5) or (b > 15) # 判断 a 是否小于 5 或 b 大于 15 print(result) # 输出 True ``` ##### (三)短路特性 类似于 `and`,`or` 运算符也具备“短路”特性。如果第一个条件为 `True`,则不会再评估后续条件。 ```python def test(): print("Test function called") return True result = test() or (10 < 5) # 测试短路行为 print(result) # 输出 True,因为 test() 已经返回 True ``` --- #### 四、`not` 运算符 ##### (一)功能说明 `not` 运算符用于取反一个布尔值。如果原值为 `True`,则返回 `False`;反之亦然[^4]。 ##### (二)示例代码 以下是如何使用 `not` 运算符的例子: ```python a = 10 result = not (a > 5) # 判断 a 是否不大于 5 print(result) # 输出 False ``` ##### (三)与其他运算符结合 `not` 运算符可以和其他逻辑运算符一起使用,形成更复杂的条件表达式[^3]。 ```python a = 10 b = 20 result = not ((a > 5) and (b < 30)) # 取反复合条件 print(result) # 输出 False ``` --- #### 五、综合应用 ##### (一)三元运算符中的逻辑运算 在 Python 的三元运算符中也可以嵌入逻辑运算符,从而实现更加灵活的条件判断[^1]。 ```python a = 10 b = 20 value = a if (a > 5) and (b < 30) else b # 结合 and 使用 print(value) # 输出 10 ``` ##### (二)复杂条件下的优先级 当多个逻辑运算符混合使用时,需注意它们之间的优先级关系。默认情况下,`not` 的优先级最高,其次是 `and`,最后是 `or`[^3]。 ```python a = 10 b = 20 result = not (a > 5) or (b < 30) and (a != 10) print(result) # 输出 False ``` 为了提高可读性和准确性,建议通过括号显式指定优先级。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值