Sebelum sebuah program bisa mengambil keputusan, program tersebut harus bisa menjawab pertanyaan sederhana: apakah nilai ini lebih besar dari nilai itu, apakah dua data sama, apakah stok sudah di bawah batas. Operator perbandingan adalah alat Python untuk menjawab pertanyaan-pertanyaan tersebut. Setiap ekspresi perbandingan selalu menghasilkan nilai bool: True atau False.

Enam Operator Perbandingan #

OperatorArtiContohHasil
==Sama dengan5 == 5.0True
!=Tidak sama dengan5 != 3True
<Lebih kecil dari3 < 5True
>Lebih besar dari3 > 5False
<=Lebih kecil atau sama5 <= 5True
>=Lebih besar atau sama3 >= 5False

Mari kita pakai operator tersebut untuk menilai hasil ujian:

python
nilai_ujian = 78
batas_lulus = 75

print(nilai_ujian >= batas_lulus)
print(nilai_ujian == 100)
print(nilai_ujian != batas_lulus)
print(nilai_ujian > 90)

Output yang Dihasilkan:

text
True
False
True
False

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

  1. Baris 1-2 (nilai_ujian = 78): variabel nilai_ujian menyimpan nilai yang akan dinilai, sedangkan batas_lulus menyimpan ambang kelulusan.
  2. Baris 4 (nilai_ujian >= batas_lulus): interpreter Python membandingkan 78 dengan 75; karena 78 lebih besar atau sama dengan 75, hasilnya True.
  3. Baris 5-6 (nilai_ujian == 100 dan !=): operator == menguji kesamaan nilai, sedangkan != menguji ketidaksamaan.
  4. Baris 7 (nilai_ujian > 90): 78 tidak lebih besar dari 90, sehingga hasilnya False.

Membandingkan Nilai Lintas Tipe #

Operator == membandingkan kesetaraan nilai. Angka dibandingkan secara numerik tanpa memedulikan tipe, sedangkan string membandingkan isi huruf dengan persis (case-sensitive):

python
>>> 5 == 5.0
True
>>> "budi" == "Budi"
False
>>> [1, 2, 3] == [1, 2, 3]
True
>>> "10" == 10
False

Perhatikan kasus "10" == 10: string "10" dan angka 10 tidak pernah dianggap sama karena keduanya bertipe berbeda. Python tidak melakukan konversi otomatis antara string dan angka — konversi harus kita lakukan sendiri menggunakan int() atau float() sebagaimana dibahas pada Chapter Type Conversion.

Chained Comparison #

Python memungkinkan perbandingan berantai dalam satu ekspresi, mirip penulisan matematika:

python
>>> umur = 25
>>> 18 <= umur < 60
True
>>> 30 < umur < 60
False
>>> 18 <= umur < 24
False
>>> (18 <= umur) and (umur < 60)
True

Perhatikan dua ekspresi terakhir: 18 <= umur < 60 dan (18 <= umur) and (umur < 60) menghasilkan nilai yang sama. Secara teknis, interpreter Python mengevaluasi 18 <= umur < 60 sebagai 18 <= umur and umur < 60 — kedua perbandingan digabungkan secara implisit dengan and. Nilai umur hanya dibaca sekali dan tidak dievaluasi dua kali, sehingga bentuk berantai lebih efisien sekaligus lebih mudah dibaca.

Presisi Float dan Jebakan == #

Membandingkan hasil operasi float dengan == bisa menghasilkan kejutan:

python
>>> 0.1 + 0.2 == 0.3
False
>>> 0.1 + 0.2
0.30000000000000004

Nilai 0.1 + 0.2 tidak tepat sama dengan 0.3 karena bilangan float disimpan dalam representasi biner 64-bit yang tidak bisa merepresentasikan 0.1 secara persis.

Preview: == vs is #

Terakhir, mari kita intip satu pembedaan penting yang sering membingungkan pemula:

python
>>> daftar_a = [1, 2, 3]
>>> daftar_b = [1, 2, 3]
>>> daftar_a == daftar_b
True
>>> daftar_a is daftar_b
False

Operator == membandingkan isi kedua list dan menyatakan keduanya sama. Operator is menjawab pertanyaan berbeda: apakah daftar_a dan daftar_b merujuk ke object yang sama di memori. Dua list dengan isi identik tetap dua object terpisah, sehingga is menghasilkan False. Kita akan bedah tuntas perilaku is pada Chapter Operator Identity.