Python хэл дээрх if хэллэгүүдээр нөхцөлт салаалсан байдлыг тайлбарла.
- if мэдэгдлийн үндэс (if, elif, else)
- Харьцуулах операторууд гэх мэт нөхцөлүүдийг зааж өгнө үү.
- Нөхцөлийг тоо, жагсаалт гэх мэтээр зааж өгнө үү.
- Логик операторуудтай олон нөхцөл эсвэл үгүйсгэлийг зааж өгөх (ба, эсвэл, үгүй)
- Шинэ мөр болон олон мөрөнд нөхцөлт илэрхийллүүд
Мөн нэг мөрөнд нөхцөлт салбарыг дүрсэлсэн гуравдагч оператор байдаг. Дараах нийтлэлийг үзнэ үү.
if мэдэгдлийн үндэс (if, elif, else)
if мэдэгдлийн үндсэн хэлбэр нь дараах байдалтай байна
if Conditional expression 1:
`Processing to be performed if Expression 1 is True.`
elif Conditional expression 2:
`Processing to be performed when expression 1 is false and expression 2 is true.`
elif Expression 3:
`Process when expression 1 and 2 are false and expression 3 is true.`
...
else:
`Processing when all conditionals are false.`
“elif” нь Си болон бусад хэл дээрх “else if”-тэй тохирч, хэдэн ч “elif” байж болно.
Хэрэв худал шаардлагагүй үед зөвхөн нэг нөхцөлт илэрхийлэл эсвэл боловсруулалт байгаа бол “elif” болон “else” блокуудыг орхиж болно.
Харьцуулах операторууд гэх мэт нөхцөлүүдийг зааж өгнө үү.
Харьцуулах оператор гэх мэт bool төрлийг (үнэн, худал) буцаадаг үйлдлээр нөхцөлийг зааж өгнө үү.
Python харьцуулах операторууд дараах байдалтай байна
оператор | үр дүн |
---|---|
x < y | хэрэв x нь у-аас бага бол үнэн |
x <= y | хэрэв x нь у-аас бага эсвэл тэнцүү бол үнэн |
x > y | хэрэв x нь у-аас их бол үнэн |
x >= y | хэрэв x нь у-аас их эсвэл тэнцүү бол үнэн |
x == y | x ба у утгууд тэнцүү бол үнэн |
x != y
x is y
x is not y
x in y
x not in y
Жишээ. Тохиромжтой болгох үүднээс үүнийг def мэдэгдэл бүхий функц гэж тодорхойлсон.
def if_test(num):
if num > 100:
print('100 < num')
elif num > 50:
print('50 < num <= 100')
elif num > 0:
print('0 < num <= 50')
elif num == 0:
print('num == 0')
else:
print('num < 0')
if_test(1000)
# 100 < num
if_test(70)
# 50 < num <= 100
if_test(0)
# num == 0
if_test(-100)
# num < 0
Дараахыг Python-д өвөрмөц байдлаар бичиж болно. Дэлгэрэнгүйг дараах нийтлэлээс үзнэ үү.a < x < b
def if_test2(num):
if 50 < num < 100:
print('50 < num < 100')
else:
print('num <= 50 or num >= 100')
if_test2(70)
# 50 < num < 100
if_test2(0)
# num <= 50 or num >= 100
#ERROR!
!=
Дээрх нь утгуудын харьцуулалт юм; Объектын таних зүйлсийг харьцуулахын тулд дараахыг ашиглана уу
is
is not
Жишээлбэл, бүхэл тоо болон хөвөгч цэгийг харьцуулахдаа “==” утга нь тэнцүү бол үнэн, харин өөр объект учраас “is” нь худал буцаана.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
Жагсаалт эсвэл мөр нь тодорхой элемент (тэмдэгт) агуулж байна уу гэсэн нөхцөлийг мөн тавьж болно.
in
:оруулахnot in
:оруулахгүй
def if_test_in(s):
if 'a' in s:
print('a is in string')
else:
print('a is NOT in string')
if_test_in('apple')
# a is in string
if_test_in('melon')
# a is NOT in string
Нөхцөлийг тоо, жагсаалт гэх мэтээр зааж өгнө үү.
if хэллэгийн нөхцөлт илэрхийлэл нь bool (үнэн, худал) төрлийн бус тоо, жагсаалт эсвэл бусад объект байж болно.
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
Python if хэллэгийн нөхцөлт илэрхийлэлд дараах объектуудыг худал гэж үзнэ.
- Тогтмолыг худал гэж тодорхойлсон:
None
,false
- Тоон төрлөөр тэг:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Хоосон дараалал эсвэл цуглуулга:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Тэг, хоосон мөр, жагсаалт гэх мэтийг илэрхийлсэн тоонууд худал гэж тооцогддог; бусад нь үнэн гэж үздэг.
Объектыг хэрхэн дүгнэж байгааг bool() ашиглан шалгаж болно.
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Үүнийг жишээ нь жагсаалт хоосон үед процессыг бичихэд ашиглаж болно.
def if_test_list(l):
if l:
print('list is NOT empty')
else:
print('list is empty')
if_test_list([0, 1, 2])
# list is NOT empty
if_test_list([])
# list is empty
Дээрх жишээнд үзүүлсэн шиг мөр дотор хоосон биш бүх мөр үнэн байх тул ‘False’ тэмдэгт мөр нь үнэн байх болно гэдгийг анхаарна уу.’ “Үнэн” эсвэл “Худал” гэх мэт тодорхой мөрийг 1,0 болгон хөрвүүлэхийн тулд distutils.util модулийн strtobool()-г ашиглана уу.
Логик операторуудтай олон нөхцөл эсвэл үгүйсгэлийг зааж өгөх (ба, эсвэл, үгүй)
Логик операторуудыг (ба, эсвэл, үгүй) логик холболт, логик салгах, олон нөхцөлийг үгүйсгэхэд ашиглаж болно.
оператор | (Үр дүн (if мэдэгдлийн нөхцөлт илэрхийлэлд) |
---|---|
x and y | x ба y хоёулаа үнэн бол үнэн |
x or y | x эсвэл y аль нэг нь үнэн бол үнэн |
not x | x үнэн бол худал, х худал бол үнэн |
def if_test_and_not(num):
if num >= 0 and not num % 2 == 0:
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_not(5)
# num is positive odd
if_test_and_not(10)
# num is NOT positive odd
if_test_and_not(-10)
# num is NOT positive odd
Үнэн хэрэгтээ “х ба у” ба “х эсвэл у” нь Үнэн эсвэл Худал гэж буцаадаггүй, харин x эсвэл у гэсэн утгыг өгдөг. Эдгээр нь if хэллэгт нөхцөлт илэрхийлэлд ашиглагдаж байгаа л бол Үнэн эсвэл Худал гэж үнэлдэг тул санаа зовох зүйлгүй. Дэлгэрэнгүйг дараах нийтлэлээс үзнэ үү.
- ХОЛБООТОЙ:Python-ийн логик операторууд “ба, эсвэл, үгүй” (логик холболт, логик салгах, үгүйсгэх)
Энэ нь болон ба эсвэл нэгээс олон удаа ашиглах боломжтой.
def if_test_and_not_or(num):
if num >= 0 and not num % 2 == 0 or num == -10:
print('num is positive odd or -10')
else:
print('num is NOT positive odd or -10')
if_test_and_not_or(5)
# num is positive odd or -10
if_test_and_not_or(10)
# num is NOT positive odd or -10
if_test_and_not_or(-10)
# num is positive odd or -10
Шинэ мөр болон олон мөрөнд нөхцөлт илэрхийллүүд
Олон нөхцөлт хэллэгийг “ба” эсвэл “эсвэл”-ээр холбож, мөр бүр уртсах үед нөхцөлт илэрхийлэлийг эвдэж, олон мөрөнд бичих шаардлагатай болдог.
Буруу ташуу зураас эсвэл бүхэл бүтэн мөрийг хаалтанд хийж мөр таслах боломжтой.
def if_test_and_backslash(num):
if num >= 0 \
and not num % 2 == 0:
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_backslash(5)
# num is positive odd
def if_test_and_brackets(num):
if (num >= 0
and not num % 2 == 0):
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_brackets(5)
# num is positive odd
Та урвуу зураасаар зураасыг хэдэн ч удаа таслах боломжтой. Үүний нэгэн адил та хаалт дотор хэдэн ч удаа мөр тасалж болно. Доголын хязгаарлалт байхгүй.
Энэ нь зөвхөн if хэллэгт бус Python кодын хаана ч ашиглах боломжтой техник гэдгийг анхаарна уу.
- ХОЛБООТОЙ:Python дээр олон мөрөнд урт мөр бичих