Operator dan ekspresi

Operator aritmetika, perbandingan berantai, dan prioritas operator pada ekspresi Python.

Daftar isi

Ekspresi adalah kombinasi nilai dan operator yang menghasilkan nilai baru, dan hampir setiap baris Python memuatnya. Topik ini merangkum operator aritmetika beserta perilaku pembagiannya, memperkenalkan perbandingan berantai yang khas Python, lalu membahas cara membaca prioritas operator pada ekspresi campuran. Penguasaan ketiganya membuat ekspresi panjang sekalipun terbaca dengan tepat.

Operator aritmetika#

Python menyediakan tujuh operator aritmetika dasar. Operator adalah tanda yang mengolah nilai di sebelah kiri dan kanannya menjadi satu nilai hasil. Tabel berikut merangkum semuanya beserta contoh dan hasilnya.

OperatorNamaContohHasil
+penjumlahan7 + 310
-pengurangan7 - 34
*perkalian7 * 321
/pembagian7 / 23.5
//pembagian lantai7 // 23
%sisa pembagian7 % 21
**perpangkatan2 ** 101024
python
print(7 + 3, 7 - 3, 7 * 3)
print(7 / 2, 7 // 2, 7 % 2)
print(2 ** 10)
text Keluaran
10 4 21
3.5 3 1
1024

Perhatikan tiga operator pembagian yang berdampingan pada baris kedua. Pembagian biasa / menghasilkan float, pembagian lantai // membulatkan hasilnya ke bawah, dan % menyisakan bagian yang tidak habis dibagi. Ketiganya menjawab pertanyaan yang berbeda atas angka yang sama, yaitu hasil bagi, pembulatan hasil bagi, dan sisanya.

Pembagian lantai dan sisa pembagian#

Pembagian lantai (floor division) membulatkan hasil ke bilangan bulat terdekat di bawahnya. Untuk bilangan positif, 7 // 2 bernilai 3 karena 3 adalah bilangan bulat terbesar yang tidak melebihi 3.5. Pada bilangan negatif, ke bawah berarti menjauh dari nol, sehingga -7 // 2 bernilai -4 dan bukan -3. Sisa pembagian % melengkapi pasangan ini dengan aturan yang konsisten: tandanya mengikuti pembaginya.

python
print(7 // 2, 7 % 2)
print(-7 // 2, -7 % 2)
text Keluaran
3 1
-4 1

Pasangan // dan % paling sering dipakai untuk konversi satuan. Contoh berikut memecah 135 detik menjadi menit dan sisa detiknya, dua nilai yang saling melengkapi dari satu pembagian yang sama.

python
total_detik = 135
menit = total_detik // 60
sisa_detik = total_detik % 60
print(menit, "menit", sisa_detik, "detik")
text Keluaran
2 menit 15 detik

Pola konversi yang sama dipakai untuk menghitung jam, hari, maupun pembagian rata daftar piket. Yang berubah hanya pembaginya, sedangkan pasangan // dan % tetap dipakai.

Perbandingan dan perbandingan berantai#

Operator perbandingan menguji hubungan dua nilai dan menghasilkan bool, yaitu True atau False. Python menambahkan satu bentuk yang jarang dimiliki bahasa lain: perbandingan berantai. Tulisan 1 < x < 10 bernilai True apabila x lebih besar dari 1 dan lebih kecil dari 10 sekaligus, sebagaimana notasi rentang pada matematika.

python
nilai = 78
print(0 <= nilai <= 100)
print(0 <= nilai and nilai <= 100)
x = 7
print(1 < x < 10)
print(10 < x < 20)
text Keluaran
True
True
True
False

Rentang 0 sampai 100 pada dua baris pertama adalah pola lazim untuk memeriksa validitas nilai ujian. Bentuk berantai menghasilkan jawaban yang sama dengan bentuk and, tetapi lebih ringkas dan terbaca alami. Setiap sambungan pada rantai diperiksa berurutan, dan pemeriksaan berhenti segera setelah satu sambungan gagal.

Prioritas dan asosiativitas operator#

Ketika beberapa operator muncul dalam satu ekspresi, Python mengeksekusinya menurut tingkat prioritas (precedence). Urutannya dari yang tertinggi: perpangkatan **, lalu perkalian, pembagian, pembagian lantai, dan sisa pembagian, kemudian penjumlahan dan pengurangan, dan terakhir operator perbandingan. Operator dengan prioritas setara dieksekusi dari kiri ke kanan, kecuali ** yang bekerja dari kanan ke kiri.

python
print(2 + 3 * 4)
print((2 + 3) * 4)
print(-3 ** 2)
print((-3) ** 2)
print(2 ** 3 ** 2)
text Keluaran
14
20
-9
9
512

Hasil 14 menunjukkan perkalian mendahului penjumlahan, sedangkan tanda kurung pada baris kedua mengubah urutan itu menjadi 20. Baris ketiga menghasilkan -9 karena ** diproses lebih dahulu, sehingga ekspresinya dibaca sebagai -(3 ** 2). Untuk memangkatkan bilangan negatif, kurunglah basisnya agar hasilnya 9. Baris terakhir dievaluasi dari kanan menjadi 2 ** 9, yaitu 512, bukan 64 dari pembacaan kiri.

Ringkasan#

  • Tujuh operator aritmetika dasar adalah +, -, *, /, //, %, dan **, dengan / yang selalu menghasilkan float.
  • Pembagian lantai membulatkan ke bawah dan sisa pembagian mengikuti tanda pembagi, sehingga keduanya cocok dipasangkan untuk konversi satuan.
  • Perbandingan berantai seperti 1 < x < 10 setara dengan penggabungan and tetapi lebih ringkas dan terbaca alami.
  • Prioritas menentukan urutan eksekusi, perpangkatan bersifat kanan ke kiri, dan tanda kurung mengubah urutan sekaligus memperjelas maksud.

Referensi#