Buổi 7: Bài toán xử lý chữ số
Hôm nay em sẽ học
- "Bóc" từng chữ số bằng
% 10và// 10 - Đảo ngược một số
- Kiểm tra số đối xứng
- Cách 2: đổi số thành xâu để xử lý nhanh
Bấm vào slide rồi dùng phím ← → để chuyển, phím F để xem toàn màn hình.
Mở toàn màn hình1. Kiến thức chính
Bóc từng chữ số bằng % 10 và // 10
n = int(input()) while n > 0: d = n % 10 # chữ số cuối print(d) n //= 10 # bỏ chữ số cuối
Chạy tay với n = 2026:
| Vòng | n đầu vòng | d = n % 10 | n sau //= 10 |
|---|---|---|---|
| 1 | 2026 | 6 | 202 |
| 2 | 202 | 2 | 20 |
| 3 | 20 | 0 | 2 |
| 4 | 2 | 2 | 0 → dừng |
Đảo ngược một số
r = 0 while n > 0: r = r * 10 + n % 10 # 1234 → r = 4, 43, 432, 4321 n //= 10
Cách 2: đổi số thành xâu
s = input() # đọc luôn dạng xâu, ví dụ "2026" len(s) # số chữ số: 4 s[0], s[-1] # chữ số đầu "2", chữ số cuối "6" s[::-1] # đảo ngược: "6202" for c in s: # duyệt từng chữ số d = int(c) # đổi một ký tự thành số
| Cách | Khi nào dùng |
|---|---|
% 10 và // 10 | số đang được tính toán; đổi cơ số (nhị phân…) |
| Đổi thành xâu | đề cho sẵn số, chỉ cần đếm / đảo / so sánh chữ số |
Đổi sang hệ nhị phân
Giống bóc chữ số nhưng chia cho 2: các số dư đọc từ dưới lên chính là biểu diễn nhị phân. 13 → dư 1, 0, 1, 1 → 1101.
2. Ghi nhớ và lỗi thường gặp
| Lỗi | Ví dụ |
|---|---|
| Quên trường hợp n = 0 | while n > 0 không chạy lần nào → đếm ra 0 chữ số |
| Quên đổi ký tự sang số | tong += c lỗi – phải tong += int(c) |
| Ghép xâu nhị phân sai chiều | phải ghép vào đầu: kq = str(n % 2) + kq |
3. Câu hỏi tự kiểm tra
7351 % 10và7351 // 10bằng bao nhiêu?- Đảo ngược số 1200 được số nào?
- Số nhị phân
101bằng bao nhiêu trong hệ thập phân?
4. Bài tập về nhà
Bài 1 ★ – DEMCHAN
Input: số nguyên n (0 ≤ n ≤ 10¹⁸).
Output: số chữ số chẵn của n.
| Input | Output |
|---|---|
2026 | 4 |
135 | 0 |
Bài 2 ★★ – DOIXUNG11
Không có input. Liệt kê tất cả các số đối xứng có 4 chữ số chia hết cho 11, theo thứ tự tăng dần, trên một dòng.
Bài 3 ★★ – NHIPHAN2
Input: một xâu gồm các chữ số 0 và 1 (độ dài ≤ 60) – biểu diễn nhị phân của một số.
Output: số đó trong hệ thập phân.
| Input | Output |
|---|---|
1101 | 13 |
0 | 0 |
Bài 4 ★★★ (thử thách) – SODEP
Một số gọi là số đẹp nếu tổng các chữ số của nó chia hết cho 10. Ví dụ 19, 55, 208.
Input: hai số nguyên a, b (1 ≤ a ≤ b ≤ 10⁵).
Output: số lượng số đẹp trong đoạn từ a đến b.
| Input | Output |
|---|---|
1 100 | 9 |
19 19 | 1 |
.py đặt tên theo tên bài. Chạy thử với tất cả ví dụ trước khi nộp!Chưa mở đáp án
Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.
Chưa mở đáp án
Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.