🧭 5.3 if – elif – else
📖 Giới thiệu
Khi có nhiều điều kiện cần kiểm tra, ta sử dụng elif (else if). Đây là cách để kiểm tra nhiều trường hợp khác nhau một cách có thứ tự.
Mục tiêu bài học:
- Hiểu cách sử dụng elif để kiểm tra nhiều điều kiện
- Biết thứ tự kiểm tra điều kiện
- Viết chương trình phân loại dựa trên nhiều tiêu chí
🔧 Cú pháp
Cú pháp cơ bản:
python
if điều_kiện_1:
# Code khi điều kiện 1 đúng
elif điều_kiện_2:
# Code khi điều kiện 2 đúng
elif điều_kiện_3:
# Code khi điều kiện 3 đúng
else:
# Code khi tất cả điều kiện đều saiVí dụ đơn giản:
python
diem = int(input("Nhập điểm: "))
if diem >= 8:
print("Giỏi")
elif diem >= 6:
print("Khá")
elif diem >= 4:
print("Trung bình")
else:
print("Yếu")🔬 Phân tích & Giải thích chi tiết
1. 🔄 Thứ tự kiểm tra điều kiện
Quan trọng: Python kiểm tra điều kiện từ trên xuống dưới và dừng ngay khi tìm thấy điều kiện đúng đầu tiên.
python
# Ví dụ về thứ tự kiểm tra
so = 15
if so > 10:
print("Lớn hơn 10") # ✅ In ra cái này
elif so > 5:
print("Lớn hơn 5") # ❌ Không chạy dù đúng
elif so > 0:
print("Lớn hơn 0") # ❌ Không chạy dù đúng2. 🎯 Phân loại điểm số
python
# Phân loại học lực
diem = float(input("Nhập điểm: "))
if diem >= 9:
hoc_luc = "Xuất sắc"
elif diem >= 8:
hoc_luc = "Giỏi"
elif diem >= 6.5:
hoc_luc = "Khá"
elif diem >= 5:
hoc_luc = "Trung bình"
elif diem >= 3.5:
hoc_luc = "Yếu"
else:
hoc_luc = "Kém"
print(f"Học lực: {hoc_luc}")3. 🗓️ Xác định tên ngày trong tuần
python
# Xác định ngày trong tuần
thu = int(input("Nhập số thứ (2-8): "))
if thu == 2:
ngay = "Thứ Hai"
elif thu == 3:
ngay = "Thứ Ba"
elif thu == 4:
ngay = "Thứ Tư"
elif thu == 5:
ngay = "Thứ Năm"
elif thu == 6:
ngay = "Thứ Sáu"
elif thu == 7:
ngay = "Thứ Bảy"
elif thu == 8:
ngay = "Chủ Nhật"
else:
ngay = "Không hợp lệ"
print(f"Hôm nay là: {ngay}")💻 Ví dụ minh họa
Ví dụ 1: Phân loại BMI
python
# phan_loai_bmi.py
print("📏 PHÂN LOẠI BMI")
print("=" * 20)
# Nhập thông tin
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 * chieu_cao)
# Phân loại BMI
if bmi < 18.5:
phan_loai = "Thiếu cân"
loi_khuyen = "Nên tăng cân"
elif bmi < 23:
phan_loai = "Bình thường"
loi_khuyen = "Duy trì cân nặng"
elif bmi < 25:
phan_loai = "Thừa cân"
loi_khuyen = "Nên giảm cân nhẹ"
else:
phan_loai = "Béo phì"
loi_khuyen = "Cần giảm cân"
# Hiển thị kết quả
print(f"\n📊 KẾT QUẢ:")
print(f"BMI: {bmi:.1f}")
print(f"Phân loại: {phan_loai}")
print(f"Lời khuyên: {loi_khuyen}")Ví dụ 2: Máy tính đơn giản
python
# may_tinh_don_gian.py
print("🧮 MÁY TÍNH ĐƠN GIẢN")
print("=" * 25)
# Nhập số
so_thu_nhat = float(input("Số thứ nhất: "))
so_thu_hai = float(input("Số thứ hai: "))
phep_toan = input("Phép toán (+, -, *, /): ")
# Thực hiện phép tính
if phep_toan == "+":
ket_qua = so_thu_nhat + so_thu_hai
ten_phep = "cộng"
elif phep_toan == "-":
ket_qua = so_thu_nhat - so_thu_hai
ten_phep = "trừ"
elif phep_toan == "*":
ket_qua = so_thu_nhat * so_thu_hai
ten_phep = "nhân"
elif phep_toan == "/":
if so_thu_hai != 0:
ket_qua = so_thu_nhat / so_thu_hai
ten_phep = "chia"
else:
print("❌ Lỗi: Không thể chia cho 0!")
ten_phep = None
else:
print("❌ Phép toán không hợp lệ!")
ten_phep = None
# Hiển thị kết quả
if ten_phep:
print(f"\n📊 KẾT QUẢ:")
print(f"{so_thu_nhat} {phep_toan} {so_thu_hai} = {ket_qua}")🏋️ Thực hành
Bài tập 1: Phân loại tuổi
Nhiệm vụ: Phân loại độ tuổi
python
# Phân loại: Trẻ em (< 13), Thiếu niên (13-17),
# Thanh niên (18-30), Trung niên (31-60), Cao tuổi (> 60)
tuoi = int(input("Nhập tuổi: "))
if tuoi < 13:
print("Trẻ em")
elif tuoi <= 17:
print("Thiếu niên")
elif tuoi <= 30:
print("Thanh niên")
elif tuoi <= 60:
print("Trung niên")
else:
print("Cao tuổi")Bài tập 2: Xác định mùa
Nhiệm vụ: Xác định mùa dựa trên tháng
python
# Tháng 12,1,2: Mùa đông
# Tháng 3,4,5: Mùa xuân
# Tháng 6,7,8: Mùa hè
# Tháng 9,10,11: Mùa thu
thang = int(input("Nhập tháng (1-12): "))
if thang in [12, 1, 2]:
print("Mùa đông")
elif thang in [3, 4, 5]:
print("Mùa xuân")
elif thang in [6, 7, 8]:
print("Mùa hè")
elif thang in [9, 10, 11]:
print("Mùa thu")
else:
print("Tháng không hợp lệ")Bài tập 3: Tính giá vé xem phim
Nhiệm vụ: Tính giá vé theo độ tuổi và ngày
python
# Trẻ em (<12): 50k, Học sinh (12-18): 70k
# Người lớn (19-60): 100k, Cao tuổi (>60): 60k
# Cuối tuần tăng 20k
tuoi = int(input("Tuổi: "))
ngay = input("Ngày (T2-CN): ")
# Xác định giá cơ bản
if tuoi < 12:
gia = 50000
elif tuoi <= 18:
gia = 70000
elif tuoi <= 60:
gia = 100000
else:
gia = 60000
# Tăng giá cuối tuần
if ngay in ["T7", "CN"]:
gia += 20000
print(f"Giá vé: {gia:,} VND")📋 Tóm tắt
Cú pháp if-elif-else:
python
if điều_kiện_1:
# Khối 1
elif điều_kiện_2:
# Khối 2
elif điều_kiện_3:
# Khối 3
else:
# Khối mặc địnhQuy tắc quan trọng:
- 🔄 Thứ tự: Python kiểm tra từ trên xuống dưới
- 🚪 Dừng sớm: Chỉ thực hiện khối đầu tiên có điều kiện đúng
- 🎯 else: Tùy chọn, chạy khi tất cả điều kiện sai
- 📝 Thụt lề: Phải thụt lề đồng nhất trong mỗi khối
So sánh với if đơn giản:
| if đơn | if-elif-else |
|---|---|
| Kiểm tra tất cả điều kiện | Dừng ở điều kiện đúng đầu tiên |
| Có thể thực hiện nhiều khối | Chỉ thực hiện 1 khối |
| Phù hợp kiểm tra độc lập | Phù hợp phân loại |
Chuẩn bị cho bài tiếp theo:
Bài tiếp theo sẽ học về 🔐 Toán tử logic (and, or, not) - cách kết hợp nhiều điều kiện!
💡 Mẹo: Sắp xếp điều kiện từ cụ thể đến chung chung để tránh lỗi logic!
🧭 Thực hành: Thử thay đổi thứ tự điều kiện để hiểu sự khác biệt!