2.3. Operasi matematika#
Python berfungsi sebagai kalkulator tanpa perlu konfigurasi tambahan. Halaman ini mencakup operator yang paling sering Anda gunakan: aritmatika pada angka, perbandingan yang menghasilkan boolean, operator logika yang menggabungkan kondisi, dan operator bitwise untuk pekerjaan tingkat perangkat keras.
2.3.1. Aritmatika#
Operator aritmatika standar pada nilai int dan float:
+-- penjumlahan--- pengurangan (atau negasi, sebagai prefiks:-x)*-- perkalian/-- pembagian. Selalu mengembalikanfloat, meskipun kedua operand adalah bilangan bulat.//-- pembagian lantai. Mengembalikan hasil bagi bilangan bulat yang dibulatkan ke arah minus-tak terhingga.%-- modulo (sisa pembagian).**-- eksponensial (2 ** 10adalah 1024).
>>> 7 / 2
3.5
>>> 7 // 2
3
>>> -7 // 2
-4
>>> 7 % 2
1
>>> 2 ** 16
65536
Aritmatika tipe campuran secara otomatis mempromosikan bilangan bulat ke float:
>>> 3 + 0.5
3.5
Penugasan yang diperkuat menggabungkan operator dengan = untuk pembaruan di tempat yang ringkas:
counter = 0
counter += 1 # equivalent to counter = counter + 1
counter *= 2 # works for *= /= //= %= **= too
Presedensi operator mengikuti urutan konvensional: ** pertama, lalu unary -, kemudian *, /, //, dan %, lalu + dan -. Gunakan tanda kurung jika Anda tidak yakin -- tidak ada biaya saat runtime.
2.3.2. Perbandingan#
Operator perbandingan mengembalikan bool (True atau False):
==dan!=-- sama / tidak sama.<,<=,>,>=-- pengurutan.
>>> 3 == 3
True
>>> 3 == 3.0
True
>>> 3 < 5 <= 5
True
Contoh terakhir adalah perbandingan berantai dan persis setara dengan 3 < 5 and 5 <= 5.
Peringatan
= melakukan penugasan; == melakukan perbandingan. Ekspresi if x = 5: adalah kesalahan sintaks justru karena Python menolak untuk secara diam-diam mencampuradukkan keduanya.
2.3.3. Logika boolean#
Tiga operator menggabungkan boolean:
and--Truehanya jika kedua sisi bernilai benar.or--Truejika salah satu sisi bernilai benar.not-- membalikkan satu nilai boolean.
and dan or melakukan short-circuit: mereka berhenti mengevaluasi segera setelah hasilnya sudah diketahui. False and slow_check() tidak pernah memanggil slow_check.
and dan or juga mengembalikan salah satu operandnya daripada literal True atau False, yang memungkinkan Anda menulis nilai default secara ringkas:
name = user_name or "anonymous" # "" / 0 / None are falsy
2.3.4. Operator bitwise#
Untuk pekerjaan perangkat keras -- mengemas bidang register, melakukan masking bit, mengurai header protokol -- Anda akan menggunakan operator bitwise. Operator ini bekerja pada representasi biner dari int:
&-- bitwise AND|-- bitwise OR^-- bitwise XOR~-- bitwise NOT (komplemen satu)<<-- geser kiri>>-- geser kanan
Bentuk literal heks dan biner sangat berguna saat membaca dan menulis ini:
>>> 0b1100 & 0b1010
8 # 0b1000
>>> 0b1100 | 0b1010
14 # 0b1110
>>> 0xFF ^ 0x0F
240 # 0xF0
>>> 1 << 8
256
>>> (0xABCD >> 8) & 0xFF
171 # extract the high byte
Bentuk yang diperkuat tersedia untuk masing-masing: |=, &=, ^=, <<=, >>=.
Catatan
and / or beroperasi pada boolean (atau nilai kebenaran); & / | beroperasi pada bit. Jangan mencampuradukkan keduanya. 0b1100 and 0b1010 dievaluasi menjadi 0b1010 karena kedua operand bersifat truthy -- bukan yang biasanya Anda inginkan saat memanipulasi bit.
2.3.5. Fungsi bawaan angka yang berguna#
Beberapa fungsi bawaan mencakup operasi numerik umum yang tidak dapat dilakukan oleh operator saja:
round()-- bilangan bulat terdekat, atau tempat desimalndigitsterdekat jika argumen kedua diberikan. Mengembalikanintuntukround(x), danfloatuntukround(x, n). Nilai tengah (0.5,1.5, ...) dibulatkan ke bilangan genap terdekat, tidak selalu ke atas.divmod()-- mengembalikan(quotient, remainder)dalam satu panggilan. Berguna untuk memecah satu jumlah menjadi satuan (detik menjadi menit-dan-detik, byte menjadi halaman-dan-offset).pow()-- sama dengan**dalam bentuk dua argumen. Bentuk tiga argumenpow(base, exp, mod)menghitung(base ** exp) % modtanpa pernah membuat nilai antara yang sangat besar, yang merupakan satu-satunya cara praktis untuk melakukan eksponensial modular untuk eksponen besar.
>>> round(3.7)
4
>>> round(3.14159, 2)
3.14
>>> round(0.5) # ties go to even, not always up
0
>>> round(1.5)
2
>>> divmod(125, 60) # 125 seconds = 2 min, 5 sec
(2, 5)
>>> minutes, seconds = divmod(125, 60)
>>> pow(3, 4) # same as 3 ** 4
81
>>> pow(3, 100, 7) # (3 ** 100) mod 7, efficient
4
Konversi bilangan bulat ke string berbasis (bin, oct, hex) dibahas dalam Metode dan pemformatan string.
2.3.6. Modul math#
Fungsi matematika umum ada di modul math. Impor sekali dan panggil fungsinya melalui nama bertitik:
import math
print(math.sqrt(2)) # 1.4142135
print(math.sin(math.pi / 2)) # 1.0
print(math.floor(3.7)) # 3
print(math.log(100, 10)) # 2.0
Modul MicroPython math mencakup fungsi yang biasa digunakan (sqrt, exp, log, sin, cos, tan, atan2, floor, ceil, pi, e, ...). Untuk angka acak, lihat modul random; untuk manipulasi bit bilangan bulat tetap, operator di atas biasanya sudah cukup.
2.3.7. Bilangan kompleks#
Untuk pekerjaan numerik yang membutuhkan komponen imajiner, Python memiliki tipe complex dengan literal sufiks j (1 + 2j). Modul cmath mencerminkan math untuk input kompleks. Keduanya tersedia di sebagian besar build MicroPython tetapi jarang diperlukan untuk pekerjaan kamera; disebutkan terutama agar tidak mengejutkan jika Anda memport kode yang menggunakannya.