Python býður upp á rökræna rekstraraðila til að framkvæma rökréttar (Boolean) aðgerðir.(and
,or
,not
)
Það er notað til að lýsa sambandi milli margra skilyrða í if-yfirlýsingu.
Þessi hluti lýsir eftirfarandi.
- gatnamót:
and
- rökrétt viðbót:
or
- afneitun:
not
and
,or
,not
Forgangur rekstraraðila
Að auki eru eftirfarandi atriði útskýrð sem varnaðarorð.
- Rökfræðilegir rekstraraðilar fyrir hluti af annarri gerð en bool
and
,or
Þessi skilagildi eru ekki endilega af gerðinni bool.- Skammhlaup (skammhlaupsmat)
gatnamót:and
og skilar rökréttri afurð tveggja gilda.
print(True and True)
# True
print(True and False)
# False
print(False and True)
# False
print(False and False)
# False
Reyndar er það oft ekki notað fyrir satt eða ósatt, heldur fyrir skilyrtar tjáningar með því að nota samanburðaraðgerðir. Fyrir þína upplýsingar eru samanburðarfyrirtækin sem hér segir.
<
>
a = 10
print(0 < a)
# True
print(a < 100)
# True
print(0 < a and a < 100)
# True
og má tengja saman sem hér segir.
print(0 < a < 100)
# True
rökrétt viðbót:or
eða skilar rökréttu OR gildinanna tveggja.
print(True or True)
# True
print(True or False)
# True
print(False or True)
# True
print(False or False)
# False
afneitun:not
ekki“ skilar afneitun gildisins; satt og ósatt er snúið við.
print(not True)
# False
print(not False)
# True
and,or,notForgangur rekstraraðila
Forgangsröð þessara rökrænu rekstraraðila er sem hér segir: ekki er hæst.
not
and
or
Í eftirfarandi sýnishornskóða er tjáningin hér að ofan túlkuð eins og hún væri sú hér að neðan. Þar sem það er ekkert vandamál með auka sviga gæti verið auðveldara að lýsa þeim skýrt í tilfellum eins og þessu dæmi.
print(True or True and False)
# True
print(True or (True and False))
# True
Ef þú vilt starfa eða fyrir og, notaðu sviga().
print((True or True) and False)
# False
<
,>
Þessir samanburðaraðilar hafa jafnvel hærri forgang en ekki. Þess vegna eru svigar ekki nauðsynlegar fyrir hverja samanburðaraðgerð, eins og var í dæminu hér að ofan.
print(0 < a and a < 100)
# True
Sjá opinberu skjölin hér að neðan til að fá yfirlit yfir forgang rekstraraðila í Python.
Rökfræðilegir rekstraraðilar fyrir hluti af annarri gerð en bool
With these logical operators, not only bool types (true, false), but also numbers, strings, lists, etc. are processed as boolean values.
Eftirfarandi hlutir eru taldir falskir í rökrænum aðgerðum Python.
- Stöður skilgreindar sem rangar:
None
,false
- Núll í tölulegum gerðum:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Tóm röð eða safn:
'
,()
,[]
,{}
,set()
,range(0)
Öll önnur gildi eru talin sönn.
Hægt er að nota fallið bool() til að fá boolean gildi hlutar. Athugaðu að strengurinn ‘0’ eða ‘False’ er talinn sannur.
print(bool(10))
# True
print(bool(0))
# False
print(bool(''))
# False
print(bool('0'))
# True
print(bool('False'))
# True
print(bool([]))
# False
print(bool([False]))
# True
Til að meðhöndla ‘0’ eða ‘false’ í streng sem rangt skaltu nota distutils.util.strtobool().
and,orÞessi skilagildi eru ekki endilega af gerðinni bool.
Hér er dæmi um annan hlut en bool gerð, sem sýnir niðurstöðu hvers rekstraraðila á tölugildi.
x = 10 # True
y = 0 # False
print(x and y)
# 0
print(x or y)
# 10
print(not x)
# False
Eins og þú sérð af dæminu hér að ofan skila og og eða í Python ekki satt eða ósatt af gerðinni bool, heldur skila gildinu til vinstri eða hægri eftir því hvort það er satt eða ósatt. Dæmið er tölulegt en það sama á við um aðrar gerðir eins og strengi og lista. Tilviljun, skilar ekki satt eða ósatt af gerðinni bool.
Skilgreiningar á skilagildum og og eða eru eftirfarandi.
The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.
The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.
6.11. Boolean operations — Expressions — Python 3.10.1 Documentation
Þegar gildi vinstri og hægri tjáninga eru sönn og ósönn hvort fyrir sig, er auðvelt að skilja skilagildin. Á hinn bóginn, ef hvort tveggja er satt eða hvort tveggja er ósatt, mun skilagildið vera mismunandi eftir röð.
Ef þú notar það sem skilyrta tjáningu í if-yfirlýsingu o.s.frv., þá er niðurstaðan metin sem boolean gildi og unnin, svo þú þarft ekki að hafa áhyggjur af því, en ef þú notar skilagildið til frekari úrvinnslu þarf að fara varlega.
x = 10 # True
y = 100 # True
print(x and y)
# 100
print(y and x)
# 10
print(x or y)
# 10
print(y or x)
# 100
x = 0 # False
y = 0.0 # False
print(x and y)
# 0
print(y and x)
# 0.0
print(x or y)
# 0.0
print(y or x)
# 0
print(bool(x and y))
# False
Ef þú vilt líta á það sem satt eða ósatt geturðu gert eins og í síðasta dæminu.bool(x and y)
Skilagildi og og eða eru tekin saman í töflunni hér að neðan.
x | y | x and y | x or y |
---|---|---|---|
true | false | y | x |
false | true | x | y |
true | true | y | x |
false | false | x | y |
Skammhlaup (skammhlaupsmat)
Eins og þú sérð í töflunni hér að ofan, ef x er ósatt í x og y, eða ef x er satt í x eða y, verður skilagildið x óháð gildi y.
Í slíku tilviki er y ekki metið.
and
,or
Athugaðu að ef þú kallar á fall eða aðferð hægra megin í þessum ferlum til að gera einhverja vinnslu, gæti ferlið ekki verið keyrt eftir niðurstöðunni vinstra megin.
def test():
print('function is called')
return True
print(True and test())
# function is called
# True
print(False and test())
# False
print(True or test())
# True
print(False or test())
# function is called
# True