Python нь логик (Boolean) үйлдлийг гүйцэтгэх логик операторуудыг өгдөг.(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
эсвэл хоёр утгын логик OR-г буцаана.
print(True or True)
# True
print(True or False)
# True
print(False or True)
# True
print(False or False)
# False
үгүйсгэх:not
not” нь утгын үгүйсгэлийг буцаана; үнэн ба худал нь эсрэгээр.
print(not True)
# False
print(not False)
# True
and,or,notОператорын давуу эрх
Эдгээр логик операторуудын тэргүүлэх дараалал нь дараах байдалтай байна: not нь хамгийн өндөр.
not
and
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” эсвэл “Худал” гэсэн мөрийг үнэн гэж үзнэ гэдгийг анхаарна уу.
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 төрлийн үнэн эсвэл худал гэж буцаахгүй, харин үнэн эсвэл худал эсэхээс хамаарч утгыг зүүн эсвэл баруун талд буцаана. Жишээ нь тоон үзүүлэлт боловч мөр, жагсаалт зэрэг бусад төрөлд мөн адил хамаарна. Дашрамд хэлэхэд, 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)
болон болон эсвэл-ийн буцаах утгуудыг доорх хүснэгтэд нэгтгэн харуулав.
x | y | x and y | x or y |
---|---|---|---|
true | false | y | x |
false | true | x | y |
true | true | y | x |
false | false | x | y |
Богино холболт (богино холболтын үнэлгээ)
Дээрх хүснэгтээс харахад 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