前面我們了解到,布爾類型是Python的基礎(chǔ)數(shù)據(jù)類型,布爾類型只有True和False兩種值,本節(jié)課我們學(xué)習(xí)布爾類型的集中運(yùn)算。
只有兩個(gè)布爾值都為 True 時(shí),計(jì)算結(jié)果才為 True。
True and True # ==> True True and False # ==> False False and True # ==> False False and False # ==> False
只要有一個(gè)布爾值為 True,計(jì)算結(jié)果就是 True。
True or True # ==> True True or False # ==> True False or True # ==> True False or False # ==> False
把True變?yōu)镕alse,或者把False變?yōu)門rue:
not True # ==> False not False # ==> True
這些運(yùn)算有什么用呢?計(jì)算機(jī)程序是由無數(shù)的邏輯分支組成的,通過布爾運(yùn)算,可以在計(jì)算機(jī)中實(shí)現(xiàn)條件判斷,根據(jù)計(jì)算結(jié)果為True或者False,計(jì)算機(jī)可以自動(dòng)執(zhí)行不同的后續(xù)代碼,因此學(xué)習(xí)布爾運(yùn)算也是非常有必要的。
在Python中,布爾類型還可以與其他數(shù)據(jù)類型(字符串,數(shù)字等)做 and、or和not運(yùn)算,請(qǐng)看下面的代碼:
a = True print(a and 0 or 99) # ==> 99
得到的計(jì)算結(jié)果不是布爾類型,而是數(shù)字99,這是為什么呢?
因?yàn)镻ython把0、空字符串和None看成False,其他數(shù)值和非空字符串都看成True,所以:
True and 0計(jì)算結(jié)果是0
繼續(xù)計(jì)算0 or 99計(jì)算結(jié)果是 99
因此,結(jié)果是99。
需要注意的是,not計(jì)算的優(yōu)先級(jí)是高于and和or的。
True and not False # ==> True
在上述布爾計(jì)算中,先計(jì)算not False = True,然后再計(jì)算True and True,因此得到True的結(jié)果。
a and b時(shí),如果 a 是 False,則根據(jù)與運(yùn)算法則,整個(gè)結(jié)果必定為 False,因此返回 a;如果 a 是 True,則整個(gè)計(jì)算結(jié)果必定取決與 b,因此返回 b。a or b時(shí),如果 a 是 True,則根據(jù)或運(yùn)算法則,整個(gè)計(jì)算結(jié)果必定為 True,因此返回 a;如果 a 是 False,則整個(gè)計(jì)算結(jié)果必定取決于 b,因此返回 b。所以Python解釋器在做布爾運(yùn)算時(shí),只要能提前確定計(jì)算結(jié)果,它就不會(huì)往后算了,直接返回結(jié)果。
請(qǐng)運(yùn)行如下代碼,并解釋打印的結(jié)果:
a = 'python'
print('hello,', a or 'world')
b = ''
print('hello,', b or 'world')
解釋:通過 or 運(yùn)算,可以把空字符串"變成"默認(rèn)字符串,而非空字符串保持不變。
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)