Terangkan percabangan bersyarat dengan pernyataan if dalam Python.
- Asas pernyataan if (if, elif, else)
- Nyatakan syarat dengan pengendali perbandingan, dsb.
- Nyatakan syarat mengikut nombor, senarai, dsb.
- Tentukan berbilang syarat atau penolakan dengan operator logik (dan, atau, tidak)
- Ungkapan bersyarat pada baris baharu dan berbilang baris
Terdapat juga pengendali ternary yang menerangkan cawangan bersyarat dalam satu baris. Lihat artikel berikut.
- BERKAITAN:Menulis pernyataan jika dalam satu baris dengan pengendali ternary Python (pengendali bersyarat)
Asas pernyataan if (if, elif, else)
Bentuk asas pernyataan if adalah seperti berikut
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” sepadan dengan “else if” dalam C dan bahasa lain, dan mungkin terdapat sebarang bilangan “elif”.
Jika terdapat hanya satu ungkapan atau pemprosesan bersyarat apabila palsu tidak diperlukan, blok “elif” dan “lain” boleh diabaikan.
Nyatakan syarat dengan pengendali perbandingan, dsb.
Tentukan syarat dengan operasi yang mengembalikan jenis bool (true, false), seperti operator perbandingan.
Operator perbandingan Python adalah seperti berikut
pengendali | hasil |
---|---|
x < y | benar jika x kurang daripada y |
x <= y | benar jika x kurang daripada atau sama dengan y |
x > y | benar jika x lebih besar daripada y |
x >= y | benar jika x lebih besar daripada atau sama dengan y |
x == y | benar jika nilai x dan y adalah sama |
x != y
x is y
x is not y
x in y
x not in y
Contoh. Untuk kemudahan, ia ditakrifkan sebagai fungsi dengan pernyataan 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
Yang berikut boleh ditulis dengan cara yang unik untuk Python. Lihat artikel berikut untuk butirannya.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!
!=
Di atas adalah perbandingan nilai; untuk membandingkan identiti objek, gunakan yang berikut
is
is not
Contohnya, apabila membandingkan integer dan nombor titik terapung, “==” mengembalikan benar jika nilainya setara, tetapi “is” mengembalikan palsu kerana ia adalah objek yang berbeza.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
Ia juga mungkin untuk membuat syarat sama ada senarai atau rentetan mengandungi elemen tertentu (karakter).
in
:termasuknot in
:tidak termasuk
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
Nyatakan syarat mengikut nombor, senarai, dsb.
Ungkapan bersyarat bagi pernyataan if boleh menjadi nombor, senarai atau objek lain yang bukan jenis bool (true, false).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
Dalam ungkapan bersyarat pernyataan Python if, objek berikut dianggap palsu.
- Pemalar ditakrifkan sebagai palsu:
None
,false
- Sifar dalam jenis angka:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Urutan atau koleksi kosong:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Nombor yang mewakili sifar, rentetan kosong, senarai, dsb. dianggap palsu; semua yang lain dianggap benar.
Cara objek dinilai boleh disemak dengan bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Ini boleh digunakan untuk menulis proses apabila senarai kosong, sebagai contoh.
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
Ambil perhatian bahawa rentetan ‘False’ juga akan menjadi benar, kerana seperti yang ditunjukkan dalam contoh di atas, sebarang rentetan yang tidak kosong dalam rentetan itu akan menjadi benar.’ Untuk menukar rentetan tertentu seperti ‘Benar’ atau ‘Salah’ kepada 1,0, gunakan strtobool() dalam modul distutils.util.
Tentukan berbilang syarat atau penolakan dengan operator logik (dan, atau, tidak)
Operator logik (dan, atau, tidak) boleh digunakan untuk mengendalikan konjungsi logik, percabaran logik, dan penolakan berbilang keadaan.
pengendali | (Hasil (dalam ungkapan bersyarat pernyataan if) |
---|---|
x and y | benar jika kedua-dua x dan y adalah benar |
x or y | benar jika sama ada x atau y adalah benar |
not x | salah jika x benar, benar jika x salah |
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
Sebenarnya, “x dan y” dan “x atau y” tidak mengembalikan Betul atau Salah, tetapi sama ada x atau y. Selagi ia digunakan dalam ungkapan bersyarat dalam pernyataan if, tidak perlu risau tentangnya, kerana ia menilai sama ada Betul atau Salah. Lihat artikel berikut untuk butirannya.
- BERKAITAN:Pengendali logik Python “dan, atau, tidak” (konjungsi logik, percanggahan logik, penolakan)
Ia boleh digunakan dan dan atau lebih daripada sekali.
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
Ungkapan bersyarat pada baris baharu dan berbilang baris
Apabila berbilang ungkapan bersyarat digunakan dengan menyambungkannya dengan “dan” atau “atau” dan setiap baris menjadi panjang, kadangkala perlu untuk memecahkan ungkapan bersyarat dan menulisnya pada berbilang baris.
Pemisahan baris boleh dibuat dengan menggunakan garis miring ke belakang atau dengan melampirkan keseluruhan baris dalam kurungan.
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
Anda boleh menggunakan garis miring ke belakang untuk memutuskan garisan seberapa banyak yang anda suka. Begitu juga, anda boleh memutuskan baris beberapa kali dalam kurungan. Tiada had lekukan.
Ambil perhatian bahawa ini ialah teknik yang boleh digunakan di mana-mana sahaja dalam kod Python, bukan hanya dalam pernyataan if.