arrow_backKembali ke catatan lapangan
PYTHON Dipublikasikan 4 Aug 2026

Programming untuk Ujian: Jawaban Python yang Mendapat Nilai Tinggi

Cara menulis kode Python pada ujian yang benar-benar menghasilkan nilai penuh — struktur, edge case, dan manajemen waktu di bawah tekanan.

Pemeriksa ujian tidak menjalankan kode Anda melalui debugger selama dua puluh menit. Mereka membacanya sekali, mungkin dua kali, dan memeriksanya terhadap rubrik. Solusi yang berfungsi tetapi mengabaikan rubrik masih bisa kehilangan poin, sementara solusi yang sedikit lebih kasar tetapi memenuhi setiap checkpoint dapat mendapat nilai lebih tinggi. Menulis Python untuk ujian adalah keterampilan berbeda dari menulis Python untuk proyek nyata, dan patut dipraktikkan secara terpisah.

Baca rubrik sebelum Anda membaca soal dua kali

Sebagian besar ujian pemrograman — pertanyaan free-response gaya AP CS A, ujian tengah semester universitas, penilaian bootcamp coding — menerbitkan aturan partial credit. Baris rubrik umum terlihat seperti: "1 poin untuk struktur loop yang benar, 1 poin untuk nilai kembali yang benar, 1 poin untuk menangani kasus list kosong." Jika Anda menulis one-liner padat yang menghasilkan jawaban benar tetapi melewatkan loop eksplisit, beberapa pemeriksa akan mengurangi poin meskipun outputnya benar.

Sebelum mengetik apa pun, identifikasi bagian-bagian yang mungkin akan diperiksa pemeriksa secara terpisah:

  • Tanda tangan fungsi cocok persis dengan apa yang diminta (nama, urutan parameter, tipe kembali)
  • Base case dan recursive case, jika rekursi diharapkan
  • Batas loop (kesalahan off-by-one adalah kehilangan poin paling umum)
  • Edge case: input kosong, input satu elemen, angka negatif, duplikat

Tulis ini sebagai komentar terlebih dahulu. # handle empty list, # base case: n == 0. Ini memakan waktu sepuluh detik dan menjamin Anda tidak lupa kasus yang dicari pemeriksa secara khusus.

Struktur kode agar partial credit terlihat

Bandingkan dua jawaban untuk "tulis fungsi yang mengembalikan angka terbesar kedua dalam list":

def second_largest(nums):
    return sorted(nums)[-2]
def second_largest(nums):
    if len(nums) < 2:
        return None
    largest = second = float('-inf')
    for n in nums:
        if n > largest:
            second = largest
            largest = n
        elif n > second and n != largest:
            second = n
    return second

Yang pertama benar untuk input yang terbentuk dengan baik tetapi jatuh pada list dengan kurang dari dua elemen dan memberikan jawaban salah pada duplikat seperti [5, 5, 3] (mengembalikan 5, argubly salah tergantung spesifikasinya). Yang kedua lebih panjang tetapi setiap baris rubrik — edge case, logika benar, kembali benar — eksplisit dan mendapat barisnya sendiri yang dapat diperiksa pemeriksa. Pada ujian terjadwal, versi kedua hampir selalu mendapat nilai lebih tinggi, meskipun memakan waktu lebih lama untuk diketik.

Jangan optimalkan prematur, jangan tinggalkan bug yang jelas

Pertanyaan ujian jarang menguji pengetahuan Big-O kecuali mereka mengatakan demikian secara langsung. Jika prompt mengatakan "tulis fungsi yang menemukan duplikat," nested loop pada O(n²) tidak masalah kecuali prompt menyebutkan input besar atau meminta solusi yang efisien. Menghabiskan waktu ujian mengonversi ke pendekatan berbasis set O(n) ketika itu tidak diminta adalah waktu yang tidak Anda dapatkan kembali.

Akantetapi, beberapa kesalahan akan selalu merugikan Anda terlepas dari rubrik:

  • Menggunakan == bukan is secara tidak konsisten yang menyebabkan bug logika (jarang pada ujian Python tetapi muncul pada pertanyaan berberat perbandingan)
  • Mutasi list saat mengulanginya — for x in lst: lst.remove(x) adalah jebakan ujian klasik yang menghasilkan output yang salah secara senyap
  • Lupa return dan mencetak sebagai gantinya — banyak autograder memeriksa nilai kembali, bukan stdout
  • Off-by-one dalam range()range(len(nums)) vs range(len(nums) - 1) layak diperiksa ulang setiap kali Anda menulisnya

Lacak kode Anda dengan tangan sebelum mengirimkan

Pada ujian kertas dan sebagian besar ujian coding in-browser, Anda tidak bisa menjalankan kodenya. Pilih satu contoh kecil dan lacak baris demi baris, catat nilai variabel saat Anda melakukannya. Ini menangkap mungkin 80% kesalahan logika dalam waktu kurang dari dua menit, dan itu adalah hal paling bernilai tinggi yang dapat Anda lakukan dengan sisa waktu.

Untuk fungsi rekursif secara khusus, lacak setidaknya dua level dalam dan tulis secara eksplisit base case yang tercapai. Pemeriksa sering memberikan poin hanya untuk menunjukkan base case berakhir dengan benar, terpisah dari poin untuk recursive case yang benar.

Kelola jam seperti sumber daya, bukan pemikiran lanjutan

Jika bagian free-response bernilai 9 poin di tiga sub-pertanyaan, alokasikan waktu kurang lebih sama dan pindah jika Anda terjebak melampaui alokasi itu — bagian (b) yang setengah ditulis tetapi hampir benar bernilai lebih banyak poin mentah daripada bagian (a) yang sempurna dan bagian (c) yang kosong. Tulis fungsi stub dengan tanda tangan yang benar dan pass atau tebakan bahkan jika Anda tidak bisa menyelesaikan logikanya; tanda tangan yang benar saja kadang-kadang bernilai poin rubrik sendiri.

Untuk lebih lanjut tentang menulis Python yang bersih dan dapat diuji di luar ruang ujian, dan tentang struktur data yang terus muncul dalam pertanyaan ini, periksa segmen Python dan Computer Science terkait pada Korra Studio.

Ditulis dengan bantuan AI, ditinjau dan dipublikasikan oleh Michal Pilch (CISSP), Korra Studio.

Siap melangkah lebih jauh?

Ini satu catatan dari basis pengetahuan Korra Studio — platform ini memasangkan setiap topik dengan bimbingan privat.

Mulai gratisarrow_forward