Aplikasi Gratis

Soalut.com

v1.3.0

Install sekali, akses kapan saja tanpa browser

Ribuan soal & modul lengkap di aplikasi

GET IT ON Google Play

Soalut.com tetap gratis karena kamu. Yuk, bantu kami terus hadir! 💜 Selalu gratis

🙌 Ikut Dukung
Rp
Rp
Rp
Rp
Selalu Gratis
Ribuan soal UT gratis,
karena kamu peduli
Ikut Dukung Sekarang

Soal UAS UT SPMT4216 Algoritma dan Pemrograman Beserta Kunci Jawaban

Aplikasi Gratis

Soalut.com
★★★★★ 5.0
Gratis
GET IT ON Google Play
Soal UT SPMT4216 Algoritma dan Pemrograman
Soal UT SPMT4216 Algoritma dan Pemrograman

Salah satu jebakan di SPMT4216 Algoritma dan Pemrograman adalah menganggap remeh tipe data. Pas masuk Modul 2, banyak yang bingung bedain hasil operasi integer sama float. Apalagi kalau udah nyampur string. Bukan cuma kamu yang ngalamin.

Bagian Algoritma Pemilihan Kondisi di Modul 3 juga sering bikin pusing. Salah indentasi dikit, output bisa ngaco. Tuple dan Dictionary di Modul 5 punya aturan main sendiri yang beda dari list. Kalau dasarnya belum kuat, soal-soal ini bisa terasa jebakan. Itulah kenapa latihan spesifik kayak kumpulan soal UT Sains Data penting buat mengasah logika kamu.

Di halaman ini, kami sediakan soal yang nguji tiap modul secara konkret. Mulai dari algoritma runtunan sampai exception handling. Setiap soal dilengkapi kunci jawaban dan pembahasan langkah demi langkah. Jadi kamu tahu kenapa jawabanmu benar atau salah. Mau cari latihan buat matkul lain? bank soal UAS UT juga ada di sini.

Soal UT SPMT4216 Algoritma dan Pemrograman

1.

Suatu rangkaian langkah logis dan sistematis untuk menyelesaikan masalah harus memiliki kepastian, artinya setiap langkah harus…

  • A. diekspresikan dengan jelas dan tidak ambigu
  • B. dapat dijalankan oleh mesin
  • C. menghasilkan output yang terukur
  • D. selesai dalam jumlah langkah terbatas
Jawaban: A
Sifat kepastian (definiteness) berarti instruksi tidak boleh bermakna ganda; setiap langkah dijelaskan secara presisi sehingga eksekutornya paham persis apa yang harus dilakukan.
2.

Sebelum menulis kode program, seorang pengembang menuangkan logika ke dalam deskripsi informal yang menyerupai sintaks kode tetapi tetap dapat dibaca manusia. Teknik ini dikenal sebagai…

  • A. flowchart
  • B. pseudocode
  • C. kompilasi
  • D. debugging
Jawaban: B
Pseudocode menggunakan campuran bahasa alami dan elemen pemrograman untuk mendeskripsikan algoritma tanpa terikat aturan ketat bahasa pemrograman tertentu.
3.

Simbol belah ketupat pada flowchart digunakan untuk merepresentasikan…

  • A. proses perhitungan atau assignment
  • B. awal atau akhir program
  • C. masukan atau keluaran data
  • D. pemilihan kondisi atau percabangan
Jawaban: D
Belah ketupat adalah simbol keputusan (decision) yang menandai titik percabangan alur berdasarkan evaluasi suatu kondisi.
4.

Seorang analis sistem sedang menyusun algoritma untuk menentukan potongan harga pelanggan. Ia ingin menggambarkan alur logika yang bercabang dalam tiga arah berdasarkan total belanja. Representasi grafis yang paling tepat untuk mendokumentasikan alur tersebut adalah…

  • A. pseudocode
  • B. flowchart
  • C. komentar kode
  • D. tabel keputusan
Jawaban: B
Flowchart unggul dalam menggambarkan alur percabangan secara visual dengan simbol belah ketupat, sehingga hubungan antar cabang mudah dipahami sekilas, berbeda dengan pseudocode yang bersifat tekstual linear.
5.

Sebuah masalah komputasi dinyatakan dapat diselesaikan dengan algoritma jika ada minimal satu solusi langkah demi langkah yang menghasilkan output yang diinginkan. Prinsip ini menegaskan bahwa algoritma harus memiliki…

  • A. input
  • B. output
  • C. kepastian
  • D. efektivitas
Jawaban: D
Efektivitas bermakna bahwa setiap langkah algoritma dapat diselesaikan dalam waktu wajar dan seluruh rangkaian memang mampu menyelesaikan masalah yang dituju.
6.

Seorang guru menyusun langkah pembelajaran: (1) membaca tujuan, (2) menyimak video, (3) mengerjakan latihan, (4) mengecek jawaban, (5) selesai. Dalam terminologi algoritma, urutan ini paling tepat digolongkan sebagai…

  • A. algoritma percabangan
  • B. algoritma perulangan
  • C. algoritma sequence
  • D. algoritma rekursif
Jawaban: C
Urutan langkah kaku dari atas ke bawah tanpa cabang maupun pengulangan adalah algoritma runtunan (sequence), yaitu struktur paling dasar dalam pemrograman.
7.

Keunggulan utama Python sebagai bahasa interpreted dibandingkan bahasa compiled terletak pada…

  • A. kecepatan eksekusi yang lebih tinggi
  • B. kemampuan menjalankan kode tanpa melalui fase kompilasi eksplisit
  • C. penggunaan memori yang lebih efisien
  • D. deteksi error sintaks sebelum program dijalankan
Jawaban: B
Python interpreter mengeksekusi kode baris per baris langsung dari source tanpa perlu mengompilasi menjadi file biner lebih dulu, mempercepat siklus pengembangan.
8.

Aturan penulisan blok kode Python yang membedakannya dari banyak bahasa seperti Java atau C++ adalah…

  • A. penggunaan kurung kurawal untuk membungkus blok
  • B. penulisan titik koma di akhir setiap pernyataan
  • C. penggunaan indentasi spasi atau tab yang konsisten
  • D. deklarasi tipe variabel secara eksplisit
Jawaban: C
Python mendefinisikan blok kode berdasarkan level indentasi, bukan dengan tanda kurung atau kata kunci khusus, sehingga kerapian indentasi bersifat wajib secara sintaks.
9.

Manakah di antara pernyataan berikut yang salah mengenai variabel dalam Python…

  • A. variabel dapat diisi ulang dengan tipe data berbeda tanpa casting eksplisit
  • B. variabel harus dideklarasikan tipe datanya sebelum digunakan
  • C. variabel pada dasarnya adalah nama yang merujuk ke objek di memori
  • D. variabel dibuat saat pertama kali diberi nilai dengan operator assignment
Jawaban: B
Python menganut dynamic typing; variabel tidak memerlukan deklarasi tipe. Tipe ditentukan otomatis oleh objek yang direferensi saat runtime.
10.

Untuk menampilkan teks 'Selamat Belajar' di konsol tanpa pindah baris setelahnya, fungsi print() perlu ditambahkan argumen…

  • A. skip='False'
  • B. newline=False
  • C. end=''
  • D. sep=''
Jawaban: C
Parameter end menentukan karakter yang dicetak setelah output; nilai default-nya adalah newline "n". Dengan mengosongkan end, kursor tidak pindah baris.
11.

Seorang mahasiswa menulis kode: x = 10, lalu x = 'sepuluh'. Python tidak menghasilkan error. Perilaku ini menunjukkan bahwa Python menerapkan…

  • A. strong typing
  • B. static typing
  • C. dynamic typing
  • D. manifest typing
Jawaban: C
Dynamic typing memungkinkan variabel berganti tipe data yang direferensi sepanjang eksekusi tanpa kendala deklarasi tipe tetap.
12.

Rina menulis x = 5 + 3 * 2 dan menduga hasilnya 16, tetapi ternyata hasilnya 11. Kesalahan Rina menunjukkan bahwa ia belum memahami…

  • A. fungsi print()
  • B. jenis tipe data integer
  • C. prioritas operator aritmatika
  • D. konsep dynamic typing
Jawaban: C
Python mengikuti aturan prioritas operator di mana perkalian dikerjakan lebih dahulu daripada penjumlahan, sehingga 3*2=6 baru ditambah 5 menghasilkan 11.
13.

Ekspresi 17 % 5 menghasilkan nilai…

  • A. 2
  • B. 3
  • C. 3.5
  • D. 12
Jawaban: A
Operator modulus (%) mengembalikan sisa pembagian bilangan bulat. 17 dibagi 5 menghasilkan sisa 2.
14.

Suatu tipe data yang hanya dapat bernilai True atau False sangat fundamental dalam pengambilan keputusan program. Tipe data yang dimaksud adalah…

  • A. integer
  • B. string
  • C. boolean
  • D. float
Jawaban: C
Boolean adalah tipe data biner dengan dua kemungkinan nilai, menjadi dasar evaluasi kondisi pada struktur if, while, dan ekspresi logika.
15.

Perintah int('42') + float('3.5') akan menghasilkan…

  • A. error karena tipe data berbeda
  • B. 45.5
  • C. 45
  • D. '45.5'
Jawaban: B
Kedua string dikonversi menjadi numerik: int('42') menjadi 42, float('3.5') menjadi 3.5. Penjumlahan keduanya menghasilkan float 45.5.
16.

Pada ekspresi logika berikut: (10 > 5) and (3 != 3), hasil evaluasi ekspresi tersebut adalah…

  • A. True
  • B. False
  • C. None
  • D. Error
Jawaban: B
Operator and membutuhkan kedua operand bernilai True. Operand pertama (10 > 5) bernilai True, tetapi operand kedua (3 != 3) bernilai False, sehingga hasil akhirnya False.
17.

Seorang programmer ingin mengecek apakah suatu bilangan genap dan positif sekaligus. Ekspresi yang tepat untuk x adalah…

  • A. x % 2 == 0 and x > 0
  • B. x % 2 == 0 or x > 0
  • C. x // 2 == 0 and x > 0
  • D. x / 2 == 0 and x > 0
Jawaban: A
Menguji genap dengan x % 2 == 0 dan positif dengan x > 0; keduanya digabung operator and agar kedua syarat wajib terpenuhi. Opsi lain pakai or (tidak tepat) atau operator bagi yang menghasilkan false pada bilangan genap.
18.

Seorang mahasiswa ingin menyimpan data berupa '123' sebagai teks, bukan sebagai angka. Fungsi konversi yang tepat untuk mengubah integer 123 menjadi string adalah…

  • A. char(123)
  • B. str(123)
  • C. text(123)
  • D. string(123)
Jawaban: B
Fungsi str() adalah fungsi bawaan Python untuk mengkonversi nilai menjadi tipe data string.
19.

Operator dalam Python berfungsi untuk…

  • A. Perkalian dua bilangan
  • B. Perpangkatan
  • C. Perkalian ganda
  • D. Akar kuadrat
Jawaban: B
Operator adalah operator eksponensial, misalnya 2 3 menghasilkan 8.
20.

Di sebuah toko, program kasir menghitung total belanja setelah diskon dengan ekspresi total * (1 – diskon/100). Jika diskon adalah 25 dan total 200000, tetapi ternyata diskon tidak terkurangi karena diskon/100 menghasilkan 0. Penyebab utama kegagalan ini adalah…

  • A. Diskon bertipe integer sehingga pembagian integer menghasilkan 0
  • B. Salah menggunakan operator pengurangan
  • C. Variabel total belum dideklarasikan
  • D. Operator * memiliki prioritas lebih rendah dari –
Jawaban: A
Pembagian integer dengan / menghasilkan float, tetapi jika diskon integer dan total integer, perilaku pembagian bergantung pada versi Python. Jika menggunakan //, 25//100 = 0. Konversi ke float diperlukan.
21.

Ekspresi 10 / 3 dan 10 // 3 secara berurutan menghasilkan…

  • A. 3.3333 dan 3
  • B. 3.0 dan 3.0
  • C. 3.3333 dan 4
  • D. 3 dan 3.3333
Jawaban: A
Operator / melakukan pembagian float dan mengembalikan 3.3333…, sedangkan // adalah floor division yang mengembalikan 3 (pembulatan ke bawah).
22.

Pada kode x = 5; x += 3, nilai akhir x dan operator yang setara secara fungsional adalah…

  • A. x = 5 dengan x = 3
  • B. x = 5 dengan x = x + 3
  • C. x = 8 dengan x = 3 + 5
  • D. x = 8 dengan x = x + 3
Jawaban: D
Operator += adalah assignment operator yang menambahkan nilai kanan ke variabel kiri, setara dengan x = x + 3.
23.

Seorang programmer menulis kondisi if x = 10: dan Python langsung menampilkan error. Penyebab error ini adalah…

  • A. Menggunakan operator assignment = alih-alih operator perbandingan ==
  • B. Variabel x belum diinisialisasi
  • C. Nilai 10 harus ditulis dalam tanda kutip
  • D. Kondisi if hanya menerima ekspresi logika and/or
Jawaban: A
Operator = adalah assignment, bukan perbandingan. Python mensyaratkan == untuk membandingkan kesamaan dalam ekspresi kondisi.
24.

Ekspresi logika (x > 5) or (y < 10 and z == 0) akan bernilai False ketika…

  • A. x = 3, y = 15, z = 1
  • B. x = 6, y = 15, z = 1
  • C. x = 3, y = 5, z = 0
  • D. x = 3, y = 5, z = 1
Jawaban: A
Agar or menghasilkan False, kedua sisi harus False. Sisi kiri x > 5 False jika x ≤ 5. Sisi kanan y < 10 and z == 0 False jika salah satu atau keduanya False.
25.

PT Jaya Makmur menerapkan sistem bonus berdasarkan performa: jika penjualan > 100 juta, bonus 10%; jika penjualan antara 50-100 juta, bonus 5%; jika di bawah 50 juta, tidak ada bonus. Struktur kontrol yang paling ringkas untuk mengimplementasikan aturan ini adalah…

  • A. Tiga pernyataan if terpisah
  • B. if-else tunggal dengan nested if
  • C. if-elif-else
  • D. Pernyataan while bersarang
Jawaban: C
if-elif-else dirancang untuk menguji beberapa kondisi secara berurutan dan hanya mengeksekusi satu blok yang kondisi pertamanya True, sangat cocok untuk rentang yang saling eksklusif.
26.

Perhatikan kode berikut: if suhu > 35: print('Panas'); elif suhu > 25: print('Hangat'); elif suhu > 15: print('Sejuk'); else: print('Dingin'). Jika suhu = 30, output yang dihasilkan adalah…

  • A. Panas
  • B. Sejuk
  • C. Hangat
  • D. Dingin
Jawaban: C
30 > 35 bernilai False; 30 > 25 bernilai True, sehingga blok elif pertama dieksekusi dan mencetak 'Hangat'. Blok berikutnya tidak diperiksa.
27.

Seorang dosen ingin mengelompokkan nilai mahasiswa: nilai ≥ 80 mendapat A, nilai ≥ 70 mendapat B, nilai ≥ 60 mendapat C, selainnya D. Untuk nilai = 85, berapa kali kondisi diperiksa pada struktur if-elif-else hingga output diberikan…

  • A. Satu kali
  • B. Dua kali
  • C. Tiga kali
  • D. Empat kali
Jawaban: A
Pada if-elif-else, kondisi diperiksa berurutan hingga ditemukan True. Untuk nilai 85, kondisi pertama if nilai >= 80 langsung True sehingga hanya satu pemeriksaan.
28.

Dalam sebuah aplikasi perbankan, pengguna dapat menarik tunai jika saldo mencukupi dan status akun aktif. Jika saldo tidak mencukupi, transaksi ditolak; jika akun tidak aktif, transaksi juga ditolak dengan pesan berbeda. Pendekatan yang memberikan pesan spesifik untuk setiap kegagalan adalah…

  • A. Menggunakan satu if dengan operator and
  • B. Menggunakan while untuk memeriksa status berulang kali
  • C. Menggunakan if-elif-else dengan kondisi saldo_cukup and akun_aktif
  • D. Menggunakan nested if: if akun_aktif: diikuti if saldo_cukup: … else: …
Jawaban: D
Nested if memungkinkan pengecekan bertingkat dengan pesan spesifik di setiap cabang. Jika akun tidak aktif, else di if luar menangani; jika aktif tapi saldo tidak cukup, else di if dalam menangani.
29.

Kode berikut: if a > b: if a > c: print('a terbesar'). Agar 'a terbesar' tercetak, syarat yang harus dipenuhi adalah…

  • A. a lebih besar dari b saja
  • B. a lebih besar dari c saja
  • C. a lebih besar dari b atau a lebih besar dari c
  • D. a lebih besar dari b dan a lebih besar dari c
Jawaban: D
Nested if mengharuskan kedua kondisi bernilai True agar blok print tereksekusi. Kondisi luar if a > b harus True dulu, kemudian kondisi dalam if a > c juga harus True.
30.

Budi membuat program untuk mengecek apakah sebuah tahun adalah tahun kabisat. Tahun kabisat habis dibagi 4, namun jika habis dibagi 100 harus juga habis dibagi 400. Ekspresi yang tepat mewakili aturan ini adalah…

  • A. (tahun % 4 == 0) or (tahun % 100 == 0 and tahun % 400 == 0)
  • B. (tahun % 4 == 0) and (tahun % 100 != 0 or tahun % 400 == 0)
  • C. tahun % 4 == 0 and tahun % 100 == 0
  • D. (tahun % 400 == 0) or (tahun % 4 == 0)
Jawaban: B
Aturan kabisat: habis dibagi 4, dan jika habis dibagi 100 maka harus habis dibagi 400. Ekspresi B menerjemahkan tepat: tahun kelipatan 4 dan (bukan kelipatan 100 atau kelipatan 400).
31.

Siti ingin menampilkan bilangan 1 hingga 10 menggunakan perulangan for. Sintaks yang tepat di Python adalah…

  • A. for i in range(1, 10): print(i)
  • B. for i in range(1, 11): print(i)
  • C. for i = 1 to 10: print(i)
  • D. for i in [1..10]: print(i)
Jawaban: B
range(1, 11) menghasilkan urutan dari 1 hingga 10 karena parameter akhir bersifat eksklusif, sehingga diperlukan 11.
32.

Sebuah program harus terus meminta input password hingga pengguna memasukkan yang benar atau maksimal 3 percobaan. Struktur perulangan yang paling sesuai untuk masalah ini adalah…

  • A. Perulangan for dengan range(3)
  • B. Perulangan for tak terbatas dengan break di dalam
  • C. Perulangan while dengan kondisi counter < 3 dan password belum benar
  • D. Perulangan while True tanpa batasan
Jawaban: C
while cocok untuk perulangan dengan kondisi ganda yang tidak diketahui pasti jumlah iterasinya. Kondisi counter < 3 dan password_salah mengontrol perulangan dengan tepat.
33.

Dalam sebuah perulangan for yang memproses daftar nilai ujian, seorang programmer ingin melewati nilai-nilai yang kurang dari 0 (data tidak valid) dan hanya memproses data valid. Pernyataan yang harus digunakan adalah…

  • A. pass
  • B. break
  • C. return
  • D. continue
Jawaban: D
continue melompati sisa iterasi saat ini dan melanjutkan ke iterasi berikutnya tanpa menghentikan seluruh perulangan, cocok untuk mengabaikan data tidak valid.
34.

Kode while True: diikuti blok kode yang di dalamnya terdapat if kondisi: break. Fungsi break pada konteks ini adalah…

  • A. Menghentikan program secara keseluruhan
  • B. Mengulang dari awal perulangan
  • C. Keluar dari perulangan dan melanjutkan eksekusi setelah blok while
  • D. Mengabaikan sisa kode dan melanjutkan iterasi berikutnya
Jawaban: C
break menghentikan perulangan terdekat secara paksa dan melanjutkan eksekusi ke baris setelah blok perulangan tersebut.
35.

Sebuah program meminta pengguna memasukkan angka positif, lalu terus meminta ulang jika input bernilai negatif atau nol. Di antara pilihan berikut, struktur perulangan yang paling sesuai untuk menangani situasi ini adalah…

  • A. for i in range(10) dengan if di dalamnya
  • B. while True dengan raise exception
  • C. for dengan break setelah 3 kali gagal
  • D. while dengan kondisi input <= 0
Jawaban: D
Situasi memerlukan perulangan yang tidak diketahui jumlah iterasinya dan bergantung pada kondisi input. While dengan kondisi input <= 0 akan terus berjalan selama masukan tidak memenuhi syarat positif, tepat untuk validasi semacam ini.
36.

Pada kode berikut: for i in range(1, 6): if i == 3: continue; print(i, end=' '). Output yang dihasilkan adalah…

  • A. 1 2 3 4 5
  • B. 1 2 3
  • C. 1 2 4 5 6
  • D. 1 2 4 5
Jawaban: D
Continue menyebabkan iterasi saat i == 3 dilewati, sehingga print tidak dijalankan untuk nilai 3. Iterasi lain tetap mencetak nilai i, menghasilkan deret 1 2 4 5.
37.

Di dalam program kalkulator, setelah pengguna memasukkan dua bilangan dan memilih operasi, program langsung menghitung dan menampilkan hasil tanpa percabangan yang tampak di kode utama. Pola algoritma yang diterapkan dalam kode tersebut adalah…

  • A. Struktur runtunan sederhana
  • B. Perulangan tak terbatas
  • C. Percabangan bersarang
  • D. Rekursi ekor
Jawaban: A
Ketika program menjalankan langkah input, proses, output secara lurus tanpa pengulangan atau percabangan eksplisit di kode utama, pola yang digunakan adalah struktur runtunan (sequence), eksekusi berurutan dari atas ke bawah.
38.

Budi sedang menulis program yang menerima data siswa, menghitung rata-rata, dan mencetak hasilnya. Ia memutuskan untuk membagi program menjadi tiga bagian kode yang berjalan lurus tanpa lompatan atau pengulangan. Bagian kode tersebut digolongkan sebagai…

  • A. Modul percabangan
  • B. Struktur sekuensial
  • C. Blok perulangan
  • D. Fungsi rekursif
Jawaban: B
Eksekusi yang berlangsung lurus dari satu instruksi ke instruksi berikutnya tanpa lompatan atau pengulangan merupakan ciri khas struktur sekuensial (sequence).
39.

Siti membuat program yang menghitung gaji karyawan: program membaca jam kerja dan tarif per jam, mengalikan keduanya, lalu menampilkan total gaji. Ketiga tahap ini merepresentasikan pola dasar algoritma…

  • A. Input-loop-output
  • B. Input-proses-output
  • C. Proses-kondisi-input
  • D. Output-input-loop
Jawaban: B
Pola dasar algoritma yang menerima masukan, mengolah data, dan menampilkan hasil secara berurutan disebut Input-proses-output.
40.

Sebelum menulis kode lengkap, seorang analis memecah masalah penghitungan diskon pelanggan menjadi langkah: (1) menerima total belanja, (2) menentukan persentase diskon, (3) menghitung potongan, (4) mengurangkan dari total, (5) menampilkan hasil. Proses memecah masalah menjadi langkah-langkah kecil ini disebut…

  • A. Komposisi blok
  • B. Generalization
  • C. Dekomposisi
  • D. Abstraksi data
Jawaban: C
Teknik memecah masalah besar menjadi langkah-langkah sekuensial yang lebih kecil dan terkelola dinamakan dekomposisi.
41.

Program stok barang PT Mega menerima kode barang, lalu mengecek keberadaannya di database, mengurangi stok jika ada, dan mencetak faktur. Setiap instruksi dieksekusi satu demi satu tanpa lompatan. Karakteristik ini menegaskan bahwa program menerapkan…

  • A. Eksekusi paralel
  • B. Lompatan bersyarat
  • C. Iterasi implisit
  • D. Alur sekuensial
Jawaban: D
Eksekusi instruksi satu demi satu tanpa lompatan merupakan karakteristik struktur sequence atau alur sekuensial.
42.

Ketika membandingkan algoritma sekuensial murni dengan algoritma yang menyisipkan subrutin di dalamnya, perbedaan utama yang muncul adalah…

  • A. Sekuensial murni tidak memiliki input
  • B. Pada sekuensial murni tidak ada pemanggilan fungsi terpisah
  • C. Subrutin membuat eksekusi bercabang
  • D. Sekuensial murni selalu menggunakan perulangan
Jawaban: B
Pada algoritma sekuensial murni, semua langkah ditulis langsung tanpa pemanggilan fungsi terpisah, berbeda dengan yang menyisipkan subrutin.
43.

Perhatikan kode berikut: data = [10, 20, 30, 40, 50]; print(data[-2]). Nilai yang dicetak oleh kode tersebut adalah…

  • A. 20
  • B. 30
  • C. 40
  • D. 50
Jawaban: C
Indeks negatif -2 mengakses elemen kedua dari akhir list, yaitu 40 dari [10, 20, 30, 40, 50].
44.

Diketahui list nilai = [78, 85, 90, 67, 88]. Seorang mahasiswa ingin mengambil subset yang hanya berisi tiga nilai tengah, yaitu [85, 90, 67]. Ekspresi slicing yang tepat adalah…

  • A. nilai[2:5]
  • B. nilai[0:3]
  • C. nilai[1:4]
  • D. nilai[1:3]
Jawaban: C
Slicing nilai[1:4] mengambil elemen dari indeks 1 hingga sebelum indeks 4, yaitu [85, 90, 67].
45.

Seorang programmer ingin menambahkan elemen 99 di akhir list angka = [1, 2, 3]. Ia lalu ingin menghapus elemen pertama dari list tersebut. Urutan metode yang digunakan adalah…

  • A. append() lalu pop(0)
  • B. append() lalu remove(0)
  • C. insert() lalu pop()
  • D. extend() lalu delete(0)
Jawaban: A
append() digunakan untuk menambah elemen di akhir list, sedangkan pop(0) menghapus dan mengembalikan elemen pada indeks pertama.
46.

Siti menyimpan daftar nama siswa dalam variabel siswa = ['Ani', 'Budi', 'Citra']. Ia mengetik siswa[1] = 'Beni' dan berhasil mengubah isi list. Jika ia melakukan hal yang sama pada string teks = 'Halo' dengan teks[1] = 'e', Python akan…

  • A. Mengubah 'a' menjadi 'e' sehingga teks menjadi 'Helo'
  • B. Menghasilkan TypeError karena string bersifat immutable
  • C. Mengganti seluruh string menjadi 'e'
  • D. Membuat string baru 'Helo' secara otomatis
Jawaban: B
String bersifat immutable di Python sehingga operasi pengubahan karakter via indeks akan menghasilkan TypeError.
47.

List A = [1, 2] dan list B = [1, 2] memiliki isi yang identik. Seorang programmer ingin menambahkan seluruh elemen list B ke dalam list A sehingga A menjadi [1, 2, 1, 2]. Metode yang menghasilkan efek tersebut adalah…

  • A. A.append(B)
  • B. A.insert(2, B)
  • C. A.extend(B)
  • D. A += [B]
Jawaban: C
Metode extend() menambahkan setiap elemen dari iterable (list B) satu per satu ke akhir list A, bukan menambahkan sebagai satu elemen utuh.
48.

Dalam program pengolahan data ujian, variabel hasil = [80, 75, 90, 75, 85]. Untuk mengetahui berapa kali nilai 75 muncul dalam list tersebut, metode yang tepat digunakan adalah…

  • A. hasil.find(75)
  • B. hasil.index(75)
  • C. hasil.search(75)
  • D. hasil.count(75)
Jawaban: D
Metode count() pada list digunakan untuk menghitung frekuensi kemunculan elemen tertentu, dalam hal ini nilai 75.
49.

Salah satu perbedaan paling mendasar antara tuple dan list di Python terletak pada…

  • A. Tuple tidak dapat diubah setelah dibuat
  • B. Tuple hanya dapat menyimpan tipe data homogen
  • C. Tuple tidak mengizinkan pengaksesan via indeks
  • D. Tuple menggunakan kurung siku sebagai penanda
Jawaban: A
Tuple bersifat immutable sehingga isinya tidak dapat diubah setelah pembuatan, sedangkan list bersifat mutable.
50.

Diketahui kode: koordinat = (7, 14); x, y = koordinat. Setelah eksekusi, nilai x dan y masing-masing adalah…

  • A. 7 dan 14
  • B. (7, 14) dan None
  • C. 7 dan None
  • D. TypeError
Jawaban: A
Unpacking tuple (x, y = koordinat) akan mengekstrak elemen pertama ke x dan elemen kedua ke y, sehingga x=7 dan y=14.
51.

PT Nusantara menggunakan tuple untuk menyimpan data sensitif konfigurasi sistem, bukan list. Alasan keamanan yang paling tepat untuk pilihan ini adalah…

  • A. Tuple tidak dapat diubah sehingga mencegah modifikasi tidak disengaja
  • B. Tuple mendukung enkripsi bawaan Python
  • C. Tuple lebih cepat diakses daripada list
  • D. Tuple dapat menyimpan lebih banyak elemen daripada list
Jawaban: A
Karena tuple bersifat immutable, penggunaannya untuk data sensitif mencegah modifikasi tidak disengaja yang dapat mengubah konfigurasi sistem.
52.

Struktur data seperti tuple pada Python tidak dapat diubah isinya setelah dibuat. Sifat ini secara teknis disebut…

  • A. fixed-length
  • B. static
  • C. immutable
  • D. read-only
Jawaban: C
Tuple memiliki sifat immutable, artinya elemen-elemennya tidak dapat ditambah, dihapus, atau diubah setelah pembuatan objek.
53.

Seorang pengembang menyimpan koordinat lintang dan bujur dalam variabel koordinat = (-6.2088, 106.8456). Ia ingin mengekstrak nilai lintang dan bujur tersebut ke dalam variabel lat dan lon dalam satu baris perintah. Teknik yang paling tepat digunakan adalah…

  • A. casting ke list
  • B. indexing manual
  • C. slicing berurutan
  • D. tuple unpacking
Jawaban: D
Tuple unpacking memungkinkan ekstrak langsung elemen tuple ke variabel individual, seperti lat, lon = koordinat.
54.

Mengapa tuple lebih aman digunakan sebagai kunci dictionary dibandingkan list…

  • A. tuple hanya menerima elemen bertipe homogen yang dijamin stabil
  • B. tuple memiliki kecepatan akses yang lebih tinggi daripada list untuk operasi hashing
  • C. tuple bersifat immutable sehingga hash-nya tidak berubah, sedangkan list mutable dapat mengubah hash setelah dimasukkan
  • D. list tidak dapat dikonversi menjadi objek hashable sementara tuple otomatis
Jawaban: C
Kunci dictionary harus hashable dan immutable. Tuple memenuhi syarat ini, sedangkan list yang mutable dapat mengalami perubahan isi sehingga hash-nya tidak konsisten.
55.

Struktur data yang menyimpan pasangan key-value dan bersifat mutable di Python dikenal sebagai…

  • A. named tuple
  • B. tuple
  • C. list of pairs
  • D. dictionary
Jawaban: D
Dictionary adalah struktur data mutable yang menyimpan data dalam bentuk pasangan key-value dengan akses cepat berdasarkan key.
56.

Dalam sebuah program inventaris toko, pemilik toko menyimpan stok barang dengan nama barang sebagai pengenal dan stok sebagai nilai. Jika ia ingin mengambil stok suatu barang dengan cepat tanpa melakukan iterasi satu per satu, struktur data yang paling tepat adalah…

  • A. dictionary dengan key nama barang dan value stok
  • B. list dua dimensi berisi pasangan nama dan stok
  • C. tuple berisi pasangan nama dan stok
  • D. string terformat dengan pemisah khusus
Jawaban: A
Dictionary menyediakan akses langsung ke value berdasarkan key unik, sangat efisien untuk pencarian tanpa iterasi.
57.

Perhatikan kode: barang = {'pensil': 50, 'buku': 30}; print(barang['pena']). Jika key 'pena' tidak ada dalam dictionary, Python akan…

  • A. mengembalikan 0 sebagai default
  • B. mengembalikan None
  • C. mengeluarkan KeyError
  • D. menambahkan key baru dengan nilai None
Jawaban: C
Mengakses key yang tidak ada pada dictionary langsung dengan kurung siku akan memicu KeyError, bukan mengembalikan nilai default.
58.

Seorang mahasiswa akan menggunakan fungsi akar kuadrat dan konstanta π dari modul standar Python. Ia menulis import math. Untuk memanggil fungsi akar kuadrat dari bilangan 25, sintaks yang benar adalah…

  • A. from math import all kemudian sqrt(25)
  • B. sqrt(25) dengan math otomatis terdeteksi
  • C. import math.sqrt lalu panggil sqrt(25)
  • D. math.sqrt(25)
Jawaban: D
Dengan import math, seluruh modul dimuat dan fungsi-fungsi di dalamnya diakses dengan awalan math., seperti math.sqrt().
59.

Perbedaan antara perintah import math dan from math import pi adalah…

  • A. import math hanya memuat fungsi aritmatika, sedangkan from math import pi memuat konstanta saja
  • B. import math memuat semua isi modul dengan namespace math, sedangkan from math import pi hanya memasukkan pi ke namespace global
  • C. import math lebih cepat karena memuat selektif, sedangkan from math import pi lambat
  • D. import math menyalin seluruh kode modul, sedangkan from math import pi hanya mereferensi
Jawaban: B
import math memperkenalkan modul sebagai objek dengan namespace sendiri, sementara from math import pi memasukkan nama pi langsung ke namespace pemanggil.
60.

Di perusahaan logistik, sistem melacak status pengiriman menggunakan kode numerik: 0 untuk dikemas, 1 untuk dikirim, 2 untuk tiba. Pengembang menggunakan dictionary untuk menerjemahkan kode menjadi teks status. Struktur ini mengandalkan karakteristik dictionary berupa…

  • A. akses O(1) berbasis key untuk pencarian makna kode
  • B. kemampuan menyimpan data dalam urutan ascending otomatis
  • C. kapasitas penyimpanan yang dinamis tanpa batas memori
  • D. proteksi integritas dengan enkripsi bawaan
Jawaban: A
Dictionary memungkinkan akses langsung ke value melalui key dalam kompleksitas konstan, cocok untuk penerjemahan berbasis kode.
61.

Blok kode yang didefinisikan dengan keyword def dan dapat dipanggil berulang dalam program Python disebut…

  • A. fungsi
  • B. modul
  • C. kelas
  • D. prosedur
Jawaban: A
Fungsi didefinisikan menggunakan keyword def dan merupakan blok kode yang dapat dipanggil kembali untuk menjalankan tugas tertentu.
62.

Seorang programmer menulis: def salam(nama): print('Halo', nama). Ia memanggilnya dengan salam(nama='Budi'). Teknik pengiriman argumen ini disebut…

  • A. default argument
  • B. keyword argument
  • C. positional argument
  • D. named parameter
Jawaban: B
Pengiriman argumen dengan menyebut nama parameter secara eksplisit, seperti nama='Budi', disebut keyword argument.
63.

Perhatikan kode: def hitung(a, b=2): return a * b. Fungsi ini dipanggil dengan hitung(5) dan hitung(5, 3). Nilai pengembalian masing-masing adalah…

  • A. 10 dan 15
  • B. 5 dan 15
  • C. 10 dan 10
  • D. 7 dan 8
Jawaban: A
Pada hitung(5), b menggunakan nilai default 2 sehingga hasil 5*2=10. Pada hitung(5,3), b diberi nilai 3 sehingga hasil 5*3=15.
64.

Apa yang terjadi jika sebuah fungsi tidak memiliki keyword return secara eksplisit…

  • A. fungsi menjadi prosedur murni tanpa nilai kembalian
  • B. fungsi tidak dapat dipanggil dan menyebabkan error
  • C. fungsi mengembalikan nilai 0 sebagai default
  • D. fungsi tetap mengembalikan nilai None secara otomatis
Jawaban: D
Di Python, fungsi yang tidak memiliki return eksplisit akan otomatis mengembalikan None saat pemanggilan selesai.
65.

Dosen meminta mahasiswa membuat fungsi untuk menentukan apakah sebuah bilangan adalah bilangan prima. Fungsi menerima satu parameter bilangan bulat dan mengembalikan True jika prima. Dalam definisi fungsi tersebut, bilangan yang diuji dikenal sebagai…

  • A. parameter formal
  • B. argumen aktual
  • C. variabel global
  • D. return value
Jawaban: A
Variabel yang ditulis dalam definisi fungsi sebagai penerima nilai adalah parameter formal. Argument aktual adalah nilai yang diberikan saat pemanggilan.
66.

Variabel yang didefinisikan di dalam sebuah fungsi dan hanya dapat diakses di dalam fungsi tersebut memiliki cakupan…

  • A. function scope
  • B. global scope
  • C. local scope
  • D. block scope
Jawaban: C
Variabel yang didefinisikan di dalam fungsi memiliki local scope, artinya hanya dikenal dan dapat diakses di dalam blok fungsi tersebut.
67.

Seorang mahasiswa menulis kode: total = 100; def diskon(): total = total – 20. Saat fungsi dipanggil, Python memunculkan UnboundLocalError. Penyebab error ini adalah…

  • A. variabel total bersifat immutable sehingga tidak bisa dikurangi nilainya
  • B. variabel total dalam fungsi dianggap lokal karena ada assignment, tetapi nilainya belum didefinisikan di lingkup lokal
  • C. fungsi diskon tidak dideklarasikan dengan parameter global
  • D. assignment di dalam fungsi hanya bisa dilakukan dengan keyword set
Jawaban: B
Python menganggap total di dalam fungsi sebagai variabel lokal karena dilakukan assignment. Saat mencoba mengurangi, variabel lokal tersebut belum memiliki nilai, sehingga terjadi UnboundLocalError.
68.

Dalam sebuah modul, variabel PI = 3.14 dideklarasikan di luar semua fungsi. Untuk memodifikasi nilai PI dari dalam fungsi agar perubahan terlihat di luar fungsi, diperlukan…

  • A. menggunakan keyword nonlocal PI
  • B. mendeklarasikan global PI di awal fungsi
  • C. memanggil fungsi dengan parameter PI
  • D. mengembalikan PI sebagai return value
Jawaban: B
Keyword global memberitahu Python bahwa variabel yang dimaksud adalah variabel global, sehingga modifikasi di dalam fungsi memengaruhi variabel global tersebut.
69.

Ani mendefinisikan variabel counter = 0 di luar semua fungsi. Di dalam fungsi increment(), ia ingin mengubah nilai counter agar perubahan tersebut terlihat di luar fungsi. Kata kunci yang harus digunakan Ani di dalam fungsi adalah…

  • A. global counter
  • B. nonlocal counter
  • C. static counter
  • D. public counter
Jawaban: A
Keyword global memberi tahu Python bahwa variabel di dalam fungsi merujuk ke variabel yang didefinisikan di lingkup global, sehingga perubahan di dalam fungsi memengaruhi variabel tersebut di luar fungsi.
70.

Dua fungsi berbeda dalam satu modul, yaitu fungsi_A dan fungsi_B, masing-masing mendeklarasikan variabel lokal dengan nama yang sama, yaitu data = 50. Ketika kedua fungsi dipanggil secara bergantian, nilai variabel data pada fungsi_A…

  • A. tetap independen dan tidak terpengaruh oleh data pada fungsi_B
  • B. berubah mengikuti nilai data pada fungsi_B karena namanya sama
  • C. menjadi tidak terdefinisi setelah fungsi_B dipanggil
  • D. mengalami konflik nama yang menyebabkan error
Jawaban: A
Variabel lokal hanya hidup dalam lingkup fungsi tempat ia didefinisikan. Nama yang sama pada fungsi berbeda tidak saling memengaruhi karena masing-masing memiliki alokasi memori sendiri.
71.

Sebuah program divisi mencoba membagi dua bilangan dari input pengguna. Ketika pengguna memasukkan pembagi bernilai nol, Python secara otomatis menghentikan eksekusi dan menampilkan pesan kesalahan. Peristiwa ini dikategorikan sebagai…

  • A. syntax error karena kesalahan penulisan kode
  • B. compile-time error yang terdeteksi sebelum program berjalan
  • C. exception karena kesalahan terjadi saat runtime
  • D. logical error karena program tetap berjalan dengan hasil salah
Jawaban: C
Pembagian dengan nol adalah contoh exception yang hanya terdeteksi saat program dijalankan, bukan saat penulisan atau kompilasi. Python menghentikan eksekusi dan melemparkan ZeroDivisionError.
72.

Budi membuat program kalkulator yang rentan terhadap input non-numerik dari pengguna. Ia ingin memastikan bahwa jika terjadi kesalahan konversi tipe data, program tidak langsung berhenti melainkan menampilkan pesan ramah. Struktur Python yang wajib ia gunakan adalah…

  • A. if-else untuk mengecek tipe data sebelum konversi
  • B. while loop untuk mengulangi permintaan input selamanya
  • C. try-except yang membungkus kode rawan error
  • D. assert statement untuk memvalidasi input
Jawaban: C
try-except adalah mekanisme penanganan exception bawaan Python. Kode yang berpotensi error diletakkan di blok try, dan jika terjadi exception, eksekusi berpindah ke blok except tanpa menghentikan program.
73.

Seorang pengembang menulis blok try-except-finally untuk membuka dan memproses file. Jika exception terjadi di blok try dan berhasil ditangkap oleh except, bagian finally akan…

  • A. dilewati karena exception sudah ditangani
  • B. tetap dieksekusi terlepas dari terjadi atau tidaknya exception
  • C. dieksekusi hanya jika exception tidak terjadi
  • D. hanya dieksekusi jika terdapat return di blok try
Jawaban: B
Blok finally selalu dijalankan setelah try-except selesai, tanpa peduli apakah exception terjadi atau tidak. Ini berguna untuk membersihkan sumber daya seperti menutup file atau koneksi database.
74.

Dalam modul validasi data, seorang programmer sengaja memicu exception ketika data yang diterima tidak memenuhi kriteria bisnis tertentu, meskipun secara sintaks tidak ada yang salah. Keyword untuk memicu exception secara manual tersebut adalah…

  • A. raise
  • B. assert
  • C. throw
  • D. trigger
Jawaban: A
Keyword raise digunakan untuk melemparkan exception secara eksplisit. Programmer dapat menentukan tipe exception dan pesan kustom untuk memberi tahu pemanggil bahwa kondisi tertentu tidak terpenuhi.
75.

Rina memiliki file konfigurasi yang harus selalu ada agar program berjalan. Ia menulis kode untuk membaca file tersebut di blok try, dan meletakkan pesan 'File tidak ditemukan' di except. Agar exception hanya tertangkap jika file benar-benar hilang dan bukan karena kesalahan lain, Rina sebaiknya…

  • A. menggunakan except tanpa menyebut tipe exception
  • B. menambahkan tipe spesifik FileNotFoundError pada except
  • C. meletakkan kode di blok finally agar tetap aman
  • D. mengabaikan exception dengan pass di blok except
Jawaban: B
Menyebut tipe exception spesifik seperti FileNotFoundError memastikan bahwa hanya kesalahan itu yang ditangani. Exception lain tetap akan merambat ke atas dan tidak tertelan secara diam-diam.
76.

Sebuah aplikasi membaca data dari API eksternal dan menyimpannya ke database. Tiga jenis kesalahan mungkin terjadi: koneksi gagal, data tidak valid, dan kegagalan penyimpanan. Untuk memberikan penanganan berbeda pada setiap kesalahan, struktur yang paling tepat terdiri dari…

  • A. satu try dengan satu except generik yang menangani semua
  • B. satu try dengan beberapa blok except spesifik untuk tiap tipe exception
  • C. beberapa try-except terpisah untuk setiap operasi
  • D. satu try-except dengan nested if untuk memeriksa jenis error
Jawaban: B
Python mendukung multiple except blocks dalam satu try. Setiap except dapat menangani tipe exception berbeda, sehingga programmer dapat memberikan respons yang spesifik sesuai jenis kesalahan yang terjadi.
77.

Pak Budi menulis beberapa blok except setelah try, dimulai dari yang paling spesifik hingga yang paling umum. Suatu exception bertipe ValueError terjadi, tetapi ia juga memiliki except Exception sebagai blok terakhir. Exception akan ditangani oleh…

  • A. blok except Exception karena paling umum
  • B. tidak tertangani karena terjadi konflik
  • C. kedua blok secara berurutan
  • D. blok except ValueError karena paling cocok dan ditemukan lebih dulu
Jawaban: D
Python memeriksa blok except dari atas ke bawah. Begitu menemukan kecocokan tipe exception, blok itu dieksekusi dan blok berikutnya diabaikan. Urutan spesifik ke umum mencegah except general menangkap semua lebih dulu.
78.

Seorang programmer ingin menangkap exception bertipe ValueError dan TypeError dengan penanganan yang sama. Daripada menulis dua except terpisah, ia dapat menulis…

  • A. except ValueError and TypeError
  • B. except [ValueError, TypeError]
  • C. except ValueError, TypeError
  • D. except (ValueError, TypeError)
Jawaban: D
Python mengizinkan satu blok except menangani beberapa tipe exception dengan menuliskannya dalam tuple, misalnya except (ValueError, TypeError). Ini menyatukan penanganan untuk beberapa exception dalam satu blok.
79.

Sistem perbankan menangkap exception menggunakan except Exception. Ketika ditinjau ulang, ditemukan bahwa KeyboardInterrupt (Ctrl+C) juga ikut tertangkap dan tidak bisa menghentikan program. Manakah pernyataan yang paling tepat mengenai situasi ini…

  • A. Exception adalah kelas dasar dari semua exception tanpa pengecualian
  • B. except Exception terlalu sempit dan perlu diganti dengan except BaseException
  • C. KeyboardInterrupt bukan turunan Exception melainkan turunan langsung BaseException
  • D. KeyboardInterrupt harus ditangani secara eksplisit bersama Exception
Jawaban: C
Hirarki exception Python menempatkan KeyboardInterrupt dan SystemExit sebagai turunan langsung BaseException, bukan Exception. Oleh karena itu, except Exception tidak semestinya menangkap keduanya, menjaga agar program tetap bisa dihentikan paksa.
80.

Siti memproses data sensor yang menghasilkan ribuan angka per detik. Ia menggunakan except Exception di bagian akhir setelah beberapa except spesifik. Praktik ini masih aman karena…

  • A. Exception adalah kelas paling atas yang menangkap semua jenis kesalahan
  • B. program dengan except Exception tidak pernah crash
  • C. Exception hanya menangkap error ringan yang tidak menghentikan program
  • D. except spesifik di atasnya akan menangani exception yang sudah diprediksi terlebih dulu
Jawaban: D
Menempatkan except Exception setelah except spesifik memastikan exception yang sudah dikenal ditangani lebih dulu. Except Exception berfungsi sebagai jaring pengaman terakhir untuk kesalahan tak terduga.
81.

Guru matematika ingin menghitung rata-rata nilai ujian 40 siswa. Ia menerima input nilai satu per satu dalam perulangan, menjumlahkannya, lalu membagi total dengan 40. Sebelum membagi, ia harus memastikan bahwa…

  • A. semua nilai bertipe integer dan bukan float
  • B. tidak ada nilai negatif yang dapat memengaruhi penjumlahan
  • C. setiap nilai siswa sudah dikonversi ke huruf sebelum dijumlahkan
  • D. total penjumlahan sudah dihitung dengan benar sebelum operasi pembagian
Jawaban: D
Pada algoritma rata-rata, urutan sekuensial menuntut penjumlahan seluruh data selesai sebelum pembagian. Jika pembagian dilakukan sebelum total siap, hasil akan keliru. Ini adalah inti pola input-proses-output.
82.

Seorang dosen membuat program untuk mengonversi nilai angka (0–100) menjadi huruf: ≥85 mendapat A, ≥70 mendapat B, ≥55 mendapat C, dan sisanya D. Ketika program menerima input 110, seharusnya program menolak karena di luar rentang. Untuk menangani kasus ini, sebelum masuk ke rantai if-elif-else, langkah yang paling tepat adalah…

  • A. menambahkan else di akhir rantai untuk menangkap semua sisa
  • B. menggunakan try-except untuk menangkap error konversi
  • C. melakukan validasi rentang 0–100 menggunakan if dan segera memberi tahu jika di luar itu
  • D. memperluas rentang nilai pada setiap kondisi elif
Jawaban: C
Validasi input adalah langkah awal sebelum pemrosesan logika utama. Memeriksa rentang nilai 0–100 di awal mencegah data tidak sah masuk ke rantai konversi dan memberi pesan kesalahan yang spesifik.
83.

Program konversi nilai mahasiswa menggunakan struktur if-elif-else. Seorang mahasiswa mendapat nilai 70, yang memenuhi kondisi nilai ≥70. Namun, program mengeluarkan C karena kondisi nilai ≥80 diperiksa lebih dulu. Penyebab perilaku ini adalah…

  • A. urutan kondisi dalam if-elif-else tidak disusun dari tertinggi ke terendah
  • B. error pada ekspresi logika di setiap elif
  • C. nilai 70 tidak memenuhi syarat B karena kurang dari 75
  • D. program tidak memiliki validasi input
Jawaban: A
Pada rantai if-elif-else, kondisi dievaluasi dari atas ke bawah. Jika kondisi tertinggi tidak ditempatkan pertama, nilai yang memenuhi beberapa kondisi akan tertangkap oleh kondisi yang lebih rendah, menghasilkan output yang salah.
84.

Seorang kepala sekolah meminta laporan rata-rata nilai ujian akhir dari tiga kelas paralel. Program menghitung rata-rata per kelas, lalu menghitung rata-rata dari ketiga rata-rata kelas tersebut. Pernyataan yang tepat mengenai hasil perhitungan ini adalah…

  • A. rata-rata dari rata-rata kelas selalu sama dengan rata-rata seluruh siswa
  • B. rata-rata dari rata-rata kelas akan akurat hanya jika jumlah siswa tiap kelas sama
  • C. rata-rata dari rata-rata kelas lebih akurat karena mengurangi variasi antar kelas
  • D. rata-rata dari rata-rata kelas selalu lebih kecil dari rata-rata seluruh siswa
Jawaban: B
Rata-rata dari rata-rata kelas tidak selalu sama dengan rata-rata seluruh siswa. Keduanya sama hanya jika setiap kelas memiliki jumlah siswa yang identik. Jika ukuran kelas berbeda, bobot tiap kelas terhadap rata-rata total tidak seragam.
85.

Bu Rina mengajar di sebuah SMK dan telah selesai mengoreksi ujian akhir 30 siswa. Ia ingin programnya langsung menolak input nilai yang kurang dari 0 atau lebih dari 100 sebelum diproses ke perhitungan rata-rata. Mekanisme yang paling tepat untuk menangani nilai di luar rentang tersebut adalah…

  • A. melakukan validasi input di setiap iterasi penerimaan data menggunakan struktur if dan langsung meminta input ulang
  • B. memasukkan semua nilai ke list lalu menyaring nilai tidak valid dengan slicing
  • C. membiarkan program menghitung rata-rata lalu mengoreksi hasil akhir secara manual
  • D. menggunakan try-except tanpa kondisi if karena Python otomatis mendeteksi nilai di luar rentang
Jawaban: A
Validasi input dengan if di setiap iterasi memungkinkan pemeriksaan rentang secara langsung dan meminta input ulang saat data tidak valid.
86.

Sebuah sekolah menetapkan kriteria kelulusan: siswa lulus jika nilai akhir ≥ 60 dan kehadiran ≥ 75%. Bima memperoleh nilai akhir 58 dengan kehadiran 90%, sedangkan Dina memperoleh nilai 72 dengan kehadiran 70%. Berdasarkan program penentu kelulusan yang menerapkan operator logika AND, status Bima dan Dina adalah…

  • A. Bima lulus, Dina lulus
  • B. Bima lulus, Dina tidak lulus
  • C. Bima tidak lulus, Dina lulus
  • D. Bima tidak lulus, Dina tidak lulus
Jawaban: D
Kedua syarat harus dipenuhi bersamaan (AND). Bima gagal karena nilai kurang dari 60, Dina gagal karena kehadiran di bawah 75%.
87.

Mahasiswa semester akhir diminta membuat fungsi untuk menghitung IPK dari daftar mata kuliah yang disimpan dalam list dua dimensi berpasangan [sks, bobot]. Di dalam fungsi tersebut, total_sks = 0 dan total_bobot = 0 diinisialisasi sebelum perulangan. Setelah perulangan selesai, IPK dihitung sebagai total_bobot / total_sks. Jika terdapat mata kuliah dengan bobot nol karena mahasiswa tidak lulus, apa dampaknya terhadap perhitungan IPK…

  • A. IPK menjadi lebih kecil karena pembagi tetap, tetapi pembilang bertambah
  • B. IPK tidak dapat dihitung karena pembagian oleh total_sks menghasilkan error
  • C. IPK menjadi negatif karena adanya elemen nol dalam perhitungan
  • D. IPK tidak terpengaruh karena bobot nol tidak mengubah total_bobot
Jawaban: D
Mata kuliah berbobot nol menambah total_sks tetapi tidak menambah total_bobot, sehingga IPK menjadi lebih kecil dari yang seharusnya karena hanya pembagi yang bertambah.
88.

Kepala program studi meminta laporan statistik nilai ujian tengah semester. Seorang asisten membuat fungsi hitung_statistik(data) yang mengembalikan nilai rata-rata, nilai tertinggi, dan nilai terendah. Fungsi tersebut dipanggil dengan data = [78, 85, 72, 90, 66]. Untuk menampilkan ketiga nilai hasil fungsi dalam tiga variabel terpisah dalam satu pemanggilan, teknik yang digunakan pada sisi pemanggil adalah…

  • A. menggunakan tiga parameter default dalam definisi fungsi
  • B. memanggil fungsi tiga kali dengan parameter berbeda
  • C. memanfaatkan tuple unpacking dari nilai yang dikembalikan fungsi
  • D. mengakses elemen dictionary yang dikembalikan fungsi
Jawaban: C
Fungsi dapat mengembalikan beberapa nilai dalam bentuk tuple. Tuple unpacking memungkinkan mengekstraknya langsung ke variabel terpisah, seperti rata, maks, min = hitung_statistik(data).
89.

Seorang guru BK memiliki data nilai psikotes 200 siswa. Ia ingin menghitung standar deviasi untuk mengukur sebaran nilai. Fungsi buatannya menerima list nilai dan mengembalikan satu angka desimal. Agar fungsi tersebut dapat digunakan kembali untuk kelas lain tanpa menulis ulang kode, langkah yang paling tepat dalam perancangan fungsi adalah…

  • A. menyimpan data dalam variabel global agar semua fungsi bisa mengakses
  • B. menggunakan parameter berupa list nilai sehingga data dapat diganti saat pemanggilan
  • C. menulis ulang fungsi dengan nama berbeda untuk setiap kelas
  • D. menempatkan data langsung di dalam fungsi tanpa parameter
Jawaban: B
Parameter fungsi memungkinkan data yang berbeda dimasukkan setiap pemanggilan, menjadikan fungsi bersifat generik dan dapat digunakan kembali untuk berbagai dataset.
90.

Dinas Pendidikan kota meminta program untuk mengklasifikasikan sekolah berdasarkan rerata ujian nasional: kategori Unggul jika ≥ 85, Baik jika 70–84, Cukup jika 55–69, dan Kurang jika < 55. Program menerima input berupa list nilai siswa dan menghitung rata-ratanya. Supaya program memberikan kategori yang tepat untuk setiap sekolah dengan efisien, struktur pengendali yang paling sesuai adalah…

  • A. perulangan for dengan nested if untuk setiap kategori
  • B. perulangan while yang terus berjalan hingga kategori ditemukan
  • C. blok try-except yang menangkap error jika kategori tidak sesuai
  • D. rantai if-elif-else yang memeriksa kondisi secara berurutan dari batas tertinggi
Jawaban: D
Rantai if-elif-else memungkinkan pemeriksaan berurutan. Dimulai dari batas tertinggi (≥85) ke bawah memastikan pengelompokan tepat tanpa tumpang tindih antar kategori.
91.

Sebuah koperasi sekolah menjual alat tulis dan ingin membuat kalkulator harga otomatis. Program menampilkan menu: 1. Pensil (Rp3.000), 2. Buku (Rp7.000), 3. Pulpen (Rp5.000). Pengguna memilih menu dan jumlah, lalu program menampilkan total harga. Struktur kontrol utama yang mengarahkan alur program ke perhitungan yang sesuai dengan pilihan pengguna adalah…

  • A. struktur if-elif-else berdasarkan nomor menu yang dipilih
  • B. perulangan for yang mengiterasi seluruh menu
  • C. fungsi rekursif yang memanggil dirinya sendiri untuk setiap menu
  • D. list comprehension untuk menghitung harga sekaligus
Jawaban: A
Program menu-driven menggunakan percabangan if-elif-else untuk memilih operasi berdasarkan input pengguna, yaitu mencocokkan nomor menu dengan blok perhitungan yang sesuai.
92.

PT Mega Retail memiliki gudang dengan ribuan jenis barang. Kepala gudang meminta program yang dapat menambah stok barang baru, mencari stok berdasarkan kode barang, dan menghapus barang yang sudah tidak dijual. Dari ketiga operasi tersebut, yang paling membedakan efisiensi penggunaan dictionary dibanding list adalah…

  • A. menambah stok barang baru ke dalam koleksi
  • B. menampilkan seluruh daftar barang yang tersedia
  • C. mencari stok berdasarkan kode barang secara langsung tanpa iterasi
  • D. menghapus barang yang sudah tidak dijual dari koleksi
Jawaban: C
Dictionary menyimpan pasangan key-value sehingga pencarian berdasarkan key (kode barang) dapat dilakukan secara langsung tanpa iterasi, tidak seperti list yang memerlukan pencarian linear.
93.

Dalam aplikasi pengelolaan inventaris toko, seorang pengembang menggunakan dictionary dengan kode_barang sebagai key dan data_barang (berupa tuple: nama, stok, harga) sebagai value. Suatu hari, stok barang dengan kode 'B101' perlu ditambah 20 unit. Mengingat tuple bersifat immutable, langkah yang harus dilakukan adalah…

  • A. mengubah langsung nilai stok pada tuple dengan indeks
  • B. mengonversi tuple menjadi list, mengubah stok, lalu mengonversi kembali
  • C. membuat tuple baru dengan stok yang diperbarui dan menimpanya ke key yang sama
  • D. menambahkan entri baru ke dictionary dengan key yang dimodifikasi
Jawaban: C
Tuple tidak dapat diubah elemennya. Solusinya adalah membuat tuple baru dengan nilai stok yang diperbarui, lalu menetapkannya kembali sebagai value untuk key 'B101' di dictionary.
94.

Pak Anton membuat program pencarian kata untuk menganalisis teks pidato. Ia ingin mengetahui posisi indeks setiap kemunculan kata 'pendidikan' dalam list kata yang diperoleh dari pemisahan teks. Metode list yang mengembalikan indeks kemunculan pertama suatu elemen adalah index(), tetapi metode ini hanya menemukan kemunculan pertama. Agar semua posisi ditemukan, pendekatan yang paling akurat adalah…

  • A. menggunakan index() dalam perulangan while dan memotong list setiap kali ditemukan
  • B. mengiterasi list dengan enumerate() dan mencatat indeks ketika elemen cocok
  • C. menggunakan metode count() terlebih dahulu lalu menghitung posisi manual
  • D. mengonversi list menjadi string dan menggunakan find() berulang
Jawaban: B
enumerate() mengembalikan pasangan indeks dan elemen saat iterasi. Dengan memeriksa kecocokan elemen, semua posisi kemunculan kata dapat dicatat tanpa memodifikasi list asli.
95.

Sebuah program kalkulator menampilkan menu operasi: +, -, ×, ÷. Setelah pengguna memilih operasi, program meminta dua bilangan. Jika pengguna memasukkan huruf alih-alih angka pada input bilangan, program tetap berjalan dan meminta input ulang alih-alih berhenti dengan error. Struktur yang tepat untuk menangani skenario ini adalah…

  • A. menggunakan if untuk mengecek tipe data input sebelum konversi
  • B. mendeklarasikan variabel input dengan tipe data numerik di awal program
  • C. menggunakan fungsi bawaan Python yang otomatis mengabaikan input non-numerik
  • D. membungkus konversi tipe data dalam blok try-except dan mengulangi permintaan input
Jawaban: D
try-except menangkap ValueError saat konversi gagal. Dengan menempatkannya dalam perulangan, program dapat meminta input ulang hingga pengguna memberikan angka yang valid.
96.

Lina membuat aplikasi catatan keuangan harian. Setiap transaksi disimpan sebagai dictionary dengan key 'jenis' (pemasukan/pengeluaran) dan 'jumlah'. Di akhir bulan, program harus menghitung total pemasukan dan total pengeluaran untuk menampilkan saldo. Pendekatan yang tepat untuk mengakumulasi kedua total tersebut dari list transaksi adalah…

  • A. menggunakan dua variabel akumulator yang diperbarui dalam satu perulangan for dengan pengecekan if
  • B. memisahkan list transaksi menjadi dua list baru lalu menjumlahkan masing-masing
  • C. menggunakan fungsi sum() langsung pada list transaksi
  • D. menyimpan transaksi dalam dua dictionary terpisah sejak awal
Jawaban: A
Satu perulangan for dapat memeriksa nilai key 'jenis' di setiap dictionary transaksi. Gunakan if untuk mengarahkan penambahan ke akumulator pemasukan atau pengeluaran.
97.

Seorang mahasiswa membuat program penjadwalan kuliah mingguan. Ia menyimpan jadwal dalam list of tuples dengan format (hari, jam, mata_kuliah). Untuk menampilkan seluruh jadwal pada hari 'Senin' saja tanpa mengiterasi seluruh elemen satu per satu secara manual setiap kali ditampilkan, strategi yang paling efisien dalam kode adalah…

  • A. menggunakan perulangan while dengan counter manual
  • B. mengonversi seluruh list menjadi dictionary dengan key hari
  • C. menggunakan list comprehension dengan filter if hari == 'Senin' pada list jadwal
  • D. menyimpan jadwal dalam string panjang dan mencari substring 'Senin'
Jawaban: C
List comprehension dengan filter if memungkinkan penyaringan elemen berdasarkan kondisi secara ringkas dan efisien dalam satu baris kode, langsung menghasilkan list jadwal hari Senin.
98.

PT Logistik Nusantara memiliki program yang meminta pengguna memasukkan jumlah barang yang akan dikirim. Program lalu membagi jumlah tersebut dengan kapasitas truk untuk menghitung banyaknya perjalanan. Ketika pengguna memasukkan 'sepuluh' pada input jumlah barang, program langsung menampilkan 'Input tidak valid, masukkan angka' tanpa berhenti. Struktur Python yang bertanggung jawab atas perilaku ini adalah…

  • A. blok try-except yang menangkap ValueError saat konversi ke integer
  • B. perulangan while dengan kondisi pengecekan tipe data
  • C. fungsi bawaan isnumeric() yang mengembalikan False
  • D. deklarasi variabel dengan tipe data dinamis
Jawaban: A
Konversi string 'sepuluh' ke integer memicu ValueError. Blok try-except menangkapnya dan menampilkan pesan ramah, mencegah program berhenti mendadak.
99.

Aplikasi pencatat transaksi harian Pak Budi menyimpan data dalam list bernama transaksi. Suatu hari ia ingin menghapus transaksi dengan jumlah negatif yang menandakan kesalahan input. Ia menulis perulangan for i in range(len(transaksi)) dan menghapus elemen dengan del transaksi[i] ketika transaksi[i] < 0. Namun, beberapa transaksi negatif tetap lolos. Penyebab kegagalan logika ini adalah…

  • A. metode del tidak dapat digunakan pada list
  • B. indeks list berubah setelah penghapusan sehingga elemen tertentu terlewat
  • C. perulangan for tidak dapat mengakses indeks list
  • D. kondisi transaksi[i] < 0 tidak pernah bernilai True
Jawaban: B
Menghapus elemen saat iterasi maju menyebabkan pergeseran indeks. Elemen setelah yang dihapus bergeser ke indeks yang sudah dilewati iterasi, sehingga terlewat dari pemeriksaan.
100.

Program kasir sebuah minimarket menerima input jumlah uang yang dibayarkan pembeli dan total belanja. Program menghitung uang kembalian. Ketika pembeli memasukkan jumlah bayar yang lebih kecil dari total belanja, program menampilkan 'Uang tidak cukup' dan kembali ke menu utama alih-alih menghitung kembalian negatif. Untuk mencegah input non-numerik seperti 'lima puluh ribu' menyebabkan crash, blok try-except ditempatkan mengelilingi…

  • A. seluruh program termasuk logika perhitungan dan percabangan
  • B. hanya pada bagian konversi input string ke tipe numerik
  • C. pada bagian perhitungan pengurangan total dan uang bayar
  • D. pada bagian penampilan hasil akhir ke layar konsol
Jawaban: B
Pengecualian akibat input non-numerik hanya terjadi saat konversi string ke integer atau float. Menempatkan try-except spesifik di sekitar konversi sudah cukup menangani error tanpa membungkus logika yang tidak relevan.

Latihan sintaks Python tadi keliatan gampang ya. Tapi coba deh cek ulang bagian exception di Modul 7. Banyak yang ketuker antara try-except biasa sama multiple exception. Satu soal aja bisa bikin logika berantakan.

Nah, di SPMT4216 Algoritma dan Pemrograman, soal UO sering muncul dari Modul 8 dan 9. Studi kasus pendidikan atau non-pendidikan yang minta kamu bikin fungsi utuh. UTM-nya sih biasanya ngetes pemahaman tipe data dan perulangan. Kalau butuh latihan nalar lain, ada soal UT PEMA4423 Pengantar Analisis Real yang ngasah logika pembuktian. Udah pede belum sama kode yang kamu tulis tadi?

Bagikan

error: Content is protected !!