edubun
Bahasa Indonesia

Angka dan aritmetika

Dalam Python 3, 7 / 2 menghasilkan 3.5, 7 // 2 menghasilkan 3, dan 7 % 2 menghasilkan sisa 1.

Tebak empat pembagian sebelum membaca lebih lanjut

Tutup keluaran di bawah dan tulis perkiraan hasil cetak setiap baris. Kebanyakan orang menjawab yang pertama dengan benar dan setidaknya salah pada salah satu lainnya. Tebakan keliru itulah titik awal unit ini.

print(7 / 2)
print(8 / 2)
print(7 // 2)
print(7 % 2)
Keluaran
3.5
4.0
3
1

Baris kedua sering mengejutkan. 8 / 2 tepat bernilai 4, tetapi Python mencetak 4.0. Sebabnya, / selalu menghasilkan float, angka dengan titik desimal, meskipun pembagiannya habis. Jika menginginkan pembagian bilangan bulat, Python memiliki operator tersendiri, //, yang disebut pembagian lantai. Operator ini membagi lalu membulatkan ke bawah ke bilangan bulat. Pasangannya, %, memberikan sisa pembagian. Keduanya menjawab pertanyaan sekolah dasar "7 dibagi 2 adalah 3, sisa 1".

Tiga lompatan sebesar 2 muat dalam 7, dengan sisa 1: 7 // 2 adalah jumlah lompatan, 7 % 2 adalah sisanya.

% digunakan lebih luas daripada yang mungkin kamu duga. Bilangan genap jika n % 2 bernilai 0. Digit terakhir bilangan adalah n % 10. Mengubah 135 menit menjadi jam dan menit dilakukan dengan 135 // 60 jam dan 135 % 60 menit.

minutes = 135
print(minutes // 60, "h", minutes % 60, "min")
print(2026 % 2, 2027 % 2)
print(4589 % 10)
Keluaran
2 h 15 min
0 1
9

Operator lain dan urutan yang digunakan Python

OperatorArtiContohHasil
+tambah7 + 29
-kurang7 - 25
*kali7 * 214
/bagi (float)7 / 23.5
//pembagian lantai7 // 23
%sisa pembagian7 % 21
**pangkat7 ** 249

Python mengikuti urutan yang sama dengan pelajaran matematika: ** lebih dahulu, lalu *, /, //, dan %, kemudian + dan -, dari kiri ke kanan dalam setiap kelompok. Kurung didahulukan dari semuanya, jadi tambahkan jika ragu. Tidak ada ruginya, dan maksud kode menjadi jelas bagi pembaca berikutnya.

print(2 + 3 * 4)
print((2 + 3) * 4)
print(2 ** 10)
print(10_000 * 3)
Keluaran
14
20
1024
30000

Pada baris terakhir ada kemudahan kecil: Python mengizinkan garis bawah dalam bilangan panjang, sehingga 10_000 lebih mudah dibaca daripada 10000. Garis bawah diabaikan saat angka dihitung dan tidak muncul pada keluaran. Koma tidak dapat digunakan dengan cara itu karena koma sudah berarti "nilai berikutnya".

Desimal disimpan dalam biner, sehingga beberapa hasil sedikit meleset

Coba 0.1 + 0.2. Dalam tutorial Python, ada satu bab penuh yang menjelaskan mengapa jawabannya 0.30000000000000004, bukan 0.3. Float disimpan dalam biner, dan 0.1 tidak memiliki bentuk biner yang tepat, seperti 1/3 tidak memiliki bentuk desimal yang tepat. Kesalahannya sangat kecil, dan round() menyembunyikannya saat dicetak. Perhatikan bahwa round() membulatkan nilai yang tepat di tengah ke bilangan genap terdekat: pada halaman fungsi bawaan, round(0.5) menghasilkan 0 dan round(1.5) menghasilkan 2. Untuk uang dalam won utuh atau sen utuh, simpan jumlahnya sebagai int agar masalah ini tidak muncul.

print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
print(round(0.5), round(1.5), round(2.5))
print(int(3.99), float(7))
Keluaran
0.30000000000000004
0.3
0 2 2
3 7.0

input() selalu menghasilkan string

input() menampilkan prompt, menunggu pengguna mengetik sesuatu dan menekan Enter, lalu mengembalikan ketikannya sebagai string. Meskipun yang diketik 15, kamu mendapat "15", yaitu teks. Untuk menghitungnya, ubah dengan int() atau float(). int() pada float memotong bagian desimal, bukan membulatkan, sehingga int(3.99) adalah 3.

age = input("How old are you? ")
next_year = int(age) + 1
print("Next year you will be", next_year)
Keluaran
How old are you? 14
Next year you will be 15
Dalam contoh di atas, 14 adalah ketikan pengguna. Programnya sendiri tidak memuat angka 14.
/Pembagian yang selalu menghasilkan float: 8 / 2 adalah 4.0
//Pembagian lantai: 7 // 2 adalah 3
%Sisa pembagian: 7 % 2 adalah 1
**Pangkat: 2 ** 3 adalah 8
int()Mengubah "15" atau 3.9 menjadi bilangan bulat (15, 3)
input()Membaca satu baris ketikan pengguna sebagai string
round(x, n)Membulatkan hingga n angka desimal; nilai tepat di tengah dibulatkan ke bilangan genap
  1. Apa yang dicetak kode ini?
    print(9 / 3)
  2. Apa yang dicetak kode ini?
    print(17 // 5, 17 % 5)
  3. Apa yang dicetak kode ini?
    print(2 + 3 * 4 ** 2)
  4. Apa yang dicetak kode ini?
    print(2 ** 3)
  5. Apa yang dicetak kode ini?
    print(2 ^ 3)
    • 8
    • 6
    • 1
    • Kesalahan
  6. Apa yang dicetak kode ini?
    print(int("20") + 5)
  7. Apa yang dicetak kode ini?
    print("20" + "5")
  8. Apa yang dicetak kode ini?
    print(int(7.9))
  9. Apa yang dicetak kode ini?
    print(round(2.5))
  10. Harga satu roti gulung 3500 won dan kamu memiliki 10 000 won. Apa yang dicetak kode ini?
    won = 10000
    price = 3500
    print(won // price, won % price)
  11. Ekspresi mana yang memeriksa apakah n genap?
    • n / 2 == 0
    • n // 2 == 0
    • n % 2 == 0
    • n ** 2 == 0
Kesalahan umum
  • "2 ^ 3 adalah 8." Dalam Python, ^ adalah operator bitwise dan 2 ^ 3 bernilai 1. Pangkat menggunakan **, sehingga 2 ** 3 bernilai 8. Program berjalan tanpa kesalahan, sehingga kekeliruan ini sulit ditemukan.
  • "input() memberiku angka jika aku mengetik angka." Hasilnya selalu string. "14" + 1 berhenti dengan TypeError: can only concatenate str (not "int") to str. Ubah terlebih dahulu dengan int(input(...)).
  • "0.1 + 0.2 == 0.3 adalah True." Hasilnya False karena 0.1 + 0.2 adalah 0.30000000000000004. Bandingkan nilai yang dibulatkan, seperti round(0.1 + 0.2, 2) == 0.3, atau hitung dalam satuan utuh (won, sen) menggunakan int.
Catatan untuk guruMulailah dengan latihan perkiraan dan biarkan hasil 4.0 memancing pertanyaan. Siswa yang sudah mengenal pembagian bersisa dari sekolah dasar cepat memahami // dan % setelah dikenalkan dengan istilah itu. Kesalahan pembulatan float cukup ditunjukkan sekali, tanpa dibahas terlalu lama; kebiasaan pentingnya adalah menyimpan uang sebagai bilangan bulat. Hasil round(2.5) berupa 2 bertentangan dengan pembulatan di pelajaran matematika, jadi siapkan diri untuk pertanyaan dan rujuk dokumentasi fungsi bawaan, bukan berdebat. Kesalahan konversi input() paling sering ditemui siswa dalam proyek pertama mereka.
Poin penting
  • / selalu menghasilkan float; // memberikan hasil bagi bulat; % memberikan sisa.
  • ** adalah pangkat; ^ bukan.
  • Urutan: kurung, **, lalu * / // %, kemudian + -.
  • 0.1 + 0.2 adalah 0.30000000000000004; simpan uang sebagai int.
  • input() mengembalikan string; ubah dengan int() atau float().
Sumber kursus ini (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Diperiksa: 2026-10-19