Teigiama ir neigiama reikšmė (booleans)

Iš wiki.angis.net.
Jump to navigation Jump to search

Booleans - tai loginis duomenų tipas turintis dvi reikšmes: loginis „taip“ ir loginis „ne“. Python programavimo kalboje tai užrašoma kaip True arba False (būtinai iš didžiųjų!). Kai rašoma programa dažnai pasitaiko, kai reikia įvykdyti skirtingą kodą, kuris atitinka tam tikras sąlygas, būtent čia ir gelbėja bolleans reikšmės.

Funkcija bool()

Ši funkcija įvertina, bet kokią reikšmę ir pateikia jos loginę reikšmę True arba False:

print(bool("Vilnius")) #True
print(bool(15)) # True
print(bool(0)) # False

Neigiama reikšmė: False

Kiekvienas objektas turi boolean loginę reikšmę. Beveik visi objektai turi loginę True reikšmę, išskyrus šie objektai visuomet yra False:

bool(None) # False
bool(False) # False

# Nulis nepriklausomai nuo tipo: int, float ar complex yra False
bool(0) # False

# kiekviena tuščia reikšmė
bool("") # False
bool(()) # False
bool([]) # False
bool({}) # False

#Objektai iš klasių, turinčių specialų metodą __nonzero__
class B():
    def __nonzero__(self):
        return 0
b = B()
    bool(b) # False
#Objektai iš klasių, kurie realizuoja __len__, kad grąžintų klaidingą arba nulį
class A():
    def __len__(self):
        return 0
b = B()
bool(b) # False

Dviejų reikšmių palyginimas

Kai lyginame dvi reikšmes Python grąžina boolean reikšmę:

print(5 > 2) # True
print(5 < 2) # False
print(5 == 2) # False

Kelių reikšmių lyginimas

Galima lyginti kelias reikšmes ir gauti boolean reikšmę:

x = 5
print(bool(4 < x < 6)) # True
print(bool(7 < x < 8)) # False
print(bool(6 > x <= 5)) # True
print(bool(5 == x < 6)) # True

Kuo skiriasi is ir ==?

Yra nedidelis skirtumas tarp „Python“ tapatybės operatoriaus (is) ir lygybės operatoriaus (==). Lygybės operatorius (==) lygina dviejų objektų vertę ar lygybę, o operatorius is tikrina, ar du kintamieji nurodo tą patį atminties objektą.

a = [1, 2, 3]
b = a
c = a[:]

print(bool(a == b))# True
print(bool(a == c)) # True

print(bool(a is b)) # True
print(bool(a is c)) # False

Loginiai operatoriai and, or, not

And, not yra loginiai operatoriai, kurie grąžina True tik tokiu atveju, jeigu abu lyginami dalykai yra True, o loginis operatorius or grąžina True, tokiu atveju, jei vienas iš lyginamų dalykų yra True:

x = True
y = False

print('x and y yra',x and y) #False

print('x or y yra',x or y) #True

print('not x yra',not x) #False

Funkcijos gali grąžinti boolean reikšmę

Galima sukurti funkcijas, kurios grąžina boolean reikšmę:

def myFunction() :
  return True

print(myFunction()) # True

# Angyje

komanda manoFunkcija():
    grąžink True

rašyk(manoFunkcija()) # True