Tõeväärtused ja loogikatehted

Tõeväärtused ehk bool tüüpi andmed saavad omada ainult väärtusi True või False. Kui ei kirjuta tõeväärtust korrektselt suure algustähega, siis antakse veateade.

>>> a = True
>>> a
True
>>> b = true
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'true' is not defined
>>> False
False

Võrdluse operaatorid

Võrdluse operaatorid võrdlevad kahte väärtust ja annavad tulemuseks True või False.

Operaator

Tähendus

==

Võrdne

!=

Mitte võrdne

>

Suurem kui

<

Väiksem kui

>=

Suurem või võrdne kui

<=

Väiksem või võrdne kui

>>> 15 == 15
True
>>> 2 == 3
False
>>> 5 != 7
True
>>> 5 != 5
False
>>> 3 < 5
True
>>> 4 >= 4
True

== ja != operaatorid toimivad tegelikult kõikide andmetüüpide puhul.

>>> 'hello' == 'hello'
True
>>> 'abc' == 'Abc'
False
>>> 'xy' != 'yx'
True
>>> 123 != '123'
True
>>> 52 == 52.0
True
>>> True != False
True
>>> 1.1 == 1.0
False
>>> 1.0 == 1.000
True

Tip

Võrdlusi tuleks läbi viia vaid sama tüüpi väärtustega. Näiteks: 123 == '123' annab tulemuseks False, sest võrreldakse arvu ja sõnet. Samuti tuleb arvestada, et sõnede 'abc' == 'Abc' võrdlus on tõstutundlik.

Operaatorid >, <, >= ja <= toimivad ainult täisarvude ja ujukomaarvudega. Kui teha võrdlus 'a' < 'b'  # -> True, siis tegelikult toimub taustal võrdlus unicode väärtuste vahel ehk ord('a') < ord('b'). ord() kohta saab lugeda siit.

>>> age = 20
>>> age >= 18
True
>>> age < 20
False
>>> age == 20
True

Segamini ei tohi ajada kahte sarnast operaatorit == ja =.

  • == võrdleb kahte väärtust ja tagastab tulemuseks True või False.

  • = omistab paremal oleva väärtuse vasakul olevale muutujale.

Loogikatehted

Pythonis kasutatakse kolme võtmesõna and, or ja not tõeväärtustel opereerimiseks. Sarnaselt võrdlusega on operatsioonide tulemuseks üksainus tõeväärtus.

Binaarsed loogikatehted and ja or

Operaatorid and ja or vajavad alati kahte tõeväärtust, seega loetakse neid binaarseteks. and on sisendite loogiline korrutamine ehk konjunktsioon ja or on sisendite loogiline liitmine ehk disjunktsioon. and puhul peavad kõik väärtused olema True ja or puhul peab vähemalt üks sisenditest olema True, et tulemus oleks True.

Täpsemalt näeb allolevast tabelist.

Tõeväärtustabel:

Sisendid

Väljund

A

B

A or B

A and B

False

False

False

False

True

False

True

False

False

True

True

False

True

True

True

True

Unaarne loogikatehe not ehk inversioon

Inversioon on ainuke loogikatehe, mis on ühe sisendiga ehk opereerib vaid ühel tõeväärtusel. Pythonis kasutatakse selleks võtmesõna not. Inversioon teostab inversioonitehte ehk tulemuseks on esialgse eitus.

>>> not True
False
>>> not False
True
>>> not not True
True
>>> not not not not not not False
False

Võimalusel tasuks loogikatehteid alati teisendada lihtsamale kujule.

Loogikatehete ja võrdlustehete kombineerimine

Võrdlustehete tulemuseks on tõeväärtused. Seega annab võrdlustehteid kombineerida loogikatehetega. Meenutuseks: loogikatehted toimivad tõeväärtustel True ja False kasutades võtmesõnu and, or ja not. 2 < 3 on aga võrdlustehe, sest 2 ja 3 pole tõeväärtused.

# no pec # You can also edit the code print((2 < 3) and (3 == 3)) # --> True print((2 != 2) or (1 >= 1)) # --> True print((1 > 2) and (1 < 2)) # --> False

Tehteid teostatakse vasakult paremale. Võib mõelda, et arvuti teostab neid nii:

  • (2 < 3) and (3 == 3)

  • (True) and (3 == 3)

  • (True) and (True)

  • True

Tip

Oluline on arvestada tehete järjekorda. Loogikatehetel on järjekord - not -> and -> or.

# no pec print(3 > 2 and not 2 > 4) # True and not False --> True print(3 > 5 or not 7 != 7 or 1 + 2 == 4) # False or not False or False --> True print(3 != 2 and not 2 >= 2 and 5 + 1 == 6) # True and not True and True --> False

Tehete järjekorra muutmiseks või rõhutamiseks võib alati lisada sulge.

# no pec print((not 2 + 4 < 6 or False) and False) # (not False or False) and False --> False print(not 2 + 4 < 6 or False and False) # not False or False and False --> True

Võib mõelda, et arvuti teostab esimest näidet nii:

  • (not 2 + 4 < 6 or False) and False

  • (not False or False) and False

  • (True or False) and False

  • (True) and False

  • False

Teist näidet:

  • not 2 + 4 < 6 or False and False

  • not False or False and False

  • True or False and False

  • True or False

  • True

== None vs is None

== kontrollib võrdsust kasutades __eq__() meetodit. is kontrollib objektide enda võrdsust (viitavad samale objektile).

Näide:

>>> 1 == True
True
>>> 1 is True
False

Reeglina võib kasutada is None võrdluses ja igal pool mujal ==.

Lisalugemist