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 #
| Operator | Arti | Contoh | Hasil |
|---|---|---|---|
== | Sama dengan | 5 == 5.0 | True |
!= | Tidak sama dengan | 5 != 3 | True |
< | Lebih kecil dari | 3 < 5 | True |
> | Lebih besar dari | 3 > 5 | False |
<= | Lebih kecil atau sama | 5 <= 5 | True |
>= | Lebih besar atau sama | 3 >= 5 | False |
Mari kita pakai operator tersebut untuk menilai hasil ujian:
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:
True
False
True
FalseMari kita telaah apa yang terjadi pada baris-baris kode di atas:
- Baris 1-2 (
nilai_ujian = 78): variabelnilai_ujianmenyimpan nilai yang akan dinilai, sedangkanbatas_lulusmenyimpan ambang kelulusan. - Baris 4 (
nilai_ujian >= batas_lulus): interpreter Python membandingkan78dengan75; karena78lebih besar atau sama dengan75, hasilnyaTrue. - Baris 5-6 (
nilai_ujian == 100dan!=): operator==menguji kesamaan nilai, sedangkan!=menguji ketidaksamaan. - Baris 7 (
nilai_ujian > 90):78tidak lebih besar dari90, sehingga hasilnyaFalse.
Membandingkan Nilai Lintas Tipe #
Operator == membandingkan kesetaraan nilai. Angka dibandingkan secara numerik tanpa memedulikan tipe, sedangkan string membandingkan isi huruf dengan persis (case-sensitive):
>>> 5 == 5.0
True
>>> "budi" == "Budi"
False
>>> [1, 2, 3] == [1, 2, 3]
True
>>> "10" == 10
FalsePerhatikan 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:
>>> umur = 25
>>> 18 <= umur < 60
True
>>> 30 < umur < 60
False
>>> 18 <= umur < 24
False
>>> (18 <= umur) and (umur < 60)
TruePerhatikan 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:
>>> 0.1 + 0.2 == 0.3
False
>>> 0.1 + 0.2
0.30000000000000004Nilai 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:
>>> daftar_a = [1, 2, 3]
>>> daftar_b = [1, 2, 3]
>>> daftar_a == daftar_b
True
>>> daftar_a is daftar_b
FalseOperator == 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.