Phép chia lấy phần nguyên trong Python kí hiệu là gì?

Trả lời nhanh

Phép chia lấy phần nguyên trong Python được kí hiệu là // (hai dấu gạch chéo liền nhau). Ví dụ 17 // 5 cho kết quả 3, vì 17 chia 5 được 3 lần và dư 2. Dấu / là phép chia thông thường cho kết quả số thực, còn dấu % là phép chia lấy phần dư.

Ba phép chia cơ bản của Python

Kí hiệu Tên gọi Ví dụ Kết quả
/ Chia (cho số thực) 17 / 5 3.4
// Chia lấy phần nguyên 17 // 5 3
% Chia lấy phần dư 17 % 5 2

Ba phép này gắn bó với nhau. Với hai số nguyên a và b (b khác 0), luôn có a = (a // b) × b + (a % b). Kiểm tra: 17 = 3 × 5 + 2.

Vì sao Python tách thành // và /?

Trong Python 3, dấu / luôn trả về số thực, kể cả khi chia hết: 10 / 5 cho 2.0. Nếu em cần số nguyên, chẳng hạn đếm số nhóm, số trang, số hàng, thì phải dùng //. Đây là nguồn gây nhầm lẫn lớn khi học sinh chuyển từ ngôn ngữ khác sang Python.

Ví dụ ứng dụng

  • Đổi giây ra phút: giay = 200, phut = giay // 60 cho 3 phút, con_lai = giay % 60 cho 20 giây.
  • Tách chữ số hàng chục: với n = 47, n // 10 cho 4 (hàng chục), n % 10 cho 7 (hàng đơn vị).
  • Chia nhóm: 25 học sinh, mỗi nhóm 4 bạn thì 25 // 4 cho 6 nhóm đủ, dư 25 % 4 bằng 1 bạn.

Trường hợp số âm và số thực

Phép // làm tròn kết quả xuống về số nguyên nhỏ hơn hoặc bằng thương thực, chứ không phải cắt bỏ phần thập phân.

  • 17 // 5 bằng 3.
  • -17 // 5 bằng -4 (vì -3,4 làm tròn xuống thành -4, không phải -3).
  • 7.5 // 2 bằng 3.0 (nếu có số thực tham gia, kết quả cũng là số thực nhưng phần thập phân bằng 0).

Phần dư tương ứng cũng nhất quán theo quy tắc trên: -17 % 5 bằng 3, vì -17 = (-4) × 5 + 3.

Hàm divmod

Hàm divmod(a, b) trả về cả thương nguyên và phần dư trong một lần gọi. Ví dụ divmod(17, 5) cho (3, 2). Rất tiện khi đổi đơn vị thời gian.

Lỗi sai thường gặp

  • Viết 17 / 5 rồi tưởng kết quả là 3. Thực tế là 3.4.
  • Dùng một dấu gạch chéo ngược \ thay cho //. Dấu gạch chéo ngược không phải toán tử chia.
  • Chia cho 0: cả /, // và % đều gây lỗi ZeroDivisionError.
  • Nhầm // với kí hiệu chú thích của ngôn ngữ khác. Trong Python, chú thích bắt đầu bằng dấu #.

Mẹo nhớ

Hai gạch chéo giống hai vạch "chặt" phần lẻ đi, chỉ giữ lại phần nguyên. Một gạch chéo cho kết quả có lẻ. Dấu phần trăm cho phần còn lại.

Luyện tập

  1. Kết quả của 45 // 7 và 45 % 7 là gì? Đáp án: 6 và 3 (vì 45 = 6 × 7 + 3).
  2. Viết biểu thức lấy chữ số hàng trăm của n = 358. Đáp án: n // 100 cho 3.
  3. Một cuộc họp dài 135 phút. Viết lệnh tính số giờ và số phút lẻ. Đáp án: gio = 135 // 60 cho 2 và phut = 135 % 60 cho 15.

Câu hỏi thường gặp

Phép // trong Python luôn trả về số nguyên phải không?

Chỉ khi cả hai toán hạng là số nguyên. Nếu một trong hai là số thực thì kết quả là số thực nhưng đã được làm tròn xuống, ví dụ 7.5 // 2 cho 3.0.

Khác nhau giữa // và int(a / b) là gì?

Với số dương thì giống nhau, nhưng với số âm thì khác. -17 // 5 cho -4 (làm tròn xuống), còn int(-17 / 5) cho -3 (cắt bỏ phần thập phân).

Phép chia lấy phần dư trong Python kí hiệu là gì?

Kí hiệu là %, ví dụ 17 % 5 cho kết quả 2.