Python-da if ifadələri ilə şərti budaqlanmağı izah edin.
- if ifadələrinin əsasları (if, elif, else)
- Müqayisə operatorları ilə şərtləri müəyyənləşdirin və s.
- Şərtləri nömrə, siyahı və s.
- Məntiqi operatorlarla çoxlu şərtləri və ya inkarları göstərin (və ya, yox)
- Yeni sətirlərdə və çoxlu sətirlərdə şərti ifadələr
Bir sətirdə şərti budaqı təsvir edən üçlü operator da var. Aşağıdakı məqaləyə baxın.
if ifadələrinin əsasları (if, elif, else)
if ifadəsinin əsas forması aşağıdakı kimidir
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” C və digər dillərdə “else if”ə uyğun gəlir və istənilən sayda “elif” ola bilər.
Yalnız bir şərti ifadə və ya false lazım olmadığı halda emal varsa, “elif” və “else” blokları buraxıla bilər.
Müqayisə operatorları ilə şərtləri müəyyənləşdirin və s.
Müqayisə operatoru kimi bool tipini (doğru, yanlış) qaytaran əməliyyatla şərti təyin edin.
Python müqayisə operatorları aşağıdakılardır
operator | nəticə |
---|---|
x < y | doğrudur, əgər x y-dən kiçikdirsə |
x <= y | doğrudur, əgər x y-dən kiçik və ya ona bərabərdirsə |
x > y | doğrudur, əgər x y-dən böyükdürsə |
x >= y | doğrudur, əgər x y-dən böyük və ya ona bərabərdirsə |
x == y | x və y qiymətləri bərabər olduqda doğrudur |
x != y
x is y
x is not y
x in y
x not in y
Misal. Rahatlıq üçün def ifadəsi ilə funksiya kimi müəyyən edilmişdir.
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
Aşağıdakılar Python-a xas olan şəkildə yazıla bilər. Təfərrüatlar üçün aşağıdakı məqaləyə baxın.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!
!=
Yuxarıdakılar dəyərlərin müqayisəsidir; obyekt şəxsiyyətlərini müqayisə etmək üçün aşağıdakılardan istifadə edin
is
is not
Məsələn, tam ədədi və üzən nöqtəli ədədi müqayisə edərkən, dəyərlər ekvivalent olduqda “==” doğru, lakin fərqli obyektlər olduğu üçün “is” yalanı qaytarır.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
Siyahının və ya sətrin müəyyən elementin (simvol) olub-olmamasını şərtləndirmək də mümkündür.
in
:daxildirnot in
:daxil deyil
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
Şərtləri nömrə, siyahı və s.
if ifadəsinin şərti ifadəsi nömrə, siyahı və ya bool tipində olmayan başqa obyekt ola bilər (doğru, yanlış).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
Python if ifadəsinin şərti ifadəsində aşağıdakı obyektlər yalan hesab olunur.
- Sabitlər yanlış olaraq təyin olunur:
None
,false
- Rəqəm tipində sıfır:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Boş ardıcıllıq və ya kolleksiya:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Sıfırı təmsil edən rəqəmlər, boş sətirlər, siyahılar və s. yalan hesab olunur; qalanların hamısı doğru hesab olunur.
Obyektin necə qiymətləndirildiyini bool() ilə yoxlamaq olar.
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Bu, məsələn, siyahı boş olduqda prosesi sadəcə yazmaq üçün istifadə edilə bilər.
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
Qeyd edək ki, “Yanlış” sətri də doğru olacaq, çünki yuxarıdakı nümunədə göstərildiyi kimi, sətirdə boş olmayan hər hansı sətir doğru olacaq.’ ‘True’ və ya ‘False’ kimi xüsusi sətri 1,0-a çevirmək üçün distutils.util modulunda strtobool() istifadə edin.
Məntiqi operatorlarla çoxlu şərtləri və ya inkarları göstərin (və ya, yox)
Məntiqi operatorlar (və, və ya, deyil) məntiqi birləşməni, məntiqi ayırmağı və çoxsaylı şərtlərin inkarını idarə etmək üçün istifadə edilə bilər.
operator | (Nəticə (if ifadəsinin şərti ifadəsində) |
---|---|
x and y | həm x, həm də y doğrudursa doğrudur |
x or y | doğrudur, əgər x və ya y doğrudursa |
not x | x doğrudursa yalan, x yanlışdırsa doğrudur |
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
Əslində, “x və y” və “x və ya y” Doğru və ya Yanlış deyil, ya x və ya y qaytarır. Nə qədər ki, if ifadələrində şərti ifadələrdə istifadə olunur, onlar üçün narahat olmağa ehtiyac yoxdur, çünki onlar ya Doğru, ya da Yanlış kimi qiymətləndirirlər. Təfərrüatlar üçün aşağıdakı məqaləyə baxın.
- ƏLAQƏLİ:Python-un məntiqi operatorları “and, or, not” (məntiqi birləşmə, məntiqi disjunksiya, inkar)
və və və ya bir dəfədən çox istifadə etmək mümkündür.
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
Yeni sətirlərdə və çoxlu sətirlərdə şərti ifadələr
Çoxlu şərti ifadələr “və” və ya “yaxud” ilə birləşdirildikdə və hər sətir uzunlaşdıqda bəzən şərti ifadəni pozub çoxlu sətirlərə yazmaq lazım gəlir.
Sətir kəsilməsi tərs kəsik işarəsindən istifadə etməklə və ya bütün sətri mötərizə içərisinə almaqla edilə bilər.
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
İstədiyiniz qədər xətti qırmaq üçün tərs xəttdən istifadə edə bilərsiniz. Eyni şəkildə, mötərizə içərisində sətri istənilən sayda kəsə bilərsiniz. Heç bir girinti limiti yoxdur.
Qeyd edək ki, bu, yalnız if ifadələrində deyil, Python kodunda hər yerdə istifadə edilə bilən bir texnikadır.