Keputusan dalam program jarang hanya bergantung pada satu kondisi. Toko boleh menerima pesanan hanya jika statusnya “buka” dan stok masih tersedia; pengguna dianggap aktif jika sedang login atau baru saja berinteraksi. Operator logika and, or, dan not adalah alat Python untuk menggabungkan beberapa kondisi menjadi satu kesimpulan.

Tiga Operator Logika #

Operator and menghasilkan True hanya jika kedua operan bernilai True. Operator or menghasilkan True jika minimal salah satu operan bernilai True. Operator not membalik nilai kebenaran operannya. Berikut tabel kebenaran lengkapnya:

xyx and yx or y
TrueTrueTrueTrue
TrueFalseFalseTrue
FalseTrueFalseTrue
FalseFalseFalseFalse

Untuk not, tabelnya singkat: not True menghasilkan False dan not False menghasilkan True. Mari kita pastikan seluruh baris tabel tersebut dengan REPL:

python
>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> False and False
False
>>> True or True
True
>>> True or False
True
>>> False or True
True
>>> False or False
False
>>> not True
False
>>> not False
True

Nilai Balik and dan or: Operan, Bukan bool #

Berbeda dari banyak bahasa pemrograman lain, and dan or pada Python tidak selalu menghasilkan bool. Kedua operator tersebut mengembalikan salah satu operannya apa adanya:

python
>>> 5 and 2
2
>>> 0 and 5
0
>>> 5 or 2
5
>>> 0 or 5
5
>>> "halo" and "dunia"
'dunia'
>>> "" or "nilai cadangan"
'nilai cadangan'
>>> not 5
False
>>> not ""
True

Mekanismenya bekerja seperti ini: interpreter Python mengevaluasi x and y dengan membaca x terlebih dahulu — jika x bernilai falsy, x dikembalikan apa adanya; jika x bernilai truthy, y yang dikembalikan. Aturan x or y kebalikannya: x dikembalikan jika truthy, selain itu y yang dikembalikan. Hanya not yang selalu menghasilkan bool.

Konsekuensinya terlihat pada 5 and 2: angka 5 truthy sehingga 2 yang dikembalikan. Pada "" or "nilai cadangan", string kosong "" falsy sehingga string kedua yang dikembalikan.

Logika dalam Konteks #

Sekarang kita terapkan ketiga operator pada kasus nyata: menentukan apakah sebuah pesanan boleh diproses:

python
status_toko = "buka"
stok_barang = 3

bisa_memesan = status_toko == "buka" and stok_barang > 0
print("Bisa memesan:", bisa_memesan)

stok_barang = 0
bisa_memesan = status_toko == "buka" and stok_barang > 0
print("Bisa memesan:", bisa_memesan)

Output yang Dihasilkan:

text
Bisa memesan: True
Bisa memesan: False

Mari kita telaah apa yang terjadi pada baris-baris kode di atas:

  1. Baris 1-2 (status_toko = "buka"): variabel status_toko dan stok_barang menyimpan kondisi toko saat ini.
  2. Baris 4 (status_toko == "buka" and stok_barang > 0): perbandingan dievaluasi lebih dulu, lalu hasil keduanya digabungkan dengan and. Karena "buka" == "buka" bernilai True dan 3 > 0 bernilai True, variabel bisa_memesan menerima True.
  3. Baris 7 (stok_barang = 0): stok diperbarui menjadi nol.
  4. Baris 8-9: kondisi pertama tetap True, tetapi 0 > 0 bernilai False sehingga and menghasilkan False.

Urutan Evaluasi dan Tanda Kurung #

Saat and, or, dan not digabung dalam satu ekspresi, not dievaluasi paling dulu, lalu and, terakhir or. Ekspresi not aktif or valid oleh karena itu berarti (not aktif) or valid, bukan not (aktif or valid).