Phép toán số học, chia nguyên và chia dư
1. Kiến thức chuyên sâu dành cho học sinh Tiểu học
Python cung cấp 7 phép toán số học. Trong đó, bộ đôi Chia lấy phần nguyên (//) và Chia lấy phần dư (%) là nền tảng cốt lõi của mọi bài thi Tin học trẻ:
Phép chia: A : B (Ví dụ: 17 chia cho 5)
17 = 5 x 3 + 2
│ │
│ └─► 17 % 5 = 2 (Số dư - Modulo)
└───────► 17 // 5 = 3 (Thương nguyên - Floor Division)
A. Phép chia thực (/)
- Ký hiệu một dấu gạch chéo
/. - Đặc điểm sống còn: Kết quả luôn luôn là số thực (
float), kể cả khi chia hết. Ví dụ:8 / 2cho ra4.0chứ không phải4. Nếu đề bài yêu cầu in ra số nguyên, dùng/sẽ bị trừ điểm!
B. Phép chia lấy phần nguyên (//)
- Ký hiệu hai dấu gạch chéo liền nhau
//. - Ý nghĩa: Trả lời câu hỏi "Có thể chia được trọn vẹn bao nhiêu phần bằng nhau?".
- Bỏ hoàn toàn phần thập phân, chỉ giữ lại số nguyên:
19 // 4 = 4(vì $19 : 4 = 4.75$, lấy phần nguyên là $4$).
C. Phép chia lấy phần dư (%)
- Ký hiệu dấu phần trăm
%. - Ý nghĩa: Trả lời câu hỏi "Sau khi chia đều hết mức có thể, còn thừa ra bao nhiêu?".
19 % 4 = 3(vì $4 \times 4 = 16$, còn dư $19 - 16 = 3$).
D. Định lý chia có dư Toán Tiểu học trong Python
$$\mathbf{A} = (\mathbf{A} // \mathbf{B}) \times \mathbf{B} + (\mathbf{A} \% \mathbf{B})$$
E. Thứ tự ưu tiên tính toán (Quy tắc PEMDAS)
$$ \text{Ngoặc } () \longrightarrow \text{Lũy thừa } ** \longrightarrow \text{Nhân, Chia } (*, /, //, \%) \longrightarrow \text{Cộng, Trừ } (+, -)$$ Lưu ý: Các phép toán cùng cấp độ được thực hiện lần lượt từ Trái sang Phải.
2. Sổ tay 6 kỹ thuật ứng dụng thực chiến của // và %
Kỹ thuật 1: Kiểm tra tính chẵn lẻ
- Số chẵn là số chia hết cho 2 (dư 0):
n % 2 == 0. - Số lẻ là số chia cho 2 dư 1:
n % 2 == 1(hoặcn % 2 != 0).
Kỹ thuật 2: Kiểm tra tính chia hết
- Số $A$ là bội số của $B$ (hay $A$ chia hết cho $B$):
A % B == 0.
Kỹ thuật 3: Bóc tách chữ số hàng đơn vị và hàng chục
- Lấy chữ số hàng đơn vị (chữ số cuối cùng):
don_vi = n % 10. - Gọt bỏ chữ số hàng đơn vị:
tam = n // 10. - Lấy chữ số hàng chục của số $N$:
chuc = (n // 10) % 10.
Kỹ thuật 4: Kỹ thuật làm tròn lên (Ceiling Division)
- Bài toán: Có $N$ học sinh, cần thuê xe chở học sinh, mỗi xe chở được $K$ bạn. Cần ít nhất bao nhiêu xe để không bạn nào bị bỏ lại?
- Nếu dùng
N // K, với $N = 25, K = 10$ sẽ ra $2$ (thiếu 1 xe chở 5 bạn còn lại!). - Công thức làm tròn lên chuẩn thi đấu: $$\mathbf{so\_xe = (N + K - 1) // K}$$ Kiểm tra: $(25 + 10 - 1) // 10 = 34 // 10 = 3$ xe (Tuyệt đối chính xác!).
Kỹ thuật 5: Bài toán chu kỳ vòng tròn (Đồng hồ, Vòng chạy)
-
Một vòng có $M$ trạng thái (từ 0 đến $M-1$). Di chuyển thêm $K$ bước: $$\mathbf{vi\_tri\_moi = (vi\_tri\_cu + K) \% M}$$
-
Đồng hồ 12 giờ: Sau $K$ giờ nữa kim chỉ số mấy?
gio_moi = (gio_hien_tai + K) % 12. Nếugio_moi == 0thì kết quả là12. Hoặc mẹo 1 dòng:(gio_hien_tai + K - 1) % 12 + 1.
Kỹ thuật 6: Đổi số thứ tự $K$ sang tọa độ (Hàng, Cột) trên bàn cờ
- Một bảng ô vuông có chiều rộng mỗi hàng là $W$ ô. Ô thứ $K$ ($K$ tính từ 1):
idx = K - 1(Chuyển về mốc 0)hang = (idx // W) + 1cot = (idx % W) + 1
3. Bảng bẫy lỗi phòng thi thường gặp
| Code sai | Báo lỗi / Hiện tượng | Nguyên nhân | Cách sửa đúng |
|---|---|---|---|
a / b |
In ra 3.0 thay vì 3 |
Dùng chia thực / |
Dùng chia nguyên a // b |
a % 0 hoặc a // 0 |
ZeroDivisionError |
Mẫu số chia bằng 0 | Đảm bảo mẫu số $> 0$ |
a ^ b |
Kết quả sai hoàn toàn | ^ là phép XOR bit, không phải mũ |
Viết a ** b |
a x b |
SyntaxError |
Dùng chữ x làm dấu nhân |
Viết a * b |