Operator adalah tanda yang mengolah nilai: menjumlah, membagi, membandingkan. Bayangin Pak Darto menata 17 gelas kopi ke nampan yang muat 5 gelas. Pertanyaannya ada tiga: kalau dibagi rata, satu nampan dapat berapa? Berapa nampan yang penuh? Berapa gelas yang tersisa? Di Python, tiga pertanyaan itu dijawab tiga operator yang berbeda: /, //, dan %.
🧪 Tebakan cepat:
print(10 / 5)menulis2atau2.0? Tebak dulu, jawabannya ada di bagian "Tiga cara membagi".
Operator aritmatika
| Operator | Artinya | Contoh | Hasil |
|---|---|---|---|
+ |
tambah | 15000 + 5000 |
20000 |
- |
kurang | 50000 - 45000 |
5000 |
* |
kali | 15000 * 3 |
45000 |
/ |
bagi | 17 / 5 |
3.4 |
// |
bagi, dibulatkan ke bawah (floor division) | 17 // 5 |
3 |
% |
sisa bagi (modulo) | 17 % 5 |
2 |
** |
pangkat | 2 ** 8 |
256 |
Urutannya seperti di matematika: ** dulu, lalu *, /, //, %, baru + dan -. Jadi 2 + 3 * 4 hasilnya 14, dan (2 + 3) * 4 hasilnya 20.
Tiga cara membagi
gelas = 17
per_nampan = 5
print(gelas / per_nampan) # 3.4
print(gelas // per_nampan) # 3, nampan yang penuh
print(gelas % per_nampan) # 2, gelas yang tersisa
print(10 / 5) # 2.0
/selalu menghasilkanfloat, bahkan kalau hasilnya pas. Jadi10 / 5menulis2.0, bukan2. Itu jawaban tebakannya.//membagi lalu membuang bagian di belakang koma dengan membulatkan ke bawah. Duaintmenghasilkanint:17 // 5jadi3.%memberi sisa baginya:17 % 5jadi2. Cek: 3 nampan × 5 gelas + 2 gelas = 17.%juga cara mengecek genap: angka genap sisanya 0 kalau dibagi 2, jadi8 % 2adalah0dan7 % 2adalah1.
10 / 3 menulis 3.3333333333333335. Float disimpan dalam biner dengan sekitar 16 digit, jadi digit terakhirnya bisa "aneh". Itu bukan error, memang begitu Python menulis hasil itu.
Pangkat itu **, bukan ^
2 ** 8 artinya 2 dipangkatkan 8, hasilnya 256. Tanda ^ di Python artinya hal lain (XOR, operasi pada bit), jadi 2 ^ 8 hasilnya 10, tanpa error. Satu lagi: -2 ** 2 hasilnya -4, karena pangkat dihitung sebelum tanda minus. Tulis (-2) ** 2 kalau maksudnya 4.
Bilangan negatif: // membulatkan ke bawah
print(-17 / 5) # -3.4
print(-17 // 5) # -4
print(-17 % 5) # 3
- "Ke bawah" artinya ke angka yang lebih kecil di garis bilangan. Dari -3,4, ke bawah itu -4, bukan -3.
%lalu menyesuaikan supaya tetap pas: 5 × -4 + 3 = -17. Di Python, hasil%ikut tanda pembaginya, jadi selalu 0 sampai 4 kalau pembaginya 5.- Beda dengan JavaScript: di JS
-17 % 5hasilnya-2.
Float gak selalu pas
print(0.1 + 0.2) # 0.30000000000000004
print(0.1 + 0.2 == 0.3) # False
print(89000 / 3) # 29666.666666666668
Komputer menyimpan float dalam biner, dan 0,1 gak bisa disimpan persis, sama seperti 1/3 gak bisa ditulis persis dalam desimal. Karena itu harga dan uang di kasir disimpan sebagai int rupiah: 15000, bukan 15.0 ribu. Hasil bagi seperti tagihan Rp89.000 untuk 3 orang dirapikan saat ditampilkan, caranya ada di pelajaran string.
Perbandingan dan logika
total = 89000
print(total >= 50000) # True
print(total >= 50000 and total < 100000) # True
print(total < 50000 or total > 100000) # False
print(not total >= 50000) # False
- Perbandingan menghasilkan
bool:==sama dengan,!=tidak sama dengan,<,>,<=,>=. andbernilaiTruekalau dua-duanyaTrue,orkalau salah satunya,notmembalik.=menempel nilai ke nama,==membandingkan."5" == 5hasilnyaFalse, karena teks dan angka gak pernah sama.
📌 Walrus :=
Operator := (Python 3.8 ke atas) menempel nilai ke nama sekaligus memakai nilai itu di tempat yang sama:
data = [1, 2, 3, 4, 5]
if (n := len(data)) > 3:
print(n) # 5
[1, 2, 3, 4, 5]adalah list, daftar nilai, danlen(data)menghitung isinya: 5.(n := len(data))menyimpan 5 kendan langsung membandingkannya dengan 3. Karena5 > 3bernilaiTrue, baris di bawahifjalan dan mencetak5. (ifdibahas lengkap di pelajaran If, Elif, Else.)
⚠️ Jebakan yang sering ketemu
^dikira pangkat.2 ^ 8hasilnya10, bukan256, dan gak ada error yang memberi tahu. Pangkat selalu**.- Mengira
/menghasilkanint.10 / 5adalah2.0. Butuh bilangan bulat? Pakai//. - Membandingkan float dengan
==.0.1 + 0.2 == 0.3hasilnyaFalse. Simpan uang sebagaiintrupiah. =di dalam syarat.if total = 50000:ditolak denganSyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
TL;DR: + - * seperti biasa, ** untuk pangkat (2 ** 8 = 256, ^ itu XOR). Membagi ada tiga: / selalu float (10 / 5 = 2.0, 10 / 3 = 3.3333333333333335), // membulatkan ke bawah (17 // 5 = 3, -17 // 5 = -4), dan % memberi sisanya (17 % 5 = 2). Float gak selalu pas (0.1 + 0.2 = 0.30000000000000004), jadi uang disimpan sebagai int. Perbandingan menghasilkan True/False, digabung dengan and, or, not. Walrus := menyimpan nilai sekaligus memakainya.