python学习07:Python逻辑运算符及其用法

逻辑运算符是对真和假两种布尔值进行运算(操做 bool 类型的变量、常量或表达式),逻辑运算的返回值也是 bool 类型值。

Python 中的逻辑运算符主要包括 and(逻辑与)、or(逻辑或)以及 not(逻辑非),它们的具体用法和功能如表 1 所示。
 python

表 1 Python 逻辑运算符及功能
逻辑运算符 含义 基本格式 功能
and 逻辑与(简称“与”) a and b 有 2 个操做数 a 和 b,只有它们都是 True 时,才返回 True,不然返回 False。
or 逻辑或(简称“或”) a or b 有 2 个操做数 a 和 b ,只有它们都是 False 时,才返回 False,不然返回 True。
not 逻辑非(简称“非”) not a 只须要 1 个操做数 a,若是 a 的值为 True,则返回 False;反之,若是 a 的值为 False,则返回 True。


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

# 直接对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 元或该教程是基于“正式版”的。假如使用以下程序:.net

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') 的结果求与。

所以,应该把程序改成以下形式:code

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

从上面代码能够看出,对于组合逻辑来讲,使用圆括号保证运算顺序很是重要。教程

相关文章
相关标签/搜索