Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Membezakan ralat sintaks daripada keputusan yang salah

Teks merah pada skrin terasa lebih teruk daripada jawapan salah, tetapi biasanya kesalahan itu lebih mudah dibaiki.

Dalam halaman ini
  1. Bagaimanakah tiga jenis kesalahan itu berbeza?
  2. Contoh berlangkah
  3. Kesilapan yang perlu diwaspadai
  4. Semak kendiri
  5. Ke mana pelajaran ini membawa

Ralat sintaks menghalang program daripada bermula. Ralat masa larian menghentikannya di tengah jalan. Ralat logik membiarkannya selesai dengan jawapan yang salah. Mengetahui yang mana satu menunjukkan anda di mana hendak mencari.

Pelajaran ini menyusuli menguji lekukan dan struktur cabang dalam peralihan ke Python dan pelaksanaan.

Bagaimanakah tiga jenis kesalahan itu berbeza?

KesalahanBila ia munculApa yang anda lihatCara mencarinya
Ralat sintaksSebelum apa-apa berjalanMesej ralat dan nombor barisBaca baris itu, semak titik bertindih, kurungan, petikan, = berbanding ==
Ralat masa larianSemasa berjalanProgram berhenti dengan mesejBaca mesej, jejak ke baris itu
Ralat logikSelepas selesaiKeputusan salah, tiada mesejUji dengan jawapan diketahui, jejak pengiraan

Ralat sintaks dan masa larian mengumumkan diri. Ralat logik senyap, jadi ialah ralat yang menyebabkan kehilangan markah apabila anda hanya menyemak “adakah ia berjalan?”.

Contoh berlangkah

Tugasan: cari purata tiga nombor. Uji dengan 6, 9 dan 12, yang purata betulnya (6 + 9 + 12) / 3 = 27 / 3 = 9.

def average(a, b, c):
    return a + b + c / 3

print(average(6, 9, 12))

Langkah 1, adakah ia berjalan? Ya. Tiada ralat sintaks atau masa larian, jadi kesalahan, jika ada, terletak pada logik.

Langkah 2, jejak ungkapan. Pembahagian dilakukan sebelum penambahan, jadi Python mengira c / 3 dahulu: 12 / 3 = 4. Kemudian 6 + 9 + 4 = 19.

Langkah 3, banding. 19 bukan 9, jadi ini ralat logik.

Langkah 4, baiki dengan kurungan.

def average(a, b, c):
    return (a + b + c) / 3

Kini (6 + 9 + 12) / 3 = 9.0. Python menunjukkan 9.0 kerana / sentiasa memberi hasil perpuluhan.

Kesilapan yang perlu diwaspadai

Satu kesilapan lazim ialah menganggap program tanpa mesej ralat itu betul.

Jawapan yang tersilap: “Saya jalankan dan ia mencetak 19, jadi ia berfungsi.”

Program berjalan, tetapi tiada sesiapa membandingkan 19 dengan 9 yang dijangka. Semakan terhadap jawapan yang diketahui ialah apa yang mendedahkan ralat logik.

Pembetulannya ialah mengira jawapan yang dijangka dengan tangan sebelum menjalankan kod. Kemudian perbandingan memberitahu anda sama ada kesalahan ada pada kod atau pada bacaan anda terhadap soalan.

Ralat sintaks sebenar kelihatan berbeza. Dalam if mark = 50:, satu = ialah penugasan di tempat yang memerlukan perbandingan, jadi Python enggan menjalankannya dan melaporkan ralat sintaks. Pembetulannya if mark == 50:.

Semak kendiri

1. Apakah jenis ralat bagi print("Hi", tanpa kurungan penutup?

Lihat jawapan

Ralat sintaks. Kurungan tidak pernah ditutup, jadi Python tidak dapat membaca baris itu dan program tidak bermula.

2. Fungsi ini sepatutnya memulangkan jumlah senarai. Apakah jenis kesalahannya apabila dipanggil dengan [2, 4]?

def total(values):
    t = 0
    for n in values:
        t = n
    return t
Lihat jawapan

Ralat logik. Ia berjalan, tetapi t = n menggantikan jumlah setiap kali dan bukan menambah, jadi ia memulangkan 4, bukan 6. Barisnya sepatutnya t = t + n.

3. Apakah jenis ralat bagi print(10 / 0)?

Lihat jawapan

Ralat masa larian. Kodnya sah, tetapi pembahagian dengan sifar mustahil, jadi program berhenti dengan mesej ZeroDivisionError.

Ke mana pelajaran ini membawa

Seterusnya, gunakan runtime pelayar yang selamat untuk menjalankan contoh ini tanpa risiko. Anda boleh menguji fungsi average dalam kotak pasir penaakulan Python dan membandingkannya dengan pelatih jejak pseudokod terhad.

Jika jawapan salah terus lepas daripada semakan anda sendiri, tuisyen Sains Komputer dalam talian satu dengan satu kami boleh mengusahakan tabiat menguji bersama anda.

Soalan lazim

Apakah ralat sintaks?

Ralat sintaks bermaksud kod melanggar peraturan bahasa, seperti titik bertindih yang hilang atau kurungan yang tidak ditutup. Program tidak boleh bermula langsung. Python biasanya menunjuk ke baris, atau sejurus selepasnya, tempat ia keliru.

Apakah ralat logik?

Ralat logik ialah kod yang berjalan tanpa aduan tetapi memberi keputusan salah kerana kaedahnya salah. Python tidak dapat mengesannya kerana kod itu sah. Anda menemuinya dengan menguji menggunakan jawapan yang diketahui dan dengan menjejak.

Apakah ralat masa larian (runtime error)?

Ralat masa larian berlaku semasa program berjalan, contohnya membahagi dengan sifar atau menggunakan pemboleh ubah yang tidak pernah diberi nilai. Program bermula, kemudian berhenti pada baris itu dengan mesej ralat.

Dikemas kini:

Langkah seterusnya

Jika anda tidak pasti sama ada kesalahan terletak pada menaip atau pada berfikir, guru satu dengan satu boleh mengasingkan ralat anda bersama anda dan menunjukkan kaedah bagi setiap jenis.

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