🔁 5.2 if – else
📖 Giới thiệu
Câu lệnh if-else mở rộng khả năng ra quyết định của chương trình bằng cách cung cấp một lựa chọn thay thế. Khi điều kiện không đúng, thay vì bỏ qua, chương trình sẽ thực hiện một hành động khác.
Mục tiêu bài học:
- Hiểu cách hoạt động của
if-else - Biết khi nào nên sử dụng
else - Tạo chương trình với hai lựa chọn rõ ràng
- Xử lý tất cả các trường hợp có thể xảy ra
🔧 Cú pháp
Cú pháp if-else:
python
if dieu_kien:
# Thực thi khi điều kiện True
lenh_khi_dung
else:
# Thực thi khi điều kiện False
lenh_khi_saiVí dụ cụ thể:
python
tuoi = int(input("Nhập tuổi: "))
if tuoi >= 18:
print("Bạn đã trưởng thành")
else:
print("Bạn chưa trưởng thành")🔬 Phân tích & Giải thích chi tiết
1. 🎯 Khi nào dùng if-else
Sử dụng if-else khi:
- Cần xử lý cả trường hợp đúng và sai
- Muốn đảm bảo có hành động trong mọi tình huống
- Tạo logic nhị phân (có/không, đúng/sai)
python
# Ví dụ: Kiểm tra số chẵn lẻ
so = int(input("Nhập số: "))
if so % 2 == 0:
print(f"{so} là số chẵn")
else:
print(f"{so} là số lẻ")2. 🔄 Luồng thực thi
Chỉ một khối được thực thi:
python
diem = 85
if diem >= 80:
print("Học lực Giỏi") # Chỉ dòng này chạy
loai = "Giỏi"
else:
print("Học lực chưa đạt Giỏi") # Không chạy
loai = "Khác"
print(f"Kết quả: {loai}") # Luôn chạy3. 💡 So sánh với chỉ dùng if
Chỉ dùng if:
python
tuoi = 15
if tuoi >= 18:
print("Được vào")
# Không có thông báo gì nếu tuoi < 18
print("Kết thúc chương trình")Dùng if-else:
python
tuoi = 15
if tuoi >= 18:
print("Được vào")
else:
print("Không được vào") # Luôn có phản hồi
print("Kết thúc chương trình")4. 🎨 Nested if-else (Lồng nhau)
python
tuoi = int(input("Tuổi: "))
if tuoi >= 18:
print("Trưởng thành")
# If lồng bên trong
if tuoi >= 65:
print("Được nghỉ hưu")
else:
print("Còn làm việc")
else:
print("Chưa trưởng thành")
if tuoi >= 6:
print("Đi học")
else:
print("Chưa đi học")💻 Ví dụ minh họa
Ví dụ 1: Hệ thống đăng nhập đơn giản
python
# dang_nhap_don_gian.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
ten_dang_nhap = input("👤 Tên đăng nhập: ")
mat_khau = input("🔒 Mật khẩu: ")
# Kiểm tra thông tin
if ten_dang_nhap == tai_khoan_dung and mat_khau == mat_khau_dung:
print("✅ Đăng nhập thành công!")
print("🎉 Chào mừng bạn đến với hệ thống!")
print("🛠️ Bạn có thể sử dụng các chức năng sau:")
print(" - Xem thông tin cá nhân")
print(" - Cập nhật hồ sơ")
print(" - Đăng xuất")
else:
print("❌ Đăng nhập thất bại!")
print("🔍 Vui lòng kiểm tra lại:")
print(" - Tên đăng nhập có đúng không?")
print(" - Mật khẩu có chính xác không?")
print(" - Có viết sai chữ hoa/thường không?")
print("🔄 Thử lại lần nữa")Ví dụ 2: Máy tính BMI với phân loại
python
# may_tinh_bmi.py
print("📊 MÁY TÍNH CHỈ SỐ BMI")
print("=" * 30)
# Nhập thông tin
ten = input("👤 Tên: ")
can_nang = float(input("⚖️ Cân nặng (kg): "))
chieu_cao = float(input("📏 Chiều cao (m): "))
# Tính BMI
bmi = can_nang / (chieu_cao ** 2)
print(f"\n📈 KẾT QUẢ BMI CỦA {ten.upper()}")
print("=" * 35)
print(f"⚖️ Cân nặng: {can_nang} kg")
print(f"📏 Chiều cao: {chieu_cao} m")
print(f"📊 BMI: {bmi:.2f}")
# Phân loại BMI với if-else lồng nhau
if bmi < 18.5:
print("📊 Phân loại: THIẾU CÂN")
print("💡 Khuyến nghị:")
print(" - Tăng cường dinh dưỡng")
print(" - Ăn nhiều protein")
print(" - Tập thể dục nhẹ nhàng")
if bmi < 16:
print("⚠️ CẢNH BÁO: Thiếu cân nghiêm trọng!")
print("🏥 Nên đến gặp bác sĩ")
else:
print("📋 Thiếu cân nhẹ, cần cải thiện")
else:
if bmi < 25:
print("📊 Phân loại: BÌNH THƯỜNG")
print("✅ Chúc mừng! Cân nặng lý tưởng")
print("💡 Khuyến nghị:")
print(" - Duy trì chế độ ăn cân bằng")
print(" - Tập thể dục đều đặn")
print(" - Giữ lối sống lành mạnh")
else:
if bmi < 30:
print("📊 Phân loại: THỪA CÂN")
print("⚠️ Cần giảm cân")
print("💡 Khuyến nghị:")
print(" - Giảm lượng calories nạp vào")
print(" - Tăng cường vận động")
print(" - Ăn nhiều rau xanh")
else:
print("📊 Phân loại: BÉO PHÌ")
print("🚨 CẢNH BÁO: Béo phì!")
print("💡 Khuyến nghị:")
print(" - Xây dựng kế hoạch giảm cân")
print(" - Tập thể dục cường độ cao")
print(" - Tham khảo ý kiến bác sĩ")
if bmi >= 35:
print("🏥 NÊN GẶP BÁC SĨ NGAY!")
print("\n📞 Liên hệ chuyên gia dinh dưỡng: 0123-456-789")Ví dụ 3: Game đoán số với phản hồi
python
# game_doan_so.py
import random
print("🎮 GAME ĐOÁN SỐ")
print("=" * 20)
# Tạo số ngẫu nhiên
so_bi_mat = random.randint(1, 100)
print("🤖 Tôi đã nghĩ ra một số từ 1 đến 100")
print("🎯 Hãy đoán xem đó là số nào!")
# Cho người chơi 7 lần đoán
max_lan_doan = 7
lan_doan = 0
while lan_doan < max_lan_doan:
lan_doan += 1
print(f"\n🔢 Lần đoán {lan_doan}/{max_lan_doan}")
try:
du_doan = int(input("Số bạn đoán: "))
except ValueError:
print("❌ Vui lòng nhập một số nguyên!")
lan_doan -= 1 # Không tính lần đoán này
continue
# Kiểm tra dự đoán
if du_doan == so_bi_mat:
print("🎉 CHÍNH XÁC!")
print(f"✨ Bạn đã đoán đúng số {so_bi_mat}")
print(f"🏆 Chúc mừng! Bạn thắng sau {lan_doan} lần đoán!")
# Đánh giá kết quả
if lan_doan == 1:
print("😱 THẬT KỲ DIỆU! Đoán trúng ngay lần đầu!")
elif lan_doan <= 3:
print("🌟 XUẤT SẮC! Bạn rất giỏi đoán số!")
elif lan_doan <= 5:
print("👍 TỐT! Kết quả khá ổn!")
else:
print("😅 Cũng được! Lần sau sẽ nhanh hơn!")
break
else:
if du_doan < so_bi_mat:
print("📈 Số tôi nghĩ LỚN HƠN!")
# Gợi ý thêm
if so_bi_mat - du_doan > 30:
print("💡 Gợi ý: Lớn hơn NHIỀU!")
elif so_bi_mat - du_doan > 10:
print("💡 Gợi ý: Lớn hơn khá nhiều!")
else:
print("💡 Gợi ý: Lớn hơn một chút!")
else:
print("📉 Số tôi nghĩ NHỎ HƠN!")
# Gợi ý thêm
if du_doan - so_bi_mat > 30:
print("💡 Gợi ý: Nhỏ hơn NHIỀU!")
elif du_doan - so_bi_mat > 10:
print("💡 Gợi ý: Nhỏ hơn khá nhiều!")
else:
print("💡 Gợi ý: Nhỏ hơn một chút!")
# Kiểm tra còn bao nhiêu lần
con_lai = max_lan_doan - lan_doan
if con_lai > 0:
print(f"⏰ Còn {con_lai} lần đoán!")
else:
print("😔 Hết lượt rồi!")
print(f"🔢 Số tôi nghĩ là: {so_bi_mat}")
print("🔄 Chơi lại lần sau nhé!")
print("\n🎮 Cảm ơn bạn đã chơi!")🏋️ Thực hành
Bài tập 1: Kiểm tra số dương âm
Nhiệm vụ: Viết chương trình kiểm tra số dương, âm, hoặc bằng 0
python
# TODO: Nhập một số và kiểm tra:
# - Số dương: > 0
# - Số âm: < 0
# - Bằng 0: = 0Đáp án:
python
# kiem_tra_so.py
so = float(input("Nhập một số: "))
if so > 0:
print(f"{so} là số dương")
print("✅ Số này có giá trị tích cực")
elif so < 0:
print(f"{so} là số âm")
print("⚠️ Số này có giá trị âm")
else:
print("Số này bằng 0")
print("⚪ Số trung tính")Bài tập 2: Hệ thống xếp loại học lực
Nhiệm vụ: Xếp loại học lực theo điểm số
python
# TODO: Phân loại theo thang điểm:
# 9.0-10: Xuất sắc
# 8.0-8.9: Giỏi
# 6.5-7.9: Khá
# 5.0-6.4: Trung bình
# < 5.0: YếuĐáp án:
python
# xep_loai_hoc_luc.py
print("📊 HỆ THỐNG XẾP LOẠI HỌC LỰC")
print("=" * 35)
ten = input("👤 Tên học sinh: ")
diem = float(input("📝 Điểm trung bình: "))
print(f"\n📋 KẾT QUẢ XẾP LOẠI - {ten.upper()}")
print("-" * 30)
if diem >= 9.0:
if diem > 10.0:
print("❌ Điểm không hợp lệ (>10)")
else:
print("🏆 Học lực: XUẤT SẮC")
print("✨ Thành tích tuyệt vời!")
print("🎯 Hãy duy trì phong độ này!")
elif diem >= 8.0:
print("🥇 Học lực: GIỎI")
print("👏 Kết quả rất tốt!")
print("📈 Cố gắng thêm để đạt Xuất sắc!")
elif diem >= 6.5:
print("⭐ Học lực: KHÁ")
print("👍 Kết quả khá tốt!")
print("💪 Cần cố gắng hơn nữa!")
elif diem >= 5.0:
print("📚 Học lực: TRUNG BÌNH")
print("😐 Cần cải thiện!")
print("🔥 Hãy nỗ lực hơn!")
else:
if diem < 0:
print("❌ Điểm không hợp lệ (<0)")
else:
print("📉 Học lực: YẾU")
print("😟 Kết quả chưa đạt yêu cầu")
print("🆘 Cần có kế hoạch cải thiện!")
print(f"\n📊 Điểm số: {diem}/10")Bài tập 3: Máy tính tip (tiền boa)
Nhiệm vụ: Tính tiền boa dựa trên mức độ hài lòng
python
# TODO: Tính tip theo mức độ:
# Rất hài lòng: 20%
# Hài lòng: 15%
# Bình thường: 10%
# Không hài lòng: 5%Đáp án:
python
# may_tinh_tip.py
print("💰 MÁY TÍNH TIỀN BOA")
print("=" * 25)
# Nhập thông tin
tong_hoa_don = float(input("💵 Tổng hóa đơn (VNĐ): "))
print("\n📊 Mức độ hài lòng:")
print("1. 😍 Rất hài lòng (20%)")
print("2. 😊 Hài lòng (15%)")
print("3. 😐 Bình thường (10%)")
print("4. 😕 Không hài lòng (5%)")
lua_chon = input("\n👉 Chọn mức độ (1-4): ")
# Tính tip theo lựa chọn
if lua_chon == "1":
ty_le_tip = 0.20
muc_do = "Rất hài lòng 😍"
loi_nhan_xet = "Dịch vụ xuất sắc!"
elif lua_chon == "2":
ty_le_tip = 0.15
muc_do = "Hài lòng 😊"
loi_nhan_xet = "Dịch vụ tốt!"
elif lua_chon == "3":
ty_le_tip = 0.10
muc_do = "Bình thường 😐"
loi_nhan_xet = "Dịch vụ ở mức bình thường"
elif lua_chon == "4":
ty_le_tip = 0.05
muc_do = "Không hài lòng 😕"
loi_nhan_xet = "Dịch vụ cần cải thiện"
else:
print("❌ Lựa chọn không hợp lệ!")
print("🔄 Vui lòng chạy lại chương trình")
exit()
# Tính toán
tien_tip = tong_hoa_don * ty_le_tip
tong_thanh_toan = tong_hoa_don + tien_tip
# Hiển thị kết quả
print(f"\n💳 HÓA ĐƠN THANH TOÁN")
print("=" * 25)
print(f"🍽️ Tổng hóa đơn: {tong_hoa_don:,.0f} VNĐ")
print(f"📊 Mức độ: {muc_do}")
print(f"💡 Nhận xét: {loi_nhan_xet}")
print(f"💰 Tiền tip ({ty_le_tip*100:.0f}%): {tien_tip:,.0f} VNĐ")
print("-" * 25)
print(f"💳 TỔNG THANH TOÁN: {tong_thanh_toan:,.0f} VNĐ")
# Lời khuyên
if ty_le_tip >= 0.15:
print("\n🌟 Bạn rất hào phóng!")
else:
print("\n💡 Tip là cách cảm ơn dịch vụ tốt!")📋 Tóm tắt
Cấu trúc if-else:
python
# Template cơ bản
if dieu_kien:
# Khối lệnh khi True
pass
else:
# Khối lệnh khi False
passQuy tắc quan trọng:
- 🎯 Chỉ một khối được thực thi: if HOẶC else, không bao giờ cả hai
- 📏 Indentation nhất quán: Tất cả lệnh trong khối phải thụt lề như nhau
- ⚠️ else không có điều kiện: else bắt tất cả trường hợp còn lại
- 🔄 else là tùy chọn: Có thể chỉ dùng if mà không cần else
So sánh với chỉ dùng if:
| Trường hợp | Chỉ if | if-else |
|---|---|---|
| Xử lý điều kiện đúng | ✅ | ✅ |
| Xử lý điều kiện sai | ❌ Bỏ qua | ✅ Có xử lý |
| Đảm bảo có phản hồi | ❌ | ✅ |
| Phù hợp cho | Hành động tùy chọn | Lựa chọn bắt buộc |
Patterns thường dùng:
python
# Validation
if du_lieu_hop_le:
xu_ly_du_lieu()
else:
hien_thi_loi()
# Authentication
if dang_nhap_thanh_cong:
cho_phep_truy_cap()
else:
tu_choi_truy_cap()
# Configuration
if la_admin:
hien_thi_menu_quan_tri()
else:
hien_thi_menu_binh_thuong()Best practices:
- 💭 Suy nghĩ về tất cả trường hợp trước khi code
- 📝 Viết điều kiện rõ ràng, dễ hiểu
- 🎯 Xử lý cả trường hợp True và False nếu cần
- 🔍 Test cả hai nhánh của if-else
- 📚 Sử dụng comment cho logic phức tạp
Chuẩn bị cho bài tiếp theo:
Bài tiếp theo sẽ học về 🧭 if – elif – else - cách xử lý nhiều điều kiện cùng lúc!
💡 Mẹo: if-else đảm bảo chương trình luôn có phản hồi. Sử dụng khi cần xử lý cả hai trường hợp có thể xảy ra!
🎯 Thực hành: Hãy nghĩ về các tình huống thực tế cần if-else: đăng nhập, kiểm tra tuổi, phân loại dữ liệu...