Trả lời nhanh
Đáp án đúng là C. bool. Biểu thức 34 + 28 > 45 được tính theo hai bước: 34 + 28 = 62, rồi so sánh 62 > 45 cho kết quả đúng. Vì toán tử so sánh (>) đứng ngoài cùng nên giá trị cuối cùng chỉ có thể là True hoặc False, tức là kiểu logic bool, không phải số nguyên, số thực hay chuỗi.
Đề bài
Xác định kiểu của biểu thức sau: 34 + 28 > 45. Các phương án: A. int; B. float; C. bool; D. string.
Giải thích vì sao kết quả là bool
Muốn biết kiểu của một biểu thức, em đừng nhìn vào các số trong biểu thức mà hãy nhìn vào phép toán được thực hiện sau cùng. Với biểu thức này, thứ tự tính như sau:
- Phép cộng 34 + 28 được tính trước vì toán tử số học có độ ưu tiên cao hơn toán tử so sánh. Kết quả là 62, kiểu int.
- Phép so sánh 62 > 45 được tính sau. Câu hỏi “62 có lớn hơn 45 không?” chỉ có hai câu trả lời: đúng hoặc sai.
- Trong Python, hai giá trị đó là
TruevàFalse, thuộc kiểu bool. Ở đây kết quả là True.
Em có thể kiểm tra ngay trong chế độ lệnh của Python bằng type(34 + 28 > 45). Máy sẽ trả về <class 'bool'>.
Loại trừ từng phương án
- A. int sai: int là kiểu của chính tổng 34 + 28, chỉ là bước trung gian chứ không phải kết quả cuối.
- B. float sai: không có số thập phân và không có phép chia “/” nào trong biểu thức. Kiểu float chỉ xuất hiện khi có số có dấu chấm hoặc phép chia thường.
- D. string sai: chuỗi phải được đặt trong cặp dấu nháy, ví dụ ’62’. Biểu thức này không có dấu nháy nào.
- C. bool đúng vì kết quả của mọi phép so sánh (>, <, >=, <=, ==, !=) đều là bool.
Bảng nhớ nhanh: toán tử nào cho kiểu nào
| Phép toán ngoài cùng | Ví dụ | Kiểu kết quả |
|---|---|---|
| +, -, *, //, % với số nguyên | 7 // 2 | int |
| / (chia thường), hoặc có số thực | 7 / 2, 3 * 1.5 | float |
| So sánh: >, <, ==, != | 7 == 7.0 | bool |
| Logic: and, or, not | 3 > 1 and 2 > 5 | bool |
| Cộng hai chuỗi, hoặc nhân chuỗi với số | ‘a’ + ‘b’ | str (string) |
Lỗi sai thường gặp
- Chọn int vì thấy toàn số. Có số không có nghĩa kết quả là số. Hãy luôn tìm toán tử cuối cùng.
- Nhầm “bool” với “chuỗi chữ True”. Giá trị True không có dấu nháy; nếu viết ‘True’ thì đó mới là chuỗi.
- Quên rằng chia thường luôn ra float. Ngay cả 8 / 2 cũng cho 4.0 chứ không phải 4.
Mẹo nhớ
Em chỉ cần nghĩ: “Hỏi đúng hay sai thì đáp bool”. Bất cứ khi nào biểu thức đặt một câu hỏi so sánh (lớn hơn, nhỏ hơn, bằng nhau, khác nhau), kết quả chắc chắn là bool, dù hai vế phức tạp đến đâu.
Luyện tập
Em hãy xác định kiểu của các biểu thức sau rồi đối chiếu đáp án.
15 % 415 / 3'Hà' + 'Nội'len('python') >= 6
Đáp án: (1) int, vì 15 % 4 = 3. (2) float, vì chia thường cho 5.0. (3) str, vì nối hai chuỗi thành ‘HàNội’. (4) bool, vì len(‘python’) = 6 và 6 >= 6 là True.
Câu hỏi thường gặp
Biểu thức 34 + 28 > 45 cho kết quả là gì?
Kết quả là True, vì 34 + 28 = 62 và 62 lớn hơn 45. Giá trị True thuộc kiểu bool.
Vì sao không chọn int dù 34 và 28 là số nguyên?
Vì int chỉ là kiểu của tổng 34 + 28. Phép toán thực hiện sau cùng là phép so sánh nên kiểu của cả biểu thức là bool.
Làm sao kiểm tra kiểu của biểu thức trong Python?
Dùng hàm type(), ví dụ type(34 + 28 > 45). Python sẽ in ra kiểu của giá trị mà biểu thức trả về.
Kiểu bool có bao nhiêu giá trị?
Chỉ có hai giá trị là True và False. Các phép so sánh và phép logic and, or, not đều trả về một trong hai giá trị này.