Python’da koşullu dallanmayı if ifadeleriyle açıklayın.
- if deyimlerinin temelleri (if, elif, else)
- Karşılaştırma operatörleri vb. ile koşulları belirtin.
- Koşulları numaraya, listeye vb. göre belirtin.
- Mantıksal işleçlerle birden çok koşul veya olumsuzluk belirtin (ve, veya değil)
- Yeni satırlarda ve birden çok satırda koşullu ifadeler
Bir satırda koşullu bir dalı tanımlayan bir üçlü operatör de vardır. Aşağıdaki makaleye bakın.
if deyimlerinin temelleri (if, elif, else)
if ifadesinin temel biçimi aşağıdaki gibidir.
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 ve diğer dillerde “else if”ye karşılık gelir ve herhangi bir sayıda “elif” olabilir.
Yalnızca bir koşullu ifade varsa veya false gerekli olmadığında işleme varsa, “elif” ve “else” blokları atlanabilir.
Karşılaştırma operatörleri vb. ile koşulları belirtin.
Koşul, bir karşılaştırma operatörü gibi bir bool türü (true, false) döndüren bir işlemle belirtin.
Python karşılaştırma operatörleri aşağıdaki gibidir
Şebeke | sonuç |
---|---|
x < y | x, y’den küçükse doğru |
x <= y | x, y’den küçük veya ona eşitse doğru |
x > y | x, y’den büyükse doğrudur |
x >= y | x, y’den büyük veya ona eşitse doğrudur |
x == y | x ve y değerleri eşitse doğru |
x != y
x is y
x is not y
x in y
x not in y
Misal. Kolaylık sağlamak için def deyimi ile bir fonksiyon olarak tanımlanır.
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ğıdakiler Python’a özgü bir şekilde yazılabilir. Ayrıntılar için aşağıdaki makaleye bakı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!
!=
Yukarıdakiler, değerlerin bir karşılaştırmasıdır; nesne kimliklerini karşılaştırmak için aşağıdakileri kullanın
is
is not
Örneğin, bir tamsayı ile bir kayan noktalı sayıyı karşılaştırırken, değerler eşdeğerse “==” true döndürür, ancak “is”, farklı nesneler oldukları için false döndürü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
Bir listenin mi yoksa bir dizenin belirli bir öğe (karakter) içerip içermediği koşulunu yapmak da mümkündür.
in
:Dahil etmeknot in
:içermiyor
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
Koşulları numaraya, listeye vb. göre belirtin.
Bir if ifadesinin koşullu ifadesi bir sayı, liste veya bool (doğru, yanlış) türünde olmayan başka bir nesne olabilir.
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
Python if ifadesinin koşullu ifadesinde, aşağıdaki nesneler yanlış olarak kabul edilir.
- false olarak tanımlanan sabitler:
None
,false
- Sayısal tipte sıfır:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Boş dizi veya koleksiyon:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Sıfırı, boş dizileri, listeleri vb. temsil eden sayılar yanlış olarak kabul edilir; diğerleri doğru kabul edilir.
Nesnenin nasıl yargılandığı bool() ile kontrol edilebilir.
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Bu, örneğin liste boş olduğunda işlemi basitçe yazmak için kullanılabilir.
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
Yanlış’ dizesinin de doğru olacağını unutmayın, çünkü yukarıdaki örnekte gösterildiği gibi, dizede boş olmayan herhangi bir dize doğru olacaktır.’ ‘True’ veya ‘False’ gibi belirli bir dizgiyi 1,0’a dönüştürmek için distutils.util modülünde strtobool()’u kullanın.
Mantıksal işleçlerle birden çok koşul veya olumsuzluk belirtin (ve, veya değil)
Mantıksal işleçler (ve, veya değil) mantıksal bağlaç, mantıksal ayrılma ve birden çok koşulun olumsuzluğunu işlemek için kullanılabilir.
Şebeke | (Result (bir if ifadesinin koşullu ifadesinde) |
---|---|
x and y | hem x hem de y doğruysa doğrudur |
x or y | x veya y doğruysa doğrudur |
not x | x doğruysa yanlış, x yanlışsa doğru |
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
Aslında, “x ve y” ve “x veya y” Doğru veya Yanlış değil, x veya y’yi döndürür. İf ifadelerinde koşullu ifadelerde kullanıldığı sürece, True veya False olarak değerlendirdikleri için endişelenmenize gerek yoktur. Ayrıntılar için aşağıdaki makaleye bakın.
- İLİŞKİLİ:Python’un mantıksal operatörleri “ve, or, not” (mantıksal bağlaç, mantıksal ayrılma, olumsuzlama)
ve ve/veya birden fazla kez kullanmak 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 satırlarda ve birden çok satırda koşullu ifadeler
Birden çok koşul ifadesi “ve” veya “veya” ile bağlanarak kullanıldığında ve her satır uzarsa, bazen koşullu ifadeyi kesip birden çok satıra yazmak gerekir.
Bir ters eğik çizgi kullanılarak veya tüm satırı parantez içine alarak satır sonu yapılabilir.
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
Bir satırı istediğiniz kadar kesmek için ters eğik çizgi kullanabilirsiniz. Aynı şekilde, bir satırı parantez içinde istediğiniz sayıda kesebilirsiniz. Girinti sınırı yoktur.
Bunun yalnızca if ifadelerinde değil, Python kodunun herhangi bir yerinde kullanılabilecek bir teknik olduğunu unutmayın.