Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Mỗi câu lệnh if bạn viết đều dựa vào một thứ rất đơn giản: đúng hoặc sai. Logic Boolean là bộ quy tắc để kết hợp các giá trị đúng sai đó, và nắm chắc nó giúp bạn viết điều kiện gọn, ít lỗi.
Kiểu Boolean (đặt theo tên nhà toán học George Boole) chỉ có hai giá trị: True (đúng) và False (sai). Kết quả của mọi phép so sánh là Boolean:
print(5 > 3) # True
print(2 == 3) # False
print("a" in "cat") # TrueChỉ đúng khi cả hai vế cùng đúng. Giống điều kiện "có vé VÀ đủ tuổi mới được vào rạp".
Đúng khi ít nhất một vế đúng. Giống "trả tiền mặt HOẶC chuyển khoản đều được".
Đảo ngược giá trị: đúng thành sai, sai thành đúng.
| A | B | A and B | A or B | not A |
|---|---|---|---|---|
| True | True | True | True | False |
| True | False | False | True | False |
| False | True | False | True | True |
| False | False | False | False | True |
Bảng này liệt kê mọi tổ hợp đầu vào và kết quả tương ứng. Nó là công cụ tuyệt vời để kiểm tra một biểu thức phức tạp: liệt kê hết các trường hợp rồi so với mong muốn.
Bạn có thể tự in bảng chân trị bằng code:
for a in (True, False):
for b in (True, False):
print(a, b, a and b, a or b, not a)Trong hầu hết ngôn ngữ, not được tính trước, rồi đến and, cuối cùng là or. Biểu thức A or B and C được hiểu là A or (B and C). Để khỏi nhầm, hãy dùng ngoặc cho rõ ý:
tuoi = 20
co_the = True
vip = False
if (tuoi >= 18 and co_the) or vip:
print("Được vào")Với and, nếu vế trái đã sai thì kết quả chắc chắn sai nên vế phải không được tính. Với or, nếu vế trái đã đúng thì khỏi tính vế phải. Điều này vừa nhanh, vừa tránh lỗi:
ds = []
if len(ds) > 0 and ds[0] == 5:
print("Phần tử đầu là 5")
# vế phải không chạy khi danh sách rỗng, nên không lỗiHai quy tắc giúp đơn giản hóa điều kiện phủ định:
not (A and B) bằng (not A) or (not B)not (A or B) bằng (not A) and (not B)# "không phải (người lớn và có thẻ)" tương đương
if not (tuoi >= 18 and co_the):
pass
if tuoi < 18 or not co_the:
passHai điều kiện trên cho kết quả giống nhau. Biết De Morgan, bạn có thể chọn cách viết dễ đọc hơn.
XOR (hoặc loại trừ) đúng khi hai vế khác nhau. Trong Python có thể dùng a != b với Boolean, hoặc toán tử ^. XOR hay dùng trong mật mã đơn giản và đồ họa.
if x == 1 or 2 thay vì if x == 1 or x == 2. Vế 2 luôn được coi là đúng nên điều kiện luôn đúng.if da_dang_nhap: gọn hơn if da_dang_nhap == True:.co_quyen thay vì khong_bi_cam.Hiểu Boolean giúp bạn dọn những đoạn điều kiện rườm rà. Một số mẫu hay gặp:
# 1. Trả về trực tiếp biểu thức Boolean
def du_tuoi(t):
# thay vì: if t >= 18: return True else: return False
return t >= 18
# 2. Dùng all() và any() cho nhiều điều kiện
dieu_kien = [len("abc12345") >= 8, any(c.isdigit() for c in "abc12345")]
print(all(dieu_kien)) # True: mọi điều kiện đều đúng
print(any(dieu_kien)) # True: có ít nhất một điều kiện đúng
# 3. Kiểm tra khoảng giá trị kiểu toán học (Python)
x = 15
print(10 <= x < 20) # TrueMẫu thứ nhất loại bỏ khối if thừa. Mẫu thứ hai hữu ích khi danh sách điều kiện dài. Mẫu thứ ba dùng phép so sánh nối chuỗi chỉ có ở Python; ở C, Java, JavaScript bạn phải viết x >= 10 && x < 20.
Ngoài ra, hãy chú ý các giá trị "giống đúng/sai" (truthy/falsy): trong Python, số 0, chuỗi rỗng, danh sách rỗng và None được coi là sai. Điều này tiện nhưng đôi khi che giấu lỗi, ví dụ if so: sẽ coi số 0 hợp lệ là sai.
AND, OR, NOT cùng bảng chân trị là bộ ba tạo nên mọi quyết định của chương trình. Khi gặp điều kiện rối, hãy lập bảng chân trị hoặc đổi sang dạng tương đương bằng De Morgan. Đó là cách đơn giản để biến đoạn code khó hiểu thành đoạn code đúng và đẹp.
Khi đã sẵn sàng đi sâu hơn, bạn có thể tham khảo lộ trình học trong các khóa học tại codebem.com.
Nguyễn Đình Cường
0 comment