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.
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!")Didukung oleh
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.")Didukung oleh
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 inoptions:for b inoptions:print(f"{a} and {b} gives {a and b}")Didukung oleh
True and True gives True
True and False gives False
False and True gives False
False and False gives False
Didukung oleh
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 innames:iflen(name)<5 and name[0]=="J":print(name)Didukung oleh
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:
if42and"python":print("Both operands are truthy")else:print("One or both operands are falsy")Didukung oleh
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")Didukung oleh
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:
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},]Didukung oleh
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 indata:if item["Success"] and item["Price"]>=100:print(item)Didukung oleh
{'Item': 'Headphones', 'Price': 250, 'Quantity': 1, 'Success': True}Didukung oleh
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 inoptions:for b inoptions:print(f"{a} or {b} gives {a or b}")Didukung oleh
True or True gives True
True or False gives True
False or True gives True
False or False gives False
Didukung oleh
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 innames:iflen(name)<5 or name[0]=="J":print(name)Didukung oleh
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:
if42 or [10,20,30]:print("At least one operand is truthy")else:print("None of the operands is truthy")Didukung oleh
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)Didukung oleh
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},]Didukung oleh
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 indata:if item["Success"]== False or item["Price"]<75:print(item)Didukung oleh
{'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}Didukung oleh
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 inoptions:print(f"not {a} evaluates to {not a}")Didukung oleh
not True evaluates to False
not False evaluates to True
Didukung oleh
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`")Didukung oleh
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 indata:if not item["Success"]:print(item)Didukung oleh
{'Item':'Coffee Machine','Price':125,'Quantity':1,'Success': False}Didukung oleh
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 indata:if item["Price"]>100 or item["Quantity"]>2 and item["Success"]:print(item)Didukung oleh
{'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}Didukung oleh
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 indata:if(item["Price"]>100 or item["Quantity"]>2) and item["Success"]:print(item)Didukung oleh
{'Item':'Headphones','Price':250,'Quantity':1,'Success': True}{'Item':'Cables','Price':15.99,'Quantity':3,'Success': True}Didukung oleh
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 indata:if not item["Success"] and item["Price"]>100:print(item)Didukung oleh
{'Item':'Coffee Machine','Price':125,'Quantity':1,'Success': False}Didukung oleh
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 indata:ifnot(item["Success"] and item["Price"]>100):print(item)Didukung oleh
{'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}Didukung oleh
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.
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.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Tingkatkan keterampilan pemrograman Anda. Pelajari cara mengoptimalkan kode, menulis fungsi dan tes, serta menggunakan teknik rekayasa perangkat lunak terbaik.
Pelajari dasar-dasar kecerdasan buatan (AI), pelajari cara memanfaatkan AI secara efektif untuk pekerjaan, dan jelajahi model seperti ChatGPT untuk memahami lanskap AI yang dinamis.
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, dannot.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:
Di sini, operator and memastikan bahwa pesan dicetak hanya jika
keduakondisi terpenuhi: suhu di atas 20 derajatdancuacanya cerah.Mari lihat contoh lain menggunakan operator
or:Dalam kasus ini, kita akan keluar berjalan-jalan jika salah satu cuacanya cerah atau kita membawa payung.
Terakhir, operator
notmembalik nilai kebenaran suatu kondisi: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
andDalam 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
andmilik Python:Variabel
optionsberisi dua nilai Boolean.forloop bersarang mengiterasi opsi dua kali untuk membuat semua permutasiTruedanFalse.Sering kali, ekspresi yang digunakan sebagai operand untuk and mencakup operator perbandingan atau kesetaraan:
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 menjadiTrueatauFalse.Namun, operator
andPython bekerja pada tipe data apa pun, bukan hanya BooleanTruedanFalse. Nilai keluarannya juga bisa berupa tipe data apa pun.Mari jelajahi operator
andPython 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 jikabool(object)mengembalikanTrue. Untuk objek falsy,bool(object)mengembalikanFalse.Operator
andPython melihat truthiness dari operandnya. Jika kedua operand truthy, operatorandjuga mengembalikan nilai truthy. Jika salah satu atau kedua operand falsy,andmengembalikan nilai falsy. Mari lihat beberapa contoh:Sekarang, pertimbangkan contoh ini:
Dan mari lihat contoh terakhir ini:
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
andmengevaluasi menjadi truthy.Operator
andtidak selalu mengembalikan nilai Boolean. Ekspresi yang menyertakanandjuga bisa mengevaluasi menjadi salah satu operandnya. Mari dalami ini menggunakan contoh yang sama seperti sebelumnya. Alih-alih menggunakan ekspresianddalam pernyataanif, kita evaluasi langsung:Dapatkah Anda melihat apa yang terjadi pada ekspresi-ekspresi ini?
Mari mulai dengan contoh ketiga, yang memiliki
0dan"python"sebagai dua operand. Operatorandmencari dua operand yang truthy. Karena operand pertama adalah0, itu falsy. Tidak perlu program memeriksa operand kedua karena seluruh ekspresi akan bernilai falsy terlepas dari nilai operand kedua.Namun, operator
andtidak mengembalikanFalse. Sebagai gantinya, ia mengembalikan operand pertama secara langsung. Karena operand pertama falsy, seluruh ekspresiandmengevaluasi 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 ekspresiandmengevaluasi menjadi falsy.Ketika operand pertama truthy, operator
andselalu 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:
Operand kedua adalah
5/0, yang biasanya akan memunculkanZeroDivisionError. Namun, ekspresi5/0tidak 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:
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
anduntuk memfilter baris yang kita butuhkan:Keluaran dari kode ini menunjukkan satu-satunya transaksi yang memenuhi kedua persyaratan. Untuk setiap item dalam daftar transaksi, pernyataan
ifmemeriksa truthiness dua ekspresi:"Success"dalam setiap dictionary berupaTrueatauFalse.item["Price"] >= 100juga mengembalikanTrueatauFalse.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
orOperator 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
orPython:Kita juga dapat meninjau kembali contoh dengan nama orang yang kita jelajahi sebelumnya tetapi mengganti operator
anddenganor:Pernyataan
ifkini berisi ekspresior. Oleh karena itu,forloop 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 falsyOperator or juga mencari nilai truthy dan falsy, bukan hanya Boolean
TruedanFalse. Mari lihat beberapa contoh:Sekarang mari pertimbangkan contoh ini:
Dan mari juga pertimbangkan contoh terakhir ini:
Pada contoh pertama, integer
42dan list non-kosong[10, 20, 30]bersifat truthy. Karena operatorormembutuhkan setidaknya satu operand truthy, seluruh ekspresi mengevaluasi sebagai truthy.Pada contoh kedua,
42truthy 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
0maupun[]adalah falsy. Oleh karena itu, seluruh ekspresi mengevaluasi sebagai falsy.Operator
orjuga menggunakan short-circuit saat mengevaluasi ekspresi untuk menghindari evaluasi yang tidak perlu. Mari lihat beberapa contoh untuk mengilustrasikan hal ini:Pada contoh pertama, operand pertama adalah
42, yang truthy. Karenaorhanya 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 BooleanTrue. Di Python, nilai truthy apa pun memiliki efek yang sama seperti BooleanTruedalam situasi seperti pernyataanifdanwhile.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:
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:forloop 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
notOperator 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
notPython:Operator Python
not: truthy dan falsySeperti halnya
anddanor, operand yang digunakan dengannottidak harus Boolean. Karena objek apa pun bersifat truthy atau falsy, objek apa pun dapat digunakan dengannot.Mari juga lihat contoh ini:
Nilai truthy dikonversi menjadi
Falsedengan operatornotdan nilai falsy dikonversi menjadiTrue.Berbeda dengan
anddanor, operatornotselalu mengembalikan objek Boolean: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 apakahdata["Success"]sama denganFalse. Namun, kita juga bisa menggunakan operatornotsebagai gantinya:Karena
item["Success"]sama denganFalseuntuk transaksi yang tidak berhasil, notitem["Success"]mengembalikanTrue. 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:
andmemiliki prioritas dibandingorKita akan terus bekerja pada transaksi dari toko daring yang kita gunakan sebelumnya. Mari coba pernyataan kondisional berikut:
Pernyataan
ifberisi dua operator logika. Sebelum kita menyelidiki bagaimana Python menangani ekspresi ini, mari lihat terjemahan bahasa Inggris dari pernyataanif: 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
anddibanding operatoror. Artinya, ekspresianddievaluasi terlebih dahulu, dan hasilnya digunakan dalam ekspresior.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. Ekspresiormengembalikan nilai truthy untuk item apa pun yang mengembalikan truthy untuk ekspresiand—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
ormemiliki prioritas dibandingandsehingga dievaluasi terlebih dahulu. Kita dapat mencapainya dengan menggunakan tanda kurung di sekeliling ekspresior:Tanda kurung tambahan memberikan prioritas pada ekspresi
or. Transaksi mesin kopi tidak lagi disertakan karena mengevaluasi falsy untuk operandandyang kedua.Python:
notmemiliki prioritas dibandinganddanorOperator
notmemiliki prioritas di atasanddanor. Oleh karena itu,notdievaluasi sebelum dua operator logika lainnya.Pertimbangkan pernyataan if berikut, yang menyertakan
notdanand:Karena
notdievaluasi terlebih dahulu, ekspresi ini akan terlebih dahulu menerapkan operator not padaitem["Success"]. Nilai dari ekspresinotkemudian 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
anddengan menggunakan tanda kurung:Dalam kasus ini, ekspresi
anddievaluasi terlebih dahulu. Hanya entri dengan headphone yang mengevaluasi menjadiTruekarena itu satu-satunya transaksi yang berhasil dengan harga di atas $100. Namun, kita menambahkan operatornotsebelum 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, dannotdigunakan 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
anddanormenggunakan 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.