Python логикалық операторлары және, немесе, және емес (логикалық конъюнкция, дизъюнкция, терістеу)

Іскерлік

Python логикалық (логикалық) операцияларды орындау үшін логикалық операторларды қамтамасыз етеді.(and,or,not)
Ол if операторындағы бірнеше шарттар арасындағы байланысты сипаттау үшін қолданылады.

Бұл бөлім келесіні сипаттайды.

  • қиылысу:and
  • логикалық қосу:or
  • бас тарту:not
  • and,or,notОператордың басымдылығы

Сонымен қатар, келесі тармақтар сақтық ретінде түсіндіріледі.

  • bool түрінен басқа нысандарға арналған логикалық операторлар
  • and,orБұл қайтарылатын мәндер міндетті түрде bool түріне жатпайды.
  • Қысқа тұйықталу (қысқа тұйықталуды бағалау)

қиылысу: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

not» мәннің терістеуін қайтарады; true және false кері.

print(not True)
# False

print(not False)
# True

and,or,notОператордың басымдылығы

Бұл логикалық операторлардың басымдылық реті келесідей: 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

Python тіліндегі оператор басымдылығының қысқаша мазмұны үшін төмендегі ресми құжаттаманы қараңыз.

bool түрінен басқа нысандарға арналған логикалық операторлар

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

Келесі нысандар Python логикалық операцияларында жалған болып саналады.

  • Жалған деп анықталған тұрақтылар:None,false
  • Сандық түрлерде нөл:0,0,0j,Decimal(0),Fraction(0, 1)
  • Бос тізбек немесе жинақ:',(),[],{},set(),range(0)

Барлық басқа мәндер ақиқат болып саналады.

bool() функциясын объектінің логикалық мәнін алу үшін пайдалануға болады. ‘0’ немесе ‘False’ жолы ақиқат деп есептелетінін ескеріңіз.

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» немесе «жалған» мәндерін жалған ретінде өңдеу үшін distutils.util.strtobool() пайдаланыңыз.

and,orБұл қайтарылатын мәндер міндетті түрде bool түріне жатпайды.

Мұнда сандық мәндегі әрбір оператордың нәтижесін көрсететін bool түрінен басқа нысанның мысалы берілген.

x = 10  # True
y = 0  # False

print(x and y)
# 0

print(x or y)
# 10

print(not x)
# False

Жоғарыдағы мысалдан көріп отырғаныңыздай, және және немесе Python-да bool түріндегі true немесе false мәнін қайтармайды, бірақ оның шын немесе жалған болуына байланысты мәнді сол немесе оң жақта қайтарады. Мысал сандық, бірақ жолдар мен тізімдер сияқты басқа түрлерге де бірдей қолданылады. Айтпақшы, not bool түріндегі ақиқат немесе жалған мәнін қайтарады.

және және немесе қайтаратын мәндерінің анықтамалары төмендегідей.

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

Сол және оң өрнектердің мәндері бөлек ақиқат және жалған болғанда, қайтарылатын мәндерді түсіну оңай. Екінші жағынан, егер екеуі де ақиқат болса немесе екеуі де жалған болса, қайтару мәні ретке байланысты әртүрлі болады.

Егер сіз оны if операторында және т.б. шартты өрнек ретінде пайдалансаңыз, нәтиже логикалық мән ретінде бағаланады және өңделеді, сондықтан бұл туралы алаңдамаудың қажеті жоқ, бірақ одан әрі өңдеу үшін қайтару мәнін пайдалансаңыз, сіз сақ болу керек.

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

Қысқа тұйықталу (қысқа тұйықталуды бағалау)

Жоғарыдағы кестеден көріп отырғаныңыздай, x пен у-де x жалған болса немесе x немесе у-де x ақиқат болса, у мәніне қарамастан қайтарылатын мән x болады.

Мұндай жағдайда y бағаланбайды.

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