Rökfræðilegir rekstraraðilar Python og, eða, og ekki (rökræn samtenging, sundrun, neitun)

Viðskipti

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,notForgangur 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.

  1. not
  2. and
  3. 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.

xyx and yx or y
truefalseyx
falsetruexy
truetrueyx
falsefalsexy

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,orAthugað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
Copied title and URL