Питхон-ови логички оператори и, или, и не (логичка коњункција, дисјункција, негација)

Бусинесс

Питхон обезбеђује логичке операторе за обављање логичких (Боолеан) операција.(and,or,not)
Користи се за описивање односа између више услова у иф наредби.

Овај одељак описује следеће.

  • раскрсница:and
  • логичан додатак:or
  • порицање:not
  • and,or,notПриоритет оператера

Поред тога, следеће тачке су објашњене као упозорења.

  • Логички оператори за објекте типа који није боол
  • and,orОве повратне вредности нису нужно типа боол.
  • Кратки спој (процена кратког споја)

раскрсница:and

и враћа логички производ две вредности.

print(True and True)
# True

print(True and False)
# False

print(False and True)
# False

print(False and False)
# False

У ствари, често се не користи за тачно или нетачно, већ за условне изразе који користе операторе поређења. За вашу информацију, оператори поређења су следећи.

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

print(a < 100)
# True

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

и може се спојити на следећи начин.

print(0 < a < 100)
# True

логичан додатак:or

или враћа логичко ИЛИ две вредности.

print(True or True)
# True

print(True or False)
# True

print(False or True)
# True

print(False or False)
# False

порицање:not

нот“ враћа негацију вредности; труе и фалсе су обрнути.

print(not True)
# False

print(not False)
# True

and,or,notПриоритет оператера

Редослед приоритета ових логичких оператора је следећи: не је највиши.

  1. not
  2. and
  3. or

У следећем узорку кода, горњи израз се тумачи као да је онај испод. Пошто нема проблема са додатним заградама, можда ће бити лакше јасно их описати у случајевима као што је овај пример.

print(True or True and False)
# True

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

Ако желите да оперишете или пре и, користите заграде().

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

<,>Ови оператори поређења имају чак и већи приоритет него не. Према томе, заграде нису неопходне за сваку операцију поређења, као што је био случај у горњем примеру.

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

Погледајте званичну документацију у наставку за резиме приоритета оператора у Питхон-у.

Логички оператори за објекте типа који није боол

With these logical operators, not only bool types (true, false), but also numbers, strings, lists, etc. are processed as boolean values.

Следећи објекти се сматрају нетачним у Питхон-овим логичким операцијама.

  • Константе дефинисане као нетачне:None,false
  • Нула у нумеричким типовима:0,0,0j,Decimal(0),Fraction(0, 1)
  • Празна секвенца или збирка:',(),[],{},set(),range(0)

Све остале вредности се сматрају истинитим.

Функција боол() се може користити за добијање логичке вредности објекта. Имајте на уму да се стринг ‘0’ или ‘Фалсе’ сматра тачним.

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

Да обрадите ‘0’ или ‘фалсе’ у низу као фалсе, користите дистутилс.утил.стртобоол().

and,orОве повратне вредности нису нужно типа боол.

Ево примера објекта који није боол тип, који приказује резултат сваког оператора на нумеричкој вредности.

x = 10  # True
y = 0  # False

print(x and y)
# 0

print(x or y)
# 10

print(not x)
# False

Као што можете видети из примера изнад, и и или у Питхон-у не враћају труе или фалсе типа боол, већ враћају вредност са леве или десне стране у зависности од тога да ли је тачна или нетачна. Пример је нумерички, али исто важи и за друге типове као што су стрингови и листе. Узгред, не враћа труе или фалсе типа боол.

Дефиниције повратних вредности и и или су следеће.

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

Када су вредности левог и десног израза одвојено истините и нетачне, повратне вредности је лако разумети. С друге стране, ако су оба тачна или су оба лажна, повратна вредност ће бити различита у зависности од редоследа.

Ако га користите као условни израз у изјави иф, итд., резултат се оцењује као логичка вредност и обрађује, тако да не морате да бринете о томе, али ако повратну вредност користите за даљу обраду, треба бити опрезан.

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

Ако желите да га третирате као истинито или нетачно, можете учинити као у последњем примеру.
bool(x and y)

Повратне вредности и и или су сажете у табели испод.

xyx and yx or y
truefalseyx
falsetruexy
truetrueyx
falsefalsexy

Кратки спој (процена кратког споја)

Као што можете видети из горње табеле, ако је к нетачно у к и и, или ако је к тачно у к или и, повратна вредност ће бити к без обзира на вредност и.

У таквом случају, и се не вреднује.

and,orИмајте на уму да ако позовете функцију или метод на десној страни ових процеса да бисте обавили неку обраду, процес се можда неће извршити у зависности од резултата на левој страни.

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