Logic Boolean: AND, OR, NOT và bảng chân trị cho người mới

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

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.

Boolean là gì?

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")  # True

Ba phép toán cơ bản

AND (và)

Chỉ đú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".

OR (hoặc)

Đúng khi ít nhất một vế đúng. Giống "trả tiền mặt HOẶC chuyển khoản đều được".

NOT (phủ định)

Đảo ngược giá trị: đúng thành sai, sai thành đúng.

Bảng chân trị

ABA and BA or Bnot A
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue

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)

Thứ tự ưu tiên

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")

Đánh giá tắt (short-circuit)

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ỗi

Định lý De Morgan

Hai 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:
    pass

Hai đ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: một trong hai, không phải cả hai

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.

Lỗi thường gặp

  1. Viết 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.
  2. So sánh Boolean với True một cách thừa: viết if da_dang_nhap: gọn hơn if da_dang_nhap == True:.
  3. Dùng quá nhiều phủ định lồng nhau khiến điều kiện khó đọc; hãy đặt tên biến tích cực như co_quyen thay vì khong_bi_cam.

Rút gọn điều kiện cho code sạch hơn

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)   # True

Mẫ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.

Kết luận

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.

author_photo
Nguyễn Đình Cường

0 comment