Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Menguji lekukan dan struktur cabang

Dalam Python, satu ruang yang hilang boleh memindahkan baris keluar daripada gelung yang sepatutnya ia berada.

Dalam halaman ini
  1. Bagaimanakah Python menentukan baris mana yang berada dalam blok?
  2. Contoh berlangkah
  3. Kesilapan yang perlu diwaspadai
  4. Semak kendiri
  5. Ke mana pelajaran ini membawa

Dalam Python, lekukan ialah sebahagian daripada logik. Baris yang dilekukkan di bawah if, elif, else, for dan while ialah baris yang dimilikinya, jadi menggerakkan satu baris mengubah apa yang program lakukan.

Pelajaran ini menyambung peralihan ke Python dan pelaksanaan selepas memetakan algoritma kepada fungsi Python.

Bagaimanakah Python menentukan baris mana yang berada dalam blok?

Baris yang berakhir dengan titik bertindih membuka satu blok. Setiap baris yang dilekukkan satu tahap di bawahnya berada di dalam. Baris pertama yang dilekukkan keluar berada di luar, dan berjalan selepas blok tamat.

Bagi cabang, if, elif dan else diperiksa mengikut urutan, dan hanya cabang pertama yang syaratnya True akan berjalan. else menangkap semua yang tinggal.

Contoh berlangkah

Tugasan: pulangkan “High” untuk markah 70 atau lebih, “Middle” untuk 40 hingga 69, dan “Low” selainnya.

def band(mark):
    if mark >= 70:
        return "High"
    elif mark >= 40:
        return "Middle"
    else:
        return "Low"

Langkah 1, pilih ujian sempadan. Tepinya ialah 70, 69, 40 dan 39.

Langkah 2, jejak setiap satu.

markmark >= 70mark >= 40keputusan
70Truetidak diperiksaHigh
69FalseTrueMiddle
40FalseTrueMiddle
39FalseFalseLow

Kerana cabang pertama menangkap 70 ke atas, elif tidak perlu menyebut “dan di bawah 70”.

Kesilapan yang perlu diwaspadai

Satu kesilapan lazim ialah menggunakan pernyataan if berasingan untuk pilihan yang sepatutnya saling menyisih.

Jawapan yang tersilap:

def band(mark):
    result = "Low"
    if mark >= 70:
        result = "High"
    if mark >= 40:
        result = "Middle"
    return result

Untuk 80, if pertama menetapkan “High”, kemudian if kedua juga True dan menimpanya dengan “Middle”. Fungsi memulangkan “Middle” untuk markah 80.

Pembetulannya ialah menukar if kedua kepada elif, supaya ia hanya diperiksa apabila yang pertama False. Menguji markah yang jauh di atas sempadan tertinggi, seperti 80, mendedahkan ini serta-merta.

Lekukan boleh gagal dengan cara yang sama dalam gelung:

total = 0
for n in [1, 2, 3]:
    total = total + n
    print(total)

Ini mencetak 1, 3, 6. Jika print(total) dialihkan satu tahap ke belakang, ia berada selepas gelung dan hanya mencetak 6.

Semak kendiri

1. Apakah yang dicetak oleh check(15) dan check(3)?

def check(n):
    if n > 10:
        print("big")
    print("done")
Lihat jawapan

check(15) mencetak big kemudian done. check(3) hanya mencetak done, kerana print("done") tidak dilekukkan di bawah if, jadi ia sentiasa berjalan.

2. Apakah yang dipulangkan oleh sign(0)?

def sign(n):
    if n > 0:
        return "positive"
    elif n < 0:
        return "negative"
    else:
        return "zero"
Lihat jawapan

“zero”. 0 > 0 ialah False, 0 < 0 ialah False, jadi else berjalan.

3. Mengapa 40 ialah nilai ujian yang baik untuk band?

Lihat jawapan

Ia terletak tepat pada sempadan mark >= 40. Jika pelajar menulis > dan bukan >=, 40 akan memulangkan “Low” dan mendedahkan ralat itu.

Ke mana pelajaran ini membawa

Seterusnya, belajar membezakan ranap daripada kesalahan senyap dalam membezakan ralat sintaks daripada keputusan yang salah. Jalankan band dengan nilai ujian anda sendiri dalam kotak pasir penaakulan Python, atau tulis cabang yang sama dalam pseudokod dan semak dalam pelatih jejak pseudokod terhad.

Tuisyen Sains Komputer dalam talian satu dengan satu kami boleh membantu jika soalan cabang sentiasa tergelincir pada sempadan.

Soalan lazim

Berapa ruang yang patut saya gunakan untuk lekukan?

Gunakan bilangan yang sama setiap kali, dan empat ruang ialah kebiasaan umum. Python hanya memerlukan baris dalam satu blok sepadan antara satu sama lain. Mencampurkan tab dan ruang dalam blok yang sama boleh menyebabkan ralat, jadi pilih satu gaya dan kekalkan.

Bila saya patut menggunakan elif dan bukan if kedua?

Gunakan elif apabila pilihan saling menyisih, supaya hanya satu cabang berjalan. if kedua tetap diperiksa walaupun cabang terdahulu sudah berjalan, jadi kedua-dua cabang boleh aktif. Untuk jalur gred, julat dan kategori, elif biasanya yang anda maksudkan.

Apakah nilai sempadan?

Ia ialah input di tepi sesuatu syarat, seperti 40 dan 39 apabila ujiannya mark >= 40. Kebanyakan kesilapan cabang muncul di situ, jadi uji sedikit di bawah, tepat pada, dan sedikit di atas setiap sempadan.

Dikemas kini:

Langkah seterusnya

Jika cabang anda memberi jawapan pelik pada nilai sempadan, guru satu dengan satu boleh meneliti input ujian bersama anda dan menunjukkan syarat mana yang berfungsi.

Kelas percubaan berbayar satu jam pada kadar guru yang disahkan, bermula RM80. Yuran lain, jadual dan susunan seterusnya disahkan terus bersama guru selepas kelas percubaan.

Tuisyen diatur bersama ibu bapa atau penjaga. Hantar halaman ini kepada mereka melalui WhatsApp supaya mereka boleh bertanya bagi pihak anda.

Ibu bapa atau penjaga? Tanya di sini

9,000+ pelajar telah dibantu melalui perkhidmatan kami