Bagaimana untuk menulis cawangan bersyarat dengan pernyataan if dalam Python

Perniagaan

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.

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

pengendalihasil
x < ybenar jika x kurang daripada y
x <= ybenar jika x kurang daripada atau sama dengan y
x > ybenar jika x lebih besar daripada y
x >= ybenar jika x lebih besar daripada atau sama dengan y
x == ybenar jika nilai x dan y adalah sama
x != ybenar jika nilai x dan y tidak samax is ybenar jika x dan y ialah objek yang samax is not ybenar jika x dan y bukan objek yang samax in ybenar jika x terkandung dalam yx not in ybenar jika x tidak terkandung dalam 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:termasuk
  • not 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.

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 ybenar jika kedua-dua x dan y adalah benar
x or ybenar jika sama ada x atau y adalah benar
not xsalah 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.

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.