Lewati ke konten utama

Operator Logika Python: Pengantar Praktis

Python menyediakan tiga operator logika: and, or, dan not. Operator ini, yang juga dikenal sebagai operator Boolean, mengevaluasi beberapa kondisi dan menentukan nilai kebenaran keseluruhan dari sebuah ekspresi.
· 13 mnt Baca

Jelajahi bersama AI

Dalam pemrograman, kita sering perlu mengambil keputusan berdasarkan beberapa kondisi. Misalnya, kita mungkin ingin menjalankan tindakan tertentu hanya jika beberapa kondisi terpenuhi secara bersamaan. Atau, kita mungkin ingin memicu tindakan alternatif jika salah satu dari beberapa kondisi terpenuhi.

Python menyediakan serangkaian operator logika – and, or, not – untuk menangani skenario ini.

Dalam tutorial ini, kita akan mempelajari cara kerja operator logika Python dan cara menggunakannya dalam pemrograman serta data science. Perhatikan bahwa kita akan menggunakan kata kapital AND, OR, dan NOT untuk merepresentasikan operator ini secara konseptual. Dan kita akan merujuk ke keyword Python menggunakan konvensi ini: and, or, dan not.

Jika Anda mencari kurikulum Python yang terkurasi, lihat jalur keterampilan enam kursus Python Programming ini.

Sebelum masuk ke detailnya, mari mulai dengan jawaban singkat bagi Anda yang sedang terburu-buru.

Jawaban Singkat: Apa Itu Operator Logika Python?

Operator logika Python (and, or, not) adalah keyword khusus yang bertindak sebagai konjungsi dalam kode kita, menghubungkan dan mengevaluasi beberapa kondisi dalam satu ekspresi.

Pertimbangkan contoh berikut:

temperature = 25
is_sunny = True
if temperature > 20 and is_sunny:
    print("It's a perfect day for a picnic!")
It's a perfect day for a picnic!

Di sini, operator and memastikan bahwa pesan dicetak hanya jika kedua kondisi terpenuhi: suhu di atas 20 derajat dan cuacanya cerah.

Mari lihat contoh lain menggunakan operator or:

has_umbrella = False

if is_sunny or has_umbrella:
    print("Let's go for a walk!")
Let's go for a walk!

Dalam kasus ini, kita akan keluar berjalan-jalan jika salah satu cuacanya cerah atau kita membawa payung.

Terakhir, operator not membalik nilai kebenaran suatu kondisi:

if not is_sunny:
    print("Maybe we should stay indoors.")

Di sini, pesan dicetak hanya jika tidak cerah.

Operator logika memberi kita cara yang ringkas dan kuat untuk mengekspresikan kondisi kompleks, memungkinkan program mengambil keputusan berdasarkan banyak faktor. Sekarang, mari kita lihat lebih dalam dan mulai dengan operator logika and.

Python: Operator and

Dalam logika Boolean, operasi AND melibatkan perbandingan dua nilai atau ekspresi. Hasilnya bernilai true hanya jika keduanya bernilai true. Jika salah satu atau keduanya bernilai false, hasil operasi AND adalah false. Berikut ringkasan perilaku AND:

Operasi

Nilai keluaran

true AND true

true

true AND false

false

false AND true

false

false AND false

false

Kita dapat merekonstruksi tabel kebenaran ini dengan operator and milik Python:

options = True, False
for a in options:
    for b in options:
        print(f"{a} and {b} gives {a and b}")
True and True gives True
True and False gives False
False and True gives False
False and False gives False

Variabel options berisi dua nilai Boolean. for loop bersarang mengiterasi opsi dua kali untuk membuat semua permutasi True dan False.

Sering kali, ekspresi yang digunakan sebagai operand untuk and mencakup operator perbandingan atau kesetaraan:

names = "James", "Bob", "David", "Jane", "Kate", "Mary"
for name in names:
   if len(name) < 5 and name[0] == "J":
      print(name)
Jane

Nama dicetak hanya jika terdiri dari kurang dari lima huruf dan dimulai dengan "J". Kedua syarat harus terpenuhi.

Operator perbandingan dan kesetaraan, seperti < dan ==, mengevaluasi menjadi True atau False.

Namun, operator and Python bekerja pada tipe data apa pun, bukan hanya Boolean True dan False. Nilai keluarannya juga bisa berupa tipe data apa pun.

Mari jelajahi operator and Python lebih detail di bagian ini. Pertama, kita bahas truthiness.

Python: truthy dan falsy

Setiap objek Python dapat dikonversi ke tipe Boolean menggunakan bool() bawaan. Sebuah objek bersifat truthy jika bool(object) mengembalikan True. Untuk objek falsy, bool(object) mengembalikan False.

Operator and Python melihat truthiness dari operandnya. Jika kedua operand truthy, operator and juga mengembalikan nilai truthy. Jika salah satu atau kedua operand falsy, and mengembalikan nilai falsy. Mari lihat beberapa contoh:

if 42 and "python":
    print("Both operands are truthy")
else:
    print("One or both operands are falsy")
Both operands are truthy

Sekarang, pertimbangkan contoh ini:

if 42 and "":
    print("Both operands are truthy")
else:
    print("One or both operands are falsy")
One or both operands are falsy

Dan mari lihat contoh terakhir ini:

if 0 and "python":
    print("Both operands are truthy")
else:
    print("One or both operands are falsy")
One or both operands are falsy

Tipe numerik, seperti integer dan float, bersifat truthy jika bukan nol dan falsy jika bernilai nol. Sekuens, seperti string, bersifat truthy jika tidak kosong dan falsy jika kosong.

Oleh karena itu, hanya contoh pertama dari tiga contoh di atas yang memenuhi syarat bahwa kedua operand harus truthy agar operator and mengevaluasi menjadi truthy.

Operator and tidak selalu mengembalikan nilai Boolean. Ekspresi yang menyertakan and juga bisa mengevaluasi menjadi salah satu operandnya. Mari dalami ini menggunakan contoh yang sama seperti sebelumnya. Alih-alih menggunakan ekspresi and dalam pernyataan if, kita evaluasi langsung:

print(42 and "python")
print(42 and "")
print(0 and "python")
python

0

Dapatkah Anda melihat apa yang terjadi pada ekspresi-ekspresi ini?

Mari mulai dengan contoh ketiga, yang memiliki 0 dan "python" sebagai dua operand. Operator and mencari dua operand yang truthy. Karena operand pertama adalah 0, itu falsy. Tidak perlu program memeriksa operand kedua karena seluruh ekspresi akan bernilai falsy terlepas dari nilai operand kedua.

Namun, operator and tidak mengembalikan False. Sebagai gantinya, ia mengembalikan operand pertama secara langsung. Karena operand pertama falsy, seluruh ekspresi and mengevaluasi menjadi falsy. Ini tidak menimbulkan masalah di Python, karena dalam situasi yang memerlukan nilai true atau false, Python dapat menggunakan truthiness suatu objek.

Pada contoh pertama, operand pertama adalah 42, yang truthy. Program mengevaluasi operand kedua dan mengembalikannya. Karena operand kedua adalah string "python", yang truthy, seluruh ekspresi mengevaluasi sebagai truthy.

Pada contoh kedua, operand pertama juga 42. Karena truthy, program mengevaluasi dan mengembalikan operand kedua, yaitu string kosong. String kosong bersifat falsy, sehingga keseluruhan ekspresi and mengevaluasi menjadi falsy.

Ketika operand pertama truthy, operator and selalu mengembalikan nilai operand kedua, apakah operand kedua truthy atau falsy.

Ketika operand pertama falsy, Python tidak mengevaluasi operand kedua. Ini disebut short-circuiting, dan merupakan bentuk evaluasi malas. Anda dapat mengonfirmasi ini dengan kode berikut:

0 and 5/0
0

Operand kedua adalah 5/0, yang biasanya akan memunculkan ZeroDivisionError. Namun, ekspresi 5/0 tidak dievaluasi dalam contoh ini karena operand pertama falsy. Pengecualian tidak pernah muncul.

Contoh: Toko Daring untuk Programmer

Mari pertimbangkan contoh sederhana yang mewakili aplikasi dunia nyata. Transaksi di toko daring yang menyediakan barang untuk programmer dicatat dan diakses melalui API. Data dikonversi menjadi daftar dictionary. Setiap item dalam daftar merepresentasikan transaksi dan setiap transaksi adalah dictionary yang berisi informasi terkait:

data = [
{"Item": "Python Book", "Price": 50, "Quantity": 1, "Success": True},
{"Item": "Coffee Machine", "Price": 125, "Quantity": 1, "Success": False},
{"Item": "Headphones", "Price": 250, "Quantity": 1, "Success": True},
{"Item": "Cables", "Price": 15.99, "Quantity": 3, "Success": True},
]

Setiap transaksi menyertakan nama dan harga item, jumlah dalam pesanan, serta apakah transaksinya berhasil.

Anggaplah kita memerlukan transaksi yang berhasil untuk item berharga $100 atau lebih. Kita dapat menggunakan operator and untuk memfilter baris yang kita butuhkan:

for item in data:
    if item["Success"] and item["Price"] >= 100:
        print(item)
{'Item': 'Headphones', 'Price': 250, 'Quantity': 1, 'Success': True}

Keluaran dari kode ini menunjukkan satu-satunya transaksi yang memenuhi kedua persyaratan. Untuk setiap item dalam daftar transaksi, pernyataan if memeriksa truthiness dua ekspresi:

  • Nilai yang terkait dengan kunci "Success" dalam setiap dictionary berupa True atau False.
  • Operator lebih besar dari atau sama dengan pada item["Price"] >= 100 juga mengembalikan True atau False.

Buku Python dan kabel tidak memenuhi persyaratan harga karena di bawah $100. Mesin kopi berada di atas ambang harga ini, tetapi transaksinya tidak berhasil sehingga dikecualikan dari keluaran.

Kita akan kembali ke contoh toko daring ini nanti dalam tutorial.

Pada bagian berikutnya, kita akan berfokus pada operator or.

Python: Operator or

Operator logika OR dalam logika Boolean membutuhkan dua operand. Operator ini mengevaluasi menjadi true jika setidaknya salah satu operand true:

Operasi

Nilai keluaran

true OR true

true

true OR false

true

false OR true

true

false OR false

false

Kita dapat merekonstruksi tabel kebenaran ini menggunakan operator or Python:

options = True, False
for a in options:
    for b in options:
        print(f"{a} or {b} gives {a or b}")
True or True gives True
True or False gives True
False or True gives True
False or False gives False

Kita juga dapat meninjau kembali contoh dengan nama orang yang kita jelajahi sebelumnya tetapi mengganti operator and dengan or:

names = "James", "Bob", "David", "Jane", "Kate", "Mary"
for name in names:
    if len(name) < 5 or name[0] == "J":
        print(name)
James
Bob
Jane
Kate
Mary

Pernyataan if kini berisi ekspresi or. Oleh karena itu, for loop mencetak semua nama yang memiliki kurang dari lima huruf atau dimulai dengan huruf "J". String "Jane" memenuhi kedua persyaratan. Nama lain yang dicetak memenuhi salah satu dari dua persyaratan.

Operator Python or: truthy dan falsy

Operator or juga mencari nilai truthy dan falsy, bukan hanya Boolean True dan False. Mari lihat beberapa contoh:

if 42 or [10, 20, 30]:
    print("At least one operand is truthy")
else:
    print("None of the operands is truthy")
At least one operand is truthy

Sekarang mari pertimbangkan contoh ini:

if 42 or []:
    print("At least one operand is truthy")
else:
    print("None of the operands is truthy")
At least one operand is truthy

Dan mari juga pertimbangkan contoh terakhir ini:

if 0 or []:
    print("At least one operand is truthy")
else:
    print("None of the operands is truthy")
None of the operands is truthy

Pada contoh pertama, integer 42 dan list non-kosong [10, 20, 30] bersifat truthy. Karena operator or membutuhkan setidaknya satu operand truthy, seluruh ekspresi mengevaluasi sebagai truthy.

Pada contoh kedua, 42 truthy tetapi list kosong [] falsy karena merupakan sekuens kosong. Karena salah satu dari dua operand adalah truthy, seluruh ekspresi or mengevaluasi sebagai truthy.

Pada contoh terakhir, baik 0 maupun [] adalah falsy. Oleh karena itu, seluruh ekspresi mengevaluasi sebagai falsy.

Operator or juga menggunakan short-circuit saat mengevaluasi ekspresi untuk menghindari evaluasi yang tidak perlu. Mari lihat beberapa contoh untuk mengilustrasikan hal ini:

print(42 or [10, 20, 30])
print(42 or [])
print([] or 42)
print([] or 0)
42
42
42
0

Pada contoh pertama, operand pertama adalah 42, yang truthy. Karena or hanya memerlukan satu operand truthy untuk menentukan truthiness akhir dari seluruh ekspresi, operand pertama ini langsung dikembalikan. Operand kedua tidak dievaluasi karena nilainya tidak memengaruhi hasil akhir. Operator or mengembalikan operand pertama, 42, bukan Boolean True. Di Python, nilai truthy apa pun memiliki efek yang sama seperti Boolean True dalam situasi seperti pernyataan if dan while.

Pada contoh kedua, operand pertama juga 42, dan ekspresi mengembalikan integer ini meskipun operand kedua falsy.

Pada contoh ketiga dan keempat, operand pertama adalah list kosong, yang falsy. Oleh karena itu, operand kedua dikembalikan pada kedua kasus.

Contoh: Toko Daring untuk Programmer

Mari kita tinjau kembali transaksi dari toko daring yang menjual barang untuk programmer. Berikut empat transaksi contoh yang kita gunakan dalam contoh ini:

data = [
{"Item": "Python Book", "Price": 50, "Quantity": 1, "Success": True},
{"Item": "Coffee Machine", "Price": 125, "Quantity": 1, "Success": False},
{"Item": "Headphones", "Price": 250, "Quantity": 1, "Success": True},
{"Item": "Cables", "Price": 15.99, "Quantity": 3, "Success": True},
]

Anda perlu mengidentifikasi beberapa transaksi untuk menyelidiki perilaku pelanggan lebih lanjut. Anda ingin menemukan transaksi yang gagal atau yang menyertakan item berharga di bawah $75. Karena Anda memiliki dua kondisi dan hanya memerlukan transaksi untuk memenuhi setidaknya salah satunya, Anda dapat menggunakan operator or:

for item in data:
    if item["Success"] == False or item["Price"] < 75:
        print(item)
{'Item': 'Python Book', 'Price': 50, 'Quantity': 1, 'Success': True}
{'Item': 'Coffee Machine', 'Price': 125, 'Quantity': 1, 'Success': False}
{'Item': 'Cables', 'Price': 15.99, 'Quantity': 3, 'Success': True}

for loop ini menampilkan baris yang cocok dengan setidaknya salah satu persyaratan. Buku Python dan kabel disertakan karena harganya di bawah $75. Mesin kopi disertakan karena transaksinya tidak berhasil.

Ada cara alternatif untuk memfilter transaksi yang tidak berhasil, yang akan kita jelajahi pada bagian berikutnya.

Python: Operator not

Operator NOT berbeda dari AND dan OR karena hanya memerlukan satu operand. NOT mengonversi true menjadi false dan sebaliknya. Berikut tabel kebenaran untuk NOT:

Operasi

Nilai keluaran

NOT true

false

NOT false

true

Kita dapat mereplikasi ini menggunakan operator not Python:

options = True, False
    for a in options:
        print(f"not {a} evaluates to {not a}")
not True evaluates to False
not False evaluates to True

Operator Python not: truthy dan falsy

Seperti halnya and dan or, operand yang digunakan dengan not tidak harus Boolean. Karena objek apa pun bersifat truthy atau falsy, objek apa pun dapat digunakan dengan not.

if not "python":
    print("The `if` statement evaluated as `True`")
else:
    print("The `if` statement evaluated as `False`")
The `if` statement evaluated as `False`

Mari juga lihat contoh ini:

if not "":
    print("The `if` statement evaluated as `True`")
else:
    print("The `if` statement evaluated as `False`")
The `if` statement evaluated as `True`

Nilai truthy dikonversi menjadi False dengan operator not dan nilai falsy dikonversi menjadi True.

Berbeda dengan and dan or, operator not selalu mengembalikan objek Boolean:

print(not "python")
print(not "")
False
True

Contoh: Toko Daring untuk Programmer

Pada bagian sebelumnya, kita menggunakan transaksi dari toko daring. Kita ingin menampilkan semua transaksi yang tidak berhasil dalam contoh ini. Salah satu opsi adalah menggunakan operator kesetaraan == untuk memeriksa apakah data["Success"] sama dengan False. Namun, kita juga bisa menggunakan operator not sebagai gantinya:

data = [
{"Item": "Python Book", "Price": 50, "Quantity": 1, "Success": True},
{"Item": "Coffee Machine", "Price": 125, "Quantity": 1, "Success": False},
{"Item": "Headphones", "Price": 250, "Quantity": 1, "Success": True},
{"Item": "Cables", "Price": 15.99, "Quantity": 3, "Success": True},
]
for item in data:
    if not item["Success"]:
        print(item)
{'Item': 'Coffee Machine', 'Price': 125, 'Quantity': 1, 'Success': False}

Karena item["Success"] sama dengan False untuk transaksi yang tidak berhasil, not item["Success"] mengembalikan True. Oleh karena itu, for loop mencetak transaksi yang tidak berhasil:

Pada bagian berikutnya, kita akan mempelajari cara menggabungkan beberapa operator logika dalam satu ekspresi.

Python: Prioritas Operator

Dalam contoh yang ditunjukkan sejauh ini, kita hanya menggunakan satu operator logika di setiap instance. Pada bagian ini, kita akan melihat apa yang terjadi saat kita menggabungkan lebih banyak operator logika dalam satu ekspresi.

Python: and memiliki prioritas dibanding or

Kita akan terus bekerja pada transaksi dari toko daring yang kita gunakan sebelumnya. Mari coba pernyataan kondisional berikut:

data = [
{"Item": "Python Book", "Price": 50, "Quantity": 1, "Success": True},
{"Item": "Coffee Machine", "Price": 125, "Quantity": 1, "Success": False},
{"Item": "Headphones", "Price": 250, "Quantity": 1, "Success": True},
{"Item": "Cables", "Price": 15.99, "Quantity": 3, "Success": True},
]
​
for item in data:
    if item["Price"] > 100 or item["Quantity"] > 2 and item["Success"]:
        print(item)
{'Item': 'Coffee Machine', 'Price': 125, 'Quantity': 1, 'Success': False}
{'Item': 'Headphones', 'Price': 250, 'Quantity': 1, 'Success': True}
{'Item': 'Cables', 'Price': 15.99, 'Quantity': 3, 'Success': True}

Pernyataan if berisi dua operator logika. Sebelum kita menyelidiki bagaimana Python menangani ekspresi ini, mari lihat terjemahan bahasa Inggris dari pernyataan if: Jika harga item di atas $100 atau jumlah yang terjual lebih dari dua dan penjualannya berhasil, maka cetak item tersebut.

Frasa ini ambigu tanpa tanda baca tambahan dan mungkin tetap membingungkan meskipun kita menambahkan lebih banyak koma dalam kalimat. Misalnya, haruskah transaksi dengan mesin kopi disertakan? Harga itemnya di atas ambang yang disyaratkan tetapi transaksinya tidak berhasil.

Python menyelesaikan ambiguitas ini dengan memberikan prioritas pada operator and dibanding operator or. Artinya, ekspresi and dievaluasi terlebih dahulu, dan hasilnya digunakan dalam ekspresi or.

Karena itu, ekspresi item["Quantity"] > 2 and item["Success"] dievaluasi terlebih dahulu. Ekspresi ini mengembalikan nilai truthy hanya untuk transaksi yang menyertakan kabel. Ekspresi ini mengevaluasi sebagai falsy untuk item lainnya.

Nilai dari ekspresi and kemudian digunakan dengan operator or. Ekspresi or mengembalikan nilai truthy untuk item apa pun yang mengembalikan truthy untuk ekspresi and—dalam hal ini hanya transaksi kabel—dan untuk item dengan harga di atas $100. Ada dua item dengan harga di atas ambang: mesin kopi dan headphone.

Python: tanda kurung dan operator logika

Namun, bagaimana jika kita memerlukan transaksi dengan item berharga di atas $100 atau dengan jumlah di atas dua, tetapi kita juga ingin memastikan transaksinya berhasil? Dalam kasus ini, kita ingin ekspresi or memiliki prioritas dibanding and sehingga dievaluasi terlebih dahulu. Kita dapat mencapainya dengan menggunakan tanda kurung di sekeliling ekspresi or:

for item in data:
    if (item["Price"] > 100 or item["Quantity"] > 2) and item["Success"]:
        print(item)
{'Item': 'Headphones', 'Price': 250, 'Quantity': 1, 'Success': True}
{'Item': 'Cables', 'Price': 15.99, 'Quantity': 3, 'Success': True}

Tanda kurung tambahan memberikan prioritas pada ekspresi or. Transaksi mesin kopi tidak lagi disertakan karena mengevaluasi falsy untuk operand and yang kedua.

Python: not memiliki prioritas dibanding and dan or

Operator not memiliki prioritas di atas and dan or. Oleh karena itu, not dievaluasi sebelum dua operator logika lainnya.

Pertimbangkan pernyataan if berikut, yang menyertakan not dan and:

for item in data:
    if not item["Success"] and item["Price"] > 100:
        print(item)
{'Item': 'Coffee Machine', 'Price': 125, 'Quantity': 1, 'Success': False}

Karena not dievaluasi terlebih dahulu, ekspresi ini akan terlebih dahulu menerapkan operator not pada item["Success"]. Nilai dari ekspresi not kemudian digunakan sebagai operand pertama dalam ekspresi and. Hanya entri mesin kopi yang memenuhi kondisi ini—ini satu-satunya transaksi yang gagal dan harganya di atas $100.

Namun, kita dapat memberikan prioritas pada operator and dengan menggunakan tanda kurung:

for item in data:
    if not (item["Success"] and item["Price"] > 100):
        print(item)
{'Item': 'Python Book', 'Price': 50, 'Quantity': 1, 'Success': True}
{'Item': 'Coffee Machine', 'Price': 125, 'Quantity': 1, 'Success': False}
{'Item': 'Cables', 'Price': 15.99, 'Quantity': 3, 'Success': True}

Dalam kasus ini, ekspresi and dievaluasi terlebih dahulu. Hanya entri dengan headphone yang mengevaluasi menjadi True karena itu satu-satunya transaksi yang berhasil dengan harga di atas $100. Namun, kita menambahkan operator not sebelum ekspresi dalam tanda kurung. Oleh karena itu, kode mengeluarkan tiga transaksi lainnya.

Secara umum, jika sebuah ekspresi menjadi terlalu kompleks karena memiliki terlalu banyak operator, sebaiknya dipecah agar lebih mudah dibaca.

Kesimpulan

Operator logika Python and, or, dan not digunakan secara luas dalam beragam aplikasi pemrograman dan data science. Operator ini mereplikasi perilaku operator logika Boolean AND, OR, dan NOT yang digunakan luas dalam logika dan matematika.

Namun, operator Python dapat menerima objek apa pun, bukan hanya nilai Boolean. Operator and dan or menggunakan evaluasi short-circuit dan mengembalikan salah satu operand sebagai keluaran.

Operator logika Python adalah alat kunci untuk memfilter data, mengidentifikasi fitur dalam himpunan data, dan membuat aturan kompleks untuk mengendalikan alur program. Jika Anda ingin mempelajari lebih lanjut tentang ini, lihat jalur karier sembilan kursus Data Analyst With Python ini.

Stephen Gruppetta

Penulis

Stephen Gruppetta

Saya belajar Fisika dan Matematika pada tingkat sarjana di University of Malta. Kemudian, saya pindah ke London dan meraih gelar PhD dalam bidang Fisika dari Imperial College. Saya meneliti teknik optik baru untuk memindai retina manusia. Sekarang, saya berfokus menulis tentang Python, berkomunikasi tentang Python, dan mengajar Python.

FAQ Operator Logika Python

Bisakah saya menggunakan operator and untuk menguji beberapa kondisi sekaligus?

Ya, Anda dapat merangkai beberapa kondisi sekaligus menggunakan operator and. Contohnya: if x > 5 and x < 10 and x != 7.

Apa perbedaan antara operator and dan operator AND bitwise (&)?

Operator and melakukan operasi AND logika pada nilai Boolean, mengembalikan True hanya jika kedua operand True. Operator AND bitwise (&) melakukan operasi AND bitwise pada representasi biner dari nilai integer.

Apakah Python memiliki operator && dan || seperti beberapa bahasa lain?

Tidak, Python menggunakan keyword and dan or alih-alih simbol && dan || untuk operasi logika.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026