Kết quả khi thực hiện câu lệnh sau: 10 + 5 % 2 – 8 // 3 * 2 là bao nhiêu?

Trả lời nhanh

Đáp án C. 7. Với biểu thức Python 10 + 5 % 2 - 8 // 3 * 2, các phép %, //, * được tính trước (từ trái sang phải): 5 % 2 = 1; 8 // 3 = 2; 2 * 2 = 4. Sau đó cộng trừ: 10 + 1 – 4 = 7. Câu lệnh hợp lệ nên không báo lỗi.

Đề bài và lưu ý về cách đọc

Đề thường gặp: “Kết quả khi thực hiện câu lệnh sau: print(10 + 5 % 2 - 8 // 3 * 2). A. 11 B. -11 C. 7 D. Câu lệnh bị lỗi”. Trên nhiều nguồn, các kí hiệu phép toán bị mất khi sao chép nên đề chỉ còn dãy số. Cách đọc ở trên là cách duy nhất ta thấy khớp với bốn phương án này. Nếu đề của em có toán tử khác, hãy áp dụng đúng quy trình ở phần sau.

Thứ tự ưu tiên toán tử trong Python

Mức Toán tử Ý nghĩa
1 (cao nhất) ** Luỹ thừa
2 * / // % Nhân, chia, chia lấy phần nguyên, chia lấy dư
3 (thấp nhất) + - Cộng, trừ

Các toán tử cùng mức được tính từ trái sang phải (riêng ** tính từ phải sang trái). Dấu ngoặc đơn luôn được tính trước.

Giải từng bước

  1. Tìm các phép ở mức 2: 5 % 2, 8 // 3, rồi * 2.
  2. 5 % 2 = 1 vì 5 = 2·2 + 1.
  3. 8 // 3 = 2 vì 8 chia 3 được 2, dư 2 (phần nguyên là 2).
  4. 8 // 3 * 2 tính từ trái sang phải: 2 * 2 = 4.
  5. Biểu thức còn 10 + 1 - 4 = 7.

Loại trừ các phương án

  • A. 11: có được khi chỉ tính 10 + 5 % 2 = 11 mà quên trừ phần 8 // 3 * 2.
  • B. -11: không có cách tính hợp lý nào ra số âm này; thường là nhầm dấu.
  • C. 7: đúng.
  • D. Câu lệnh bị lỗi: sai, vì cú pháp đúng, các toán hạng đều là số nguyên. Lỗi chỉ xuất hiện khi thiếu ngoặc, chia cho 0 hoặc viết sai tên lệnh.

Lỗi sai thường gặp

  • Tính từ trái sang phải mà bỏ qua thứ tự ưu tiên: (10 + 5) % 2 … cho kết quả khác hẳn.
  • Nhầm // với /: 8 / 3 cho số thực 2.666…, còn 8 // 3 cho số nguyên 2.
  • Nhầm % là phần trăm; trong Python đây là phép chia lấy dư.

Mẹo nhớ: “Nhân – chia – dư – nguyên làm trước, cộng trừ làm sau”.

Bài luyện tập

  1. print(7 + 8 // 3 * 2 - 9 % 4) cho kết quả bao nhiêu?
    Đáp án: 8 // 3 = 2, 2 * 2 = 4, 9 % 4 = 1 nên 7 + 4 – 1 = 10.
  2. print(20 - 6 % 4 * 3) cho kết quả bao nhiêu?
    Đáp án: 6 % 4 = 2, 2 * 3 = 6, 20 – 6 = 14.
  3. print((10 + 5) % 2) cho kết quả bao nhiêu?
    Đáp án: ngoặc trước: 15 % 2 = 1.

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

Trong Python, phép // và % khác nhau thế nào?

Phép // cho thương nguyên (8 // 3 = 2), còn % cho số dư của phép chia (8 % 3 = 2). Hai phép này thường đi cùng nhau: a = (a // b) * b + (a % b).

Phép nhân và phép chia lấy nguyên, cái nào tính trước?

Hai phép này cùng mức ưu tiên nên được tính từ trái sang phải. Vì vậy 8 // 3 * 2 là (8 // 3) * 2 = 4.

Khi nào câu lệnh tính toán trong Python bị lỗi?

Khi sai cú pháp (thiếu hoặc thừa ngoặc), dùng biến chưa gán giá trị, hoặc chia cho 0 (ZeroDivisionError). Biểu thức chỉ gồm số và toán tử đúng thì không lỗi.

Nếu đề của em có toán tử khác thì làm sao?

Xác định toán tử, tính trước các phép **, rồi *, /, //, % từ trái sang phải, cuối cùng đến + và -. Ngoặc đơn luôn tính trước.