国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術(shù)干貨  > python3 中 and 和 or 運算規(guī)律

python3 中 and 和 or 運算規(guī)律

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-11-05 21:03:49 1699189429

一、包含一個邏輯運算符

首先從基本的概念著手,python中哪些對象會被當成False呢?而哪些又是True呢?

在Python中,None、任何數(shù)值類型中的0、空字符串“”、空元組()、空列表[]、空字典{}都被當作False,還有自定義類型,如果實現(xiàn)了__nonzero__()或__len__()方法且方法返回0或False,則其實例也被當作False,其他對象均為True。

下面是最簡單的邏輯運算:這里1,2都是Ture;0,‘’都是False

1and2==>21or2==>1

1and0==>01or0==>1

0and1==>00or1==>1

0and''==>00or''==>''

總結(jié):

or從左到右,返回第一個為真的值,都為假返回后一個值

and從左到右,若所有值均為真,則返回后一個值,有一個假的值,則返回第一個假的值

二、包含兩個及以上的邏輯運算符

邏輯運算符and/or一旦不止一個,其運算規(guī)則的核心思想就是短路邏輯。好的,那我們就來了解一下短路思想:

表達式從左至右運算,若or的左側(cè)邏輯值為True,則短路or后所有的表達式(不管是and還是or),直接輸出or左側(cè)表達式。

表達式從左至右運算,若and的左側(cè)邏輯值為False,則短路其后所有and表達式,直到有or出現(xiàn),輸出and左側(cè)表達式到or的左側(cè),參與接下來的邏輯運算。

若or的左側(cè)為False,或者and的左側(cè)為True則不能使用短路邏輯。

就讓我們從簡單的開始,假設(shè)全是and語句或者全是or語句:

example1

defa():

print('A')

return[]

defb():

print('B')

return1

defc():

print('C')

return1

defd():

print('D')

return[]

defe():

print('E')

return1

ifa()andb()andc()andd()ande():

print('ok')

a()為假,其后均為and語句,全部短路,最終只返回a()的表達式。記住,所有被短路的表達式均不會被輸出。所以,此處僅僅打印A。

example2

defa():

print('A')

return1

defb():

print('B')

return1

defc():

print('C')

return[]

defd():

print('D')

return1

defe():

print('E')

return1

ifa()andb()andc()andd()ande():

print('ok')

python從左至右先執(zhí)行a(),a()返回的邏輯值為True,后面是and語句,所以不能短路其后,繼續(xù)與b()進行邏輯運算,a()andb()輸出b()的邏輯值True,接著與c()進行邏輯運算,b()andc()輸出c()的邏輯值False,而其后均為and語句,則全部短路,最終只打印了ABC。

example3

defa():

print('A')

return1

defb():

print('B')

return1

defc():

print('C')

return[]

defd():

print('D')

return1

defe():

print('E')

return[]

ifa()orb()orc()ord()ore():

print('ok')

a()的邏輯值為True,其后均為or語句,全部短路,最終只打印了A,而if語句為True,所以還要打印一個ok。

example4

defa():

print('A')

return[]

defb():

print('B')

return[]

defc():

print('C')

return1

defd():

print('D')

return[]

defe():

print('E')

return1

ifa()orb()orc()ord()ore():

print('ok')

python從左至右先執(zhí)行a(),a()返回的邏輯值為False,后面是or語句,所以不能短路其后,繼續(xù)與b()進行邏輯運算,a()orb()輸出b()的邏輯值False,接著與c()進行邏輯運算,b()orc()輸出c()的邏輯值True,而其后為or語句,則全部短路,最終只打印了ABCok。

下面我們就來講一下and與or語句同時存在的情況:

example5

defa():

print('A')

return[]

defb():

print('B')

return[]

defc():

print('C')

return1

defd():

print('D')

return[]

defe():

print('E')

return1

deff():

print('F')

return1

defg():

print('G')

return[]

defh():

print('H')

return1

ifa()andb()andc()andd()ore()andf()org()andh():

print('ok')

別以為語句很長就很難,我們好好分析一下,從左至右,首先a()的邏輯值為False,其后到or語句為止有三個and語句:a()andb()andc()andd(),均被短路。只輸出a(),得到a()ore()為True,輸出e(),得e()andF()為True,輸出f(),其后接or語句,則短路其后所有。最終只打印了AEFok。(結(jié)合上面的三點,慢慢分析)

三.三元運算操作符

在python2.5之前,python是沒有三元操作符的,GuidoVanRossum認為它并不能幫助python更加簡潔,但是那些習慣了c、c++和java編程的程序員卻嘗試著用and或者or來模擬出三元操作符,而這利用的就是python的短路邏輯。

三元運算操作符bool?a:b,若bool為真則a,否則為b。

轉(zhuǎn)化為python語言為:

boolandaorb

如何理解呢?首先a,b都為真,這是默認的。如果bool為真,則boolanda為真,輸出a,短路b。如果bool為假,短路a,直接boolorb,輸出b。

換一種更簡單的寫法:

returnaifboolelseb

以上內(nèi)容為大家介紹了python3中and和or運算規(guī)律,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓機構(gòu):千鋒教育。http://www.kei0345678.cn/

tags: python培訓
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學 138****2860 剛剛成功領(lǐng)取
王同學 131****2015 剛剛成功領(lǐng)取
張同學 133****4652 剛剛成功領(lǐng)取
李同學 135****8607 剛剛成功領(lǐng)取
楊同學 132****5667 剛剛成功領(lǐng)取
岳同學 134****6652 剛剛成功領(lǐng)取
梁同學 157****2950 剛剛成功領(lǐng)取
劉同學 189****1015 剛剛成功領(lǐng)取
張同學 155****4678 剛剛成功領(lǐng)取
鄒同學 139****2907 剛剛成功領(lǐng)取
董同學 138****2867 剛剛成功領(lǐng)取
周同學 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT