Errors & testing · Kesalahan & pengujian
Three kinds of error
- A syntax error breaks the rules of Python, so the code will not run.
- A runtime error crashes the program while it is running.
- A logic error runs fine but gives the wrong answer.
Tiga jenis kesalahan
- Kesalahan sintaks melanggar aturan Python, sehingga kode tidak akan berjalan.
- Kesalahan waktu eksekusi membuat program crash (gagal) saat sedang berjalan.
- Kesalahan logika berjalan lancar tetapi menghasilkan jawaban yang salah.
Syntax errors
- These are typos: a missing
:, an unclosed quote, a wrong indent. - Python refuses to start and shows you the line.
- Fix the spelling or punctuation, then run again.
Kesalahan sintaks
- Ini adalah salah ketik:
:yang hilang, tanda kutip yang tidak ditutup, atau indentasi yang salah. - Python menolak untuk dimulai dan menampilkan baris tersebut kepada Anda.
- Perbaiki ejaan atau tanda baca, lalu jalankan lagi.
Runtime errors
- The code starts, then hits something it cannot do.
- Examples:
10 / 0, orint("hello"), or reading past the end of a list. - The program stops at that line with a message.
Kesalahan waktu eksekusi
- Kode dimulai, lalu menemukan sesuatu yang tidak dapat dilakukan.
- Contoh:
10 / 0, atauint("hello"), atau membaca melebihi akhir daftar. - Program berhenti pada baris itu dengan pesan.
Logic errors
- The program runs to the end but the result is wrong.
- Example: using
-where you meant+, or stopping a loop too early. - These are the hardest to find — the computer did exactly what you wrote.
Kesalahan logika
- Program berjalan sampai selesai tetapi hasilnya salah.
- Contoh: menggunakan
-padahal maksudnya+, atau menghentikan perulangan terlalu dini. - Ini yang paling sulit ditemukan — komputer melakukan persis apa yang Anda tulis.
Read the traceback
- When a program crashes, Python prints a traceback.
- Read the last line first: it names the error and what went wrong.
- The line number tells you where to look.
Baca jejak error (traceback)
- Ketika program crash, Python mencetak jejak error (traceback).
- Bacalah baris terakhir terlebih dahulu: itu menyebutkan jenis error dan apa yang salah.
- Nomor baris memberi tahu Anda di mana harus mencari.
Traceback (most recent call last):
File "<program>", line 2, in <module>
print(10 / 0)
ZeroDivisionError: division by zero
Test with chosen data
- Do not trust code until you have tested it.
- Use normal data, boundary data (like
0), and extreme data. - Check each answer against what you worked out by hand.
Tes dengan data pilihan
- Jangan percaya kode sampai Anda telah mengujinya.
- Gunakan data normal, data batas (seperti
0), dan data ekstrem. - Periksa setiap jawaban sesuai dengan hasil perhitungan manual Anda.
def square(n):
return n * n
print(square(3)) # normal -> 9
print(square(0)) # boundary -> 0
print(square(-2)) # negative -> 4
Common mistakes
- A syntax error stops the program before it runs, so fix those first.
- Catch a specific error with
except ValueError:, not a bareexcept:. - Test the tricky cases (empty, zero, the biggest), not just the easy one.
Kesalahan umum
- Kesalahan sintaks menghentikan program sebelum berjalan, jadi perbaiki itu terlebih dahulu.
- Tangkap error spesifik dengan
except ValueError:, bukanexcept:telanjang. - Tes kasus-kasus sulit (kosong, nol, yang terbesar), bukan hanya kasus yang mudah.
Now you try
- Each task has a logic error to fix, or a crash to prevent.
- Press Check answer to test your fix against several cases.
Sekarang Anda coba
- Setiap tugas memiliki kesalahan logika untuk diperbaiki, atau crash untuk dicegah.
- Tekan Periksa jawaban untuk menguji perbaikan Anda terhadap beberapa kasus.
Find and fix a bug · Temukan dan perbaiki bug
Testing is a cycle: run it, see what's wrong, fix, run again. · Pengujian adalah siklus: jalankan, lihat apa yang salah, perbaiki, jalankan lagi.
This function should add a and b, but it has a logic error — it subtracts. Fix it so it returns the sum. · Fungsi ini seharusnya menjumlahkan a dan b, tetapi memiliki kesalahan logika — ia melakukan pengurangan. Perbaiki agar mengembalikan penjumlahan.
Click Run to see the output here. · Klik Jalankan untuk melihat output di sini.
sum_to(n) should return 1 + 2 + ... + n, but it stops one number too early (an off-by-one logic error). Fix the range so it includes n. · sum_to(n) seharusnya mengembalikan 1 + 2 + ... + n, tetapi berhenti satu angka terlalu awal (kesalahan logika off-by-one). Perbaiki range agar mencakup n.
Click Run to see the output here. · Klik Jalankan untuk melihat output di sini.
Write safe_divide(a, b) that returns a / b, but prevents a runtime crash: if b is 0, return 0 instead. · Tulis safe_divide(a, b) yang mengembalikan a / b, tetapi mencegah crash runtime: jika b adalah 0, kembalikan 0 sebagai gantinya.
Click Run to see the output here. · Klik Jalankan untuk melihat output di sini.
average(nums) has two bugs: it divides by the wrong number, and it crashes on an empty list. Fix both, so average([2, 4, 6]) is 4 and average([]) is 0. · average(nums) memiliki dua bug: membagi dengan angka yang salah, dan crash pada daftar kosong. Perbaiki keduanya, sehingga average([2, 4, 6]) adalah 4 dan average([]) adalah 0.
Click Run to see the output here. · Klik Jalankan untuk melihat output di sini.