13. Angka dan matematika
Angka Python datang dalam dua jenis utama, mendukung aritmetika biasa, dan terhubung ke modul standar untuk lebih banyak fungsi pembantu. Bab ini mencakup apa yang kamu butuhkan untuk logika game: pembulatan, angka acak, matematika dasar.
Integer dan float
Python punya dua tipe angka yang umum:
- int. Bilangan bulat tanpa bagian desimal:
0,7,-42. - float. Bilangan dengan titik desimal:
3.14,0.5,-1.0.
Sebagian besar waktu kamu tidak perlu peduli mana yang mana.
7 adalah int, 7.0 adalah float. Ketika kamu
mencampurnya dalam aritmetika, hasilnya adalah float.
type(x).__name__ memberi tahu kamu mana yang kamu
miliki:
print(type(7).__name__) # int
print(type(7.0).__name__) # float
print(type(3.14).__name__) # floatAritmetika
Operator yang sudah familiar semuanya ada di sini, ditambah dua yang kurang umum dalam matematika sehari-hari:
| Operator | Nama | Contoh | Hasil |
|---|---|---|---|
+ |
penjumlahan | 3 + 2 |
5 |
- |
pengurangan | 7 - 4 |
3 |
* |
perkalian | 6 * 7 |
42 |
/ |
pembagian float | 7 / 2 |
3.5 |
// |
pembagian integer | 7 // 2 |
3 |
% |
modulo (sisa) | 7 % 3 |
1 |
** |
pangkat | 2 ** 8 |
256 |
Tiga di antaranya perlu perhatian lebih:
Pembagian float / selalu menghasilkan
float di Python, bahkan ketika hasilnya adalah bilangan bulat.
6 / 3 adalah 2.0, bukan 2. Ini
berbeda dari beberapa bahasa lain di mana membagi dua integer
menghasilkan integer.
Pembagian integer // membuang semua
bagian setelah titik desimal. 7 // 2 adalah 3.
-7 // 2 adalah -4, karena pembulatannya menuju
tak hingga negatif, bukan menuju nol.
Modulo % adalah sisa setelah pembagian
integer. 7 % 3 adalah 1 karena
7 = 2 * 3 + 1. Ini adalah cara standar untuk bertanya
"apakah angka ini genap?" — n % 2 adalah 0
untuk genap dan 1 untuk ganjil.
print(7 / 2) # 3.5
print(7 // 2) # 3
print(7 % 2) # 1
print(2 ** 8) # 256Buka exercises/13/01-arithmetic.py. Prediksi setiap
hasil yang dicetak sebelum menjalankannya, lalu jalankan dan
periksa.
Modul math
Modul math Python punya fungsi pembantu yang paling
sering kamu butuhkan. Tambahkan import math di bagian atas
file untuk menggunakannya:
import math| Fungsi | Fungsinya |
|---|---|
math.floor(x) |
Integer terbesar yang tidak lebih besar dari x.
floor(3.7) -> 3. |
math.ceil(x) |
Integer terkecil yang tidak lebih kecil dari x.
ceil(3.2) -> 4. |
abs(x) |
Nilai absolut. abs(-5) -> 5. Built-in, tidak perlu
import. |
math.sqrt(x) |
Akar kuadrat. |
min(a, b) |
Yang lebih kecil dari dua angka. Built-in, tidak perlu import. |
max(a, b) |
Yang lebih besar dari dua angka. Built-in, tidak perlu import. |
math.pi |
Konstanta 3.1415... (sebuah nilai, bukan fungsi). |
Panggil seperti fungsi lainnya:
import math
print(math.floor(3.7)) # 3
print(math.ceil(3.2)) # 4
print(math.sqrt(16)) # 4.0
print(min(7, 3)) # 3
print(math.pi) # 3.141592653589793abs(), min(), dan max() sudah
built-in di Python dan selalu tersedia. math.floor,
math.ceil, math.sqrt, dan math.pi
membutuhkan import math di bagian atas file.
Angka acak
Angka acak berada di modul random. Import di bagian
atas:
import randomrandom.random()mengembalikan float antara0.0dan1.0.random.randint(a, b)mengembalikan bilangan bulat dariasampaib, kedua ujung termasuk.random.randint(1, 6)adalah dadu enam sisi.
import random
print(random.random()) # e.g. 0.6238...
print(random.randint(1, 6)) # e.g. 4
print(random.randint(1, 100)) # e.g. 73random.randint(a, b) menyertakan baik a
maupun b dalam kemungkinan hasilnya. Ini sesuai dengan
perilaku yang diharapkan untuk lemparan dadu dan penggunaan serupa.
Mengubah teks menjadi angka
Ketika sebuah nilai datang sebagai string tapi kamu perlu melakukan
matematika dengannya, gunakan int() untuk bilangan bulat
atau float() untuk desimal:
text = "42"
n = int(text)
print(n + 1) # 43
decimal_text = "3.14"
x = float(decimal_text)
print(x * 2) # 6.28Jika teksnya tidak bisa menjadi angka, Python memunculkan
ValueError:
int("hello") # ValueError: invalid literal for int()Kamu akan banyak menggunakan konversi ini di bab berikutnya, di mana program membaca input keyboard. Apapun yang diketik pengguna datang sebagai string, bahkan jika mereka mengetik digit.
Pekerjaan Rumah
Soal 1 — Luas persegi panjang
Buka exercises/13/homework/01-rectangle-area.py. Dua
variable menyimpan width dan height sebuah
persegi panjang. Hitung luasnya dan cetak dengan label, misalnya
Area: 24.
Soal 2 — Floor dan ceil
Buka exercises/13/homework/02-floor-and-ceil.py. Sebuah
variable menyimpan float 3.7. Cetak apa adanya, setelah
math.floor, dan setelah math.ceil. Tambahkan
satu baris komentar yang menjelaskan perbedaan antara floor dan
ceil.
Soal 3 — Lempar dua dadu
Buka exercises/13/homework/03-roll-two-dice.py. "Lempar"
dua dadu enam sisi dan cetak hasilnya seperti ini:
Die 1: 4
Die 2: 6
Total: 10
Gunakan random.randint untuk lemparan. Lempar setiap
dadu secara terpisah agar dua nilainya independen.
Tantangan — Hipotenusa
Buka exercises/13/homework/04-hypotenuse.py. Dua
variable menyimpan dua sisi pendek sebuah segitiga siku-siku
(a dan b). Hitung dan cetak hipotenusa
c menggunakan teorema Pythagoras:
c = sqrt(a**2 + b**2)
Cetak ketiga nilai dengan label. Bulatkan hipotenusa ke dua tempat
desimal dengan f-string dan spesifikasi format :.2f dari
bab 12.
Buntu atau sudah selesai? Buka halaman solusi pekerjaan rumah.