Skip to content

🔐 5.4 Toán tử logic (and, or, not)

📖 Giới thiệu

Toán tử logic giúp ta kết hợp nhiều điều kiện lại với nhau. Thay vì viết nhiều câu if lồng nhau, ta có thể sử dụng and, or, not để làm cho code ngắn gọn và dễ hiểu hơn.

Mục tiêu bài học:

  • Hiểu và sử dụng toán tử and, or, not
  • Kết hợp nhiều điều kiện trong một câu if
  • Viết điều kiện phức tạp một cách rõ ràng

🔧 Cú pháp

1. 🤝 Toán tử AND (và):

python
# Cả hai điều kiện phải đúng
if điều_kiện_1 and điều_kiện_2:
    print("Cả hai điều kiện đều đúng")

# Ví dụ
tuoi = 20
diem = 8
if tuoi >= 18 and diem >= 7:
    print("Đủ điều kiện")

2. 🔄 Toán tử OR (hoặc):

python
# Chỉ cần một điều kiện đúng
if điều_kiện_1 or điều_kiện_2:
    print("Ít nhất một điều kiện đúng")

# Ví dụ
ngay = "CN"
if ngay == "T7" or ngay == "CN":
    print("Cuối tuần")

3. 🚫 Toán tử NOT (không):

python
# Đảo ngược kết quả
if not điều_kiện:
    print("Điều kiện sai")

# Ví dụ
co_the_thi = False
if not co_the_thi:
    print("Không thể thi")

🔬 Phân tích & Giải thích chi tiết

1. 📊 Bảng chân lý

AND (và):

ABA and B
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

OR (hoặc):

ABA or B
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

NOT (không):

Anot A
TrueFalse
FalseTrue

2. 🔍 Ví dụ thực tế

python
# Kiểm tra tuổi và điểm để vào đại học
tuoi = int(input("Tuổi: "))
diem = float(input("Điểm: "))

# Dùng AND
if tuoi >= 18 and diem >= 7:
    print("✅ Đủ điều kiện vào đại học")
else:
    print("❌ Không đủ điều kiện")

# Dùng OR  
if tuoi < 18 or diem < 7:
    print("❌ Thiếu ít nhất 1 điều kiện")

# Dùng NOT
if not (tuoi >= 18 and diem >= 7):
    print("❌ Không đủ điều kiện")

3. 🎯 Kết hợp nhiều toán tử

python
# Kiểm tra ngày làm việc và giờ hành chính
gio = int(input("Giờ hiện tại (0-23): "))
ngay = input("Ngày trong tuần (T2-CN): ")

# Giờ hành chính: 8-17h, thứ 2-6
if (gio >= 8 and gio <= 17) and (ngay != "T7" and ngay != "CN"):
    print("⏰ Đang trong giờ hành chính")
else:
    print("🚫 Ngoài giờ hành chính")

# Viết ngắn gọn hơn với not và or
if not (ngay == "T7" or ngay == "CN"):
    ngay_lam_viec = True
else:
    ngay_lam_viec = False

💻 Ví dụ minh họa

Ví dụ 1: Kiểm tra điều kiện xin việc

python
# kiem_tra_xin_viec.py
print("💼 KIỂM TRA ĐIỀU KIỆN XIN VIỆC")
print("=" * 35)

# Nhập thông tin
tuoi = int(input("Tuổi: "))
kinh_nghiem = int(input("Kinh nghiệm (năm): "))
bang_cap = input("Có bằng đại học? (co/khong): ")
ngoai_ngu = input("Biết tiếng Anh? (co/khong): ")

# Chuyển sang boolean
co_bang_cap = (bang_cap == "co")
biet_anh = (ngoai_ngu == "co")

# Kiểm tra điều kiện
print(f"\n📋 KẾT QUẢ ĐÁNH GIÁ:")

# Điều kiện cơ bản: 22-60 tuổi
if tuoi >= 22 and tuoi <= 60:
    print("✅ Đủ tuổi lao động")
    
    # Kiểm tra kỹ năng
    if (kinh_nghiem >= 2) or (co_bang_cap and biet_anh):
        print("✅ Đủ điều kiện về kỹ năng")
        print("🎉 ĐƯỢC NHẬN VÀO LÀM!")
    else:
        print("❌ Thiếu kỹ năng")
        print("💡 Cần: 2+ năm kinh nghiệm HOẶC (bằng ĐH + tiếng Anh)")
else:
    print("❌ Không đủ tuổi lao động")

Ví dụ 2: Hệ thống đăng nhập

python
# he_thong_dang_nhap.py
print("🔐 HỆ THỐNG ĐĂNG NHẬP")
print("=" * 25)

# Tài khoản mẫu
tai_khoan_dung = "admin"
mat_khau_dung = "123456"

# Nhập thông tin
tai_khoan = input("Tài khoản: ")
mat_khau = input("Mật khẩu: ")

# Kiểm tra đăng nhập
if tai_khoan == tai_khoan_dung and mat_khau == mat_khau_dung:
    print("✅ Đăng nhập thành công!")
    print("🏠 Chào mừng đến với hệ thống")
elif tai_khoan == tai_khoan_dung and mat_khau != mat_khau_dung:
    print("❌ Sai mật khẩu!")
elif tai_khoan != tai_khoan_dung and mat_khau == mat_khau_dung:
    print("❌ Sai tài khoản!")
else:
    print("❌ Sai cả tài khoản và mật khẩu!")

# Cách viết ngắn gọn hơn
if not (tai_khoan == tai_khoan_dung and mat_khau == mat_khau_dung):
    print("🚫 Đăng nhập thất bại!")

Ví dụ 3: Máy bán nước tự động

python
# may_ban_nuoc.py
print("🥤 MÁY BÁN NƯỚC TỰ ĐỘNG")
print("=" * 25)

# Thông tin máy
nuoc_ngot = 10  # số lượng
nuoc_suoi = 5
tien_trong_may = 0

# Nhập lựa chọn
print("1. Nước ngọt - 15,000 VND")
print("2. Nước suối - 10,000 VND")
loai_nuoc = int(input("Chọn loại nước (1-2): "))
tien_khach = int(input("Tiền khách đưa: "))

# Kiểm tra điều kiện bán
if loai_nuoc == 1:
    gia = 15000
    co_hang = (nuoc_ngot > 0)
    ten_nuoc = "nước ngọt"
elif loai_nuoc == 2:
    gia = 10000
    co_hang = (nuoc_suoi > 0)
    ten_nuoc = "nước suối"
else:
    print("❌ Lựa chọn không hợp lệ!")
    co_hang = False

# Xử lý mua bán
if co_hang and tien_khach >= gia:
    tien_thua = tien_khach - gia
    print(f"✅ Mua thành công 1 chai {ten_nuoc}")
    print(f"💰 Tiền thừa: {tien_thua:,} VND")
elif not co_hang:
    print(f"❌ Hết {ten_nuoc}!")
elif tien_khach < gia:
    print(f"❌ Thiếu {gia - tien_khach:,} VND!")

🏋️ Thực hành

Bài tập 1: Kiểm tra số hợp lệ

Nhiệm vụ: Kiểm tra số trong khoảng và chẵn/lẻ

python
# Kiểm tra số từ 1-100 và là số chẵn
so = int(input("Nhập số: "))

if so >= 1 and so <= 100 and so % 2 == 0:
    print("Số hợp lệ và chẵn")
elif so >= 1 and so <= 100:
    print("Số hợp lệ nhưng lẻ")  
else:
    print("Số không hợp lệ")

Bài tập 2: Phân loại tam giác

Nhiệm vụ: Kiểm tra 3 cạnh có tạo thành tam giác không

python
# Nhập 3 cạnh
a = float(input("Cạnh a: "))
b = float(input("Cạnh b: "))
c = float(input("Cạnh c: "))

# Kiểm tra điều kiện tạo tam giác
if (a + b > c) and (a + c > b) and (b + c > a):
    print("✅ Tạo thành tam giác")
    
    # Phân loại tam giác
    if a == b == c:
        print("🔺 Tam giác đều")
    elif a == b or b == c or a == c:
        print("🔺 Tam giác cân")
    else:
        print("🔺 Tam giác thường")
else:
    print("❌ Không tạo thành tam giác")

Bài tập 3: Kiểm tra năm nhuận

Nhiệm vụ: Xác định năm nhuận

python
# Năm nhuận: chia hết cho 4 NHƯNG không chia hết cho 100
# HOẶC chia hết cho 400
nam = int(input("Nhập năm: "))

if (nam % 4 == 0 and nam % 100 != 0) or (nam % 400 == 0):
    print(f"{nam} là năm nhuận")
else:
    print(f"{nam} không phải năm nhuận")

📋 Tóm tắt

Ba toán tử logic cơ bản:

Toán tửÝ nghĩaVí dụKết quả
andTrue and FalseFalse
orHOẶCTrue or FalseTrue
notKHÔNGnot TrueFalse

Quy tắc ưu tiên:

  1. not (cao nhất)
  2. and
  3. or (thấp nhất)
python
# Ví dụ về ưu tiên
result = True or False and not True
# Tương đương: True or (False and (not True))
# = True or (False and False)  
# = True or False
# = True

Mẹo viết điều kiện rõ ràng:

python
# ❌ Khó đọc
if not (not (a > 5) or not (b < 10)):
    pass

# ✅ Dễ đọc  
if a > 5 and b < 10:
    pass

# ❌ Dài dòng
if x == 1 or x == 2 or x == 3:
    pass
    
# ✅ Ngắn gọn
if x in [1, 2, 3]:
    pass

Chuẩn bị cho bài tiếp theo:

Bài tiếp theo sẽ học về 🔁 Vòng lặp for - cách lặp lại công việc một cách tự động!


💡 Mẹo: Dùng dấu ngoặc () để nhóm điều kiện khi kết hợp nhiều toán tử!

🔐 Thực hành: Thử các tổ hợp điều kiện khác nhau để hiểu rõ cách hoạt động!

🐍 Khóa học Python căn bản bằng tiếng Việt