Pythoni loogilised operaatorid ja, või ja mitte (loogiline konjunktsioon, disjunktsioon, eitus)

Äri

Python pakub loogilisi operaatoreid loogiliste (Boole'i) operatsioonide tegemiseks.(and,or,not)
Seda kasutatakse mitme tingimuse vahelise seose kirjeldamiseks if-avalduses.

Selles jaotises kirjeldatakse järgmist.

  • ristmik: and
  • loogiline lisamine: or
  • eitamine: not
  • and,or,notOperaatori eelisjärjekord

Lisaks on ettevaatusabinõuna selgitatud järgmisi punkte.

  • Loogilised operaatorid muud tüüpi objektidele kui bool
  • and,orNeed tagastusväärtused ei ole tingimata tüübilt bool.
  • Lühiseade (lühise hindamine)

ristmik: and

ja tagastab kahe väärtuse loogilise korrutise.

print(True and True)
# True

print(True and False)
# False

print(False and True)
# False

print(False and False)
# False

Tegelikult kasutatakse seda sageli mitte tõe või vale, vaid tingimuslike väljendite puhul, mis kasutavad võrdlusoperaatoreid. Informatsiooniks, võrdlusoperaatorid on järgmised.

  • <
  • >
a = 10
print(0 < a)
# True

print(a < 100)
# True

print(0 < a and a < 100)
# True

ja neid saab liita järgmiselt.

print(0 < a < 100)
# True

loogiline lisamine: or

või tagastab kahe väärtuse loogilise VÕI.

print(True or True)
# True

print(True or False)
# True

print(False or True)
# True

print(False or False)
# False

eitamine: not

not” tagastab väärtuse eituse; true ja false on ümberpööratud.

print(not True)
# False

print(not False)
# True

and,or,notOperaatori eelisjärjekord

Nende loogiliste operaatorite tähtsuse järjekord on järgmine: not on kõrgeim.

  1. not
  2. and
  3. or

Järgnevas näidiskoodis tõlgendatakse ülaltoodud väljendit nii, nagu oleks see alljärgnev. Kuna liigsete sulgudega ei ole probleemi, siis võib olla lihtsam neid selgelt kirjeldada sellistel juhtudel nagu see näide.

print(True or True and False)
# True

print(True or (True and False))
# True

Kui soovite kasutada või enne ja, kasutage sulgusid().

print((True or True) and False)
# False

<,>Neil võrdlusoperaatoritel on isegi suurem tähtsus kui mitte. Seetõttu ei ole sulgud vajalikud iga võrdlusoperatsiooni puhul, nagu oli ülaltoodud näites.

print(0 < a and a < 100)
# True

Pythoni operaatorite eelisjärjekorra kohta leiate kokkuvõtte allpool olevast ametlikust dokumentatsioonist.

Loogilised operaatorid muud tüüpi objektidele kui bool

Nende loogiliste operaatorite abil ei töödelda bool-tüüpe (true, false), vaid ka numbreid, string'e, loendeid jne boole'i väärtustena.

Järgmisi objekte peetakse Pythoni loogilistes operatsioonides valeks.

  • Konstandid, mis on määratletud valeks: None,false
  • Null numbrilistes tüüpides: 0,0,0j,Decimal(0),Fraction(0, 1)
  • Tühi jada või kogumik: '',(),[],{},set(),range(0)

Kõik muud väärtused loetakse tõeseks.

Funktsiooni bool() saab kasutada objekti bool'i väärtuse saamiseks. Pange tähele, et string '0' või 'False' loetakse tõeseks.

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

Selleks, et käsitleda '0' või 'false' stringis valena, kasutage distutils.util.strtobool().

and,orNeed tagastusväärtused ei ole tingimata tüübilt bool.

Siin on näide muu kui bool-tüüpi objekti kohta, mis näitab iga operaatori tulemust numbrilise väärtuse kohta.

x = 10  # True
y = 0  # False

print(x and y)
# 0

print(x or y)
# 10

print(not x)
# False

Nagu ülaltoodud näitest näha, ei tagasta ja ja või Pythonis bool-tüüpi väärtusi true või false, vaid tagastavad vasakul või paremal asuva väärtuse sõltuvalt sellest, kas see on true või false. Näide on numbriline, kuid sama kehtib ka teiste tüüpide, näiteks stringide ja loendite kohta. Muide, not tagastab bool-tüübi true või false.

Tagastusväärtuste ja ja või määratlused on järgmised.

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

Kui vasaku ja parema väljendi väärtused on tõene ja väär eraldi, on tagastusväärtused kergesti mõistetavad. Teisalt, kui mõlemad on tõesed või mõlemad on valed, on tagastusväärtus sõltuvalt järjekorrast erinev.

Kui kasutate seda tingimusliku väljendusena if-avalduses jne, hinnatakse tulemust boole'i väärtuseks ja seda töödeldakse, nii et te ei pea selle pärast muretsema, kuid kui kasutate tagastusväärtust edasiseks töötlemiseks, peate olema ettevaatlik.

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

Kui soovite seda käsitleda tõese või valena, saate seda teha nagu eelmises näites.
bool(x and y)

ja ja või tagastusväärtused on kokkuvõtlikult esitatud alljärgnevas tabelis.

xyx and yx or y
truefalseyx
falsetruexy
truetrueyx
falsefalsexy

Lühiseade (lühise hindamine)

Nagu ülaltoodud tabelist näha, kui x on vale x-is ja y-is või kui x on tõene x-is või y-is, on tagastusväärtus x sõltumata y-i väärtusest.

Sellisel juhul ei hinnata y.

and,orPange tähele, et kui te kutsute nende protsesside paremal poolel olevat funktsiooni või meetodit, et teha mingit töötlemist, ei pruugi protsess sõltuvalt vasakul poolel olevast tulemusest täide minna.

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