Operator dan Ekspresi¶
Hampir semua statemen (baris logis) yang Anda tulis akan mengandung ekspresi.
Contoh sederhana dari ekspresi adalah 2+3. Sebuah ekspresi dapat diturunkan
menjadi operator dan operand.
Operator adalah fungsi yang menjalankan sesuatu dan direpresentasikan oleh simbol,
seperti + atau kata kunci khusus. Operator membutuhkan data untuk dioperasikan dan
data ini disebut operand. Dalam kasus ini 2 dan 3 adalah operand.
Operator¶
Kita akan melihat operator secara singkat dan bagaimana penggunaannya:
| Operator | Keterangan |
|---|---|
| + | Menambahkan dua obyek |
| - | Mengurangi obyek dengan obyek yang lain |
| * | Perkalian |
| ** | Pangkat |
| / | Pembagian |
| // | Pembagian bulat ke bawah |
| % | Sisa hasil bagi (modulus) |
| << | (geser kiri) Menggeser bit ke sebelah kiri sesuai dengan jumlah bit yang ditentukan.
|
| >> | (geser kanan) Menggeser bit ke sebelah kanan sesuai dengan jumlah bit yang ditentukan.
|
| & | (bit-wise AND) Operasi bit-wise AND dari angka (bit-wise adalah operasi angka
berbasis bit yakni dengan |
| | | (bit-wise OR) Operasi bit-wise OR dari angka. |
| ^ | (bit-wise XOR) Operasi bit-wise XOR (ekslusif OR). |
| ~ | (bit-wise invert) Operasi membalikkan angka bitwise dari |
| < | (kurang dari) Mengembalikan apakah x kurang dari y. Semua operator pembanding
mengembalikan |
| > | (lebih dari) Mengembalikan apakah x lebih dari y. |
| <= | (kurang dari atau sama dengan) Mengembalikan apakah x kurang dari atau sama dengan y. |
| >= | (lebih dari atau sama dengan) Mengembalikan apakah x lebih dari atau sama dengan y. |
| == | (sama dengan) Membandingkan apakah kedua obyek sama. |
| != | (tidak sama dengan) Membandingkan apakah kedua obyek berbeda. |
| not | (boolean NOT) Jika x bernilai |
| and | (boolean AND)
|
| or | (boolean OR) Jika
|
# lat6.py
# Operator dan ekspresi
bilangan1 = 5
bilangan2 = 3
print 'bil1 = ', bilangan1
print 'bil2 = ', bilangan2
print 'bil1 + bil2 = ', bilangan1 + bilangan2
print 'bil1 - bil2 = %s' % (bilangan1 - bilangan2)
print 'bil1 * bil2 = {0}'.format(bilangan1 * bilangan2)
print 'bil1 ** bil2 = ', bilangan1 ** bilangan2
bilangan1 = 5.0
print 'bil1 = ', bilangan1
print 'bil2 = ', bilangan2
print 'bil1 / bil2 = ', bilangan1 / bilangan2
print 'bil1 // bil2 = ', bilangan1 // bilangan2
print 'bil1 % bil2 = ', bilangan1 % bilangan2
print '-' * 80
bilangan1 = 5
print 'bil1 = ', bilangan1
print 'bil2 = ', bilangan2
print 'bil1 << bil2 = ', bilangan1 << bilangan2
print 'bil1 >> bil2 = ', bilangan1 >> bilangan2
print 'bil1 & bil2 = ', bilangan1 & bilangan2
print 'bil1 | bil2 = ', bilangan1 | bilangan2
print 'bil1 ^ bil2 = ', bilangan1 ^ bilangan2
print '~bil1 = ', ~bilangan1
print '-' * 80
print 'bil1 < bil2 = ', bilangan1 < bilangan2
print 'bil1 > bil2 = ', bilangan1 > bilangan2
print 'bil1 <= bil2 = ', bilangan1 <= bilangan2
print 'bil1 >= bil2 = ', bilangan1 >= bilangan2
print 'bil1 == bil2 = ', bilangan1 == bilangan2
print 'bil1 != bil2 = ', bilangan1 != bilangan2
print '-' * 80
print 'not True = ', not True
print 'True and False = ', True and False
print 'True or False = ', True or False
Cara lain operasi matematika dan pengisian variabel¶
Ketika melakukan operasi matematika, kita sering setelah dilakukan operasi hasil tersebut kita simpan dalam variabel. Di python ada jalan pintas untuk melakukan operasi dan melakukan assignment.
Anda bisa menulis:
a = 2
a = a * 3
sebagai:
a = 2
a *= 3
Berikut latihan 7 untuk menghitung uang kembalian.
# lat7.py
total_uang = 10000
harga_barang = 5000
diskon = 0.10
# harga barang setelah diskon
harga_barang *= (1 - diskon)
total_uang -= harga_barang
print 'total uang = %s' % total_uang
Urutan Evaluasi¶
Jika ada rantaian ekspresi seperti 2 + 3 * 4, apakah penambahan dilakukan
terlebih dahulu atau perkalian? Saat pelajaran matematika kita diajari bahwa
perkalian harus dikerjakan terlebih dahulu. Hal ini menandakan perkalian
mempunyai urutan lebih tinggi daripada penambahan.
Berikut tabel urutan evaluasi ekspresi dalam Python, dari terrendah sampai tertinggi.
| Operator | Keterangan |
|---|---|
| lamda | Ekspresi lambda |
| or | Boolean OR |
| and | Boolean AND |
| not x | Boolean NOT |
| in, not in | Tes Keanggotaan |
| is, is not | Tes Identitas |
| <, <=, >, >=, !=, == | Perbandingan |
| | | Bitwise OR |
| ^ | Bitwise XOR |
| & | Bitwise AND |
| <<, >> | Shift |
| +, - | Penambahan dan Pengurangan |
| *, /, //, % | Perkalian, Pembagian, Pembagian ke bawah, mod |
| +x, -x | Positif, Negatif |
| ~x | Bitwise NOT / inverse |
| ** | Pangkat |
| x.attribute | Referensi atribut |
| x[index] | Akses item |
| x[index1:index2] | Slicing |
| f(argument ...) | Pemanggilan fungsi |
| (ekspresi, ...) | literal tuple |
| [ekspresi, ...] | literal list |
| {key:value, ...} | literal dictionary |
Mengubah Urutan Evaluasi¶
Untuk membuat ekspresi lebih mudah dibaca, kita dapat menggunakan tanda kurung.
Sebagai contoh, 2 + (3 * 4) lebih mudah dipahami daripada 2 + 3 * 4
dimana pembaca harus mengetahui urutan evaluasi operator. Namun pemakaian tanda
kurung jangan terlalu berlebihan seperti (2 + (3 * 4)).
Selain itu, tanda kurung dapat mengubah urutan evaluasi operator. Sebagai contoh
(2 + 3) * 4, operasi penambahan akan dievaluasi terlebih dahulu.
# lat8.py
hasil = 2 + 3 * 4
print '2 + 3 * 4 = %s' % hasil
hasil = (2 + 3) * 4
print '(2 + 3) * 4 = %s' % hasil
hasil = 2 / 3 * 4
print '2 / 3 * 4 = %s' % hasil
hasil = 2.0 / 3 * 4
print '2.0 / 3 * 4 = %s' % hasil
Sifat Asosiatif¶
Operator dengan level urutan evaluasi yang sama akan dievaluasi dari kiri ke kanan.
Sebagai contoh 2 + 3 + 4 akan dievaluasi sebagai (2 + 3) + 4. Beberapa
operator seperti pengisian nilai (assignment) mempunyai sifat asosiatif dari kanan
ke kiri, contoh: a = b = c akan dievaluasi a = (b = c).