Cấu trúc rẽ nhánh (If-Elif-Else)
Cấu trúc rẽ nhánh cho phép chương trình thực hiện các đoạn code khác nhau dựa trên điều kiện. Python sử dụng các câu lệnh if, elif, và else để tạo ra các nhánh quyết định.
1. Câu lệnh if
Phần tiêu đề “1. Câu lệnh if”Cú pháp cơ bản
Phần tiêu đề “Cú pháp cơ bản”if điều_kiện: # Code thực thi khi điều kiện đúng câu_lệnh_1 câu_lệnh_2Lưu ý quan trọng:
- Sau
ifphải có dấu hai chấm: - Code bên trong phải thụt lề (indent) - thường dùng 4 spaces
- Python phân biệt khối code bằng thụt lề, không dùng dấu ngoặc nhọn
{}
Ví dụ đơn giản
Phần tiêu đề “Ví dụ đơn giản”age = 18
if age >= 18: print("Bạn đã đủ tuổi trưởng thành") print("Chào mừng bạn!")
print("Chương trình kết thúc")Điều kiện boolean
Phần tiêu đề “Điều kiện boolean”# Điều kiện trả về True/Falseis_student = True
if is_student: print("Bạn là học sinh")
# Tương đương vớiif is_student == True: print("Bạn là học sinh")So sánh số
Phần tiêu đề “So sánh số”score = 85
if score >= 80: print("Điểm của bạn: Giỏi")
if score > 90: print("Xuất sắc!") # Không in vì score = 85
# So sánh nhiều điều kiệntemperature = 25
if temperature > 30: print("Trời nóng")
if temperature >= 20 and temperature <= 30: print("Thời tiết dễ chịu") # In ra dòng này2. Câu lệnh if-else
Phần tiêu đề “2. Câu lệnh if-else”Cú pháp
Phần tiêu đề “Cú pháp”if điều_kiện: # Code khi điều kiện đúng câu_lệnh_1else: # Code khi điều kiện sai câu_lệnh_2Ví dụ
Phần tiêu đề “Ví dụ”age = 15
if age >= 18: print("Bạn đã trưởng thành")else: print("Bạn chưa trưởng thành") # In ra dòng này
# Ví dụ số chẵn/lẻnumber = 7
if number % 2 == 0: print(f"{number} là số chẵn")else: print(f"{number} là số lẻ") # In ra: 7 là số lẻLồng if-else
Phần tiêu đề “Lồng if-else”password = "python123"
if len(password) >= 8: print("Độ dài mật khẩu hợp lệ")
if password.isalnum(): print("Mật khẩu chỉ chứa chữ và số") else: print("Mật khẩu có ký tự đặc biệt")else: print("Mật khẩu quá ngắn")3. Câu lệnh if-elif-else
Phần tiêu đề “3. Câu lệnh if-elif-else”Cú pháp
Phần tiêu đề “Cú pháp”if điều_kiện_1: # Code khi điều_kiện_1 đúng câu_lệnh_1elif điều_kiện_2: # Code khi điều_kiện_2 đúng câu_lệnh_2elif điều_kiện_3: # Code khi điều_kiện_3 đúng câu_lệnh_3else: # Code khi tất cả điều kiện trên đều sai câu_lệnh_4Lưu ý: Python kiểm tra từ trên xuống dưới và chỉ thực thi khối đầu tiên có điều kiện đúng.
Ví dụ xếp loại điểm
Phần tiêu đề “Ví dụ xếp loại điểm”score = 85
if score >= 90: print("Xếp loại: Xuất sắc")elif score >= 80: print("Xếp loại: Giỏi") # In ra dòng nàyelif score >= 70: print("Xếp loại: Khá")elif score >= 60: print("Xếp loại: Trung bình")else: print("Xếp loại: Yếu")Ví dụ phân loại nhiệt độ
Phần tiêu đề “Ví dụ phân loại nhiệt độ”temperature = 15
if temperature > 35: print("Rất nóng")elif temperature > 30: print("Nóng")elif temperature > 25: print("Ấm")elif temperature > 20: print("Mát") # In ra dòng nàyelif temperature > 15: print("Lạnh")else: print("Rất lạnh")Nhiều điều kiện với and/or
Phần tiêu đề “Nhiều điều kiện với and/or”age = 20has_license = True
if age >= 18 and has_license: print("Bạn có thể lái xe") # In ra dòng nàyelif age >= 18 and not has_license: print("Bạn cần có bằng lái")else: print("Bạn chưa đủ tuổi")
# Ví dụ với orday = "Saturday"
if day == "Saturday" or day == "Sunday": print("Cuối tuần!") # In ra dòng nàyelse: print("Ngày trong tuần")4. Toán tử So sánh
Phần tiêu đề “4. Toán tử So sánh”# Bằng: ==print(5 == 5) # Trueprint(5 == 3) # False
# Không bằng: !=print(5 != 3) # Trueprint(5 != 5) # False
# Lớn hơn: >print(10 > 5) # Trueprint(5 > 10) # False
# Nhỏ hơn: <print(5 < 10) # Trueprint(10 < 5) # False
# Lớn hơn hoặc bằng: >=print(10 >= 10) # Trueprint(10 >= 5) # True
# Nhỏ hơn hoặc bằng: <=print(5 <= 10) # Trueprint(5 <= 5) # True
# So sánh chuỗiprint("apple" == "apple") # Trueprint("Apple" == "apple") # False (phân biệt hoa thường)5. Toán tử Logic
Phần tiêu đề “5. Toán tử Logic”and - Cả hai điều kiện phải đúng
Phần tiêu đề “and - Cả hai điều kiện phải đúng”age = 25has_ticket = True
if age >= 18 and has_ticket: print("Được vào xem phim") # In ra dòng này
# Bảng chân trị ANDprint(True and True) # Trueprint(True and False) # Falseprint(False and True) # Falseprint(False and False) # Falseor - Ít nhất một điều kiện đúng
Phần tiêu đề “or - Ít nhất một điều kiện đúng”is_weekend = Trueis_holiday = False
if is_weekend or is_holiday: print("Được nghỉ!") # In ra dòng này
# Bảng chân trị ORprint(True or True) # Trueprint(True or False) # Trueprint(False or True) # Trueprint(False or False) # Falsenot - Đảo ngược điều kiện
Phần tiêu đề “not - Đảo ngược điều kiện”is_raining = False
if not is_raining: print("Trời không mưa, đi chơi!") # In ra dòng này
# Ví dụ kháchas_permission = False
if not has_permission: print("Bạn không có quyền truy cập") # In ra dòng nàyKết hợp nhiều toán tử logic
Phần tiêu đề “Kết hợp nhiều toán tử logic”age = 20is_student = Truehas_id = True
if (age >= 18 and age <= 25) and is_student and has_id: print("Được giảm giá 50%") # In ra dòng này
# Ví dụ phức tạp hơnscore = 75attendance = 85
if (score >= 80 or attendance >= 80) and score >= 60: print("Đạt yêu cầu") # In ra dòng này6. Membership Operators (in, not in)
Phần tiêu đề “6. Membership Operators (in, not in)”# Kiểm tra phần tử trong listfruits = ["apple", "banana", "orange"]
if "apple" in fruits: print("Có apple trong danh sách") # In ra dòng này
if "grape" not in fruits: print("Không có grape trong danh sách") # In ra dòng này
# Kiểm tra ký tự trong chuỗitext = "Hello Python"
if "Python" in text: print("Tìm thấy Python") # In ra dòng này
if "Java" not in text: print("Không tìm thấy Java") # In ra dòng này
# Kiểm tra key trong dictionaryuser = {"name": "John", "age": 25}
if "name" in user: print(f"Tên: {user['name']}") # In ra: Tên: John7. Conditional Expression (Toán tử 3 ngôi)
Phần tiêu đề “7. Conditional Expression (Toán tử 3 ngôi)”Cú pháp
Phần tiêu đề “Cú pháp”giá_trị_nếu_đúng if điều_kiện else giá_trị_nếu_saiVí dụ
Phần tiêu đề “Ví dụ”age = 20
# Cách thông thườngif age >= 18: status = "Adult"else: status = "Minor"
# Cách viết ngắn gọn (ternary operator)status = "Adult" if age >= 18 else "Minor"print(status) # Adult
# Ví dụ khácscore = 85result = "Pass" if score >= 60 else "Fail"print(result) # Pass
# Sử dụng trong printtemperature = 30print("Hot" if temperature > 25 else "Cold") # Hot
# Lồng nhiều điều kiện (không khuyến khích)score = 75grade = "A" if score >= 90 else "B" if score >= 80 else "C" if score >= 70 else "D"print(grade) # C8. Truthy và Falsy Values
Phần tiêu đề “8. Truthy và Falsy Values”Python coi một số giá trị là “falsy” (tương đương False) trong điều kiện:
# Falsy valuesif 0: print("Không in") # 0 là falsy
if "": print("Không in") # Chuỗi rỗng là falsy
if []: print("Không in") # List rỗng là falsy
if None: print("Không in") # None là falsy
# Truthy valuesif 1: print("In ra") # Số khác 0 là truthy
if "Hello": print("In ra") # Chuỗi không rỗng là truthy
if [1, 2, 3]: print("In ra") # List không rỗng là truthy
# Ứng dụng thực tếuser_input = input("Nhập tên: ")
if user_input: # Kiểm tra có nhập gì không print(f"Xin chào, {user_input}!")else: print("Bạn chưa nhập tên")9. Ví dụ thực tế
Phần tiêu đề “9. Ví dụ thực tế”Máy tính BMI
Phần tiêu đề “Máy tính BMI”weight = float(input("Nhập cân nặng (kg): "))height = float(input("Nhập chiều cao (m): "))
bmi = weight / (height ** 2)
print(f"BMI của bạn: {bmi:.2f}")
if bmi < 18.5: print("Phân loại: Gầy")elif bmi < 25: print("Phân loại: Bình thường")elif bmi < 30: print("Phân loại: Thừa cân")else: print("Phân loại: Béo phì")Kiểm tra năm nhuận
Phần tiêu đề “Kiểm tra năm nhuận”year = int(input("Nhập năm: "))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): print(f"{year} là năm nhuận")else: print(f"{year} không phải năm nhuận")Hệ thống đăng nhập đơn giản
Phần tiêu đề “Hệ thống đăng nhập đơn giản”correct_username = "admin"correct_password = "python123"
username = input("Username: ")password = input("Password: ")
if username == correct_username and password == correct_password: print("Đăng nhập thành công!") print("Chào mừng bạn đến hệ thống")elif username == correct_username: print("Sai mật khẩu!")else: print("Tên đăng nhập không tồn tại!")Tính giá vé xem phim
Phần tiêu đề “Tính giá vé xem phim”age = int(input("Nhập tuổi: "))is_student = input("Bạn có phải học sinh/sinh viên? (yes/no): ").lower() == "yes"is_weekend = input("Hôm nay có phải cuối tuần? (yes/no): ").lower() == "yes"
base_price = 100000 # 100k VND
if age < 5: price = 0 print("Miễn phí cho trẻ em dưới 5 tuổi")elif age < 18: price = base_price * 0.5 print("Giảm 50% cho trẻ em từ 5-17 tuổi")elif age >= 60: price = base_price * 0.7 print("Giảm 30% cho người cao tuổi")else: price = base_price
if is_student: price *= 0.8 print("Giảm thêm 20% cho học sinh/sinh viên")
if is_weekend: price *= 1.2 print("Phụ thu 20% cho ngày cuối tuần")
print(f"Giá vé cuối cùng: {price:,.0f} VND")Xếp hạng học lực
Phần tiêu đề “Xếp hạng học lực”math = float(input("Điểm Toán: "))literature = float(input("Điểm Văn: "))english = float(input("Điểm Anh: "))
average = (math + literature + english) / 3
print(f"Điểm trung bình: {average:.2f}")
# Điều kiện xếp loại giỏi: TB >= 8 và không có môn nào < 6.5if average >= 8 and math >= 6.5 and literature >= 6.5 and english >= 6.5: print("Xếp loại: Giỏi")# Điều kiện xếp loại khá: TB >= 6.5 và không có môn nào < 5elif average >= 6.5 and math >= 5 and literature >= 5 and english >= 5: print("Xếp loại: Khá")# Điều kiện xếp loại trung bình: TB >= 5 và không có môn nào < 3.5elif average >= 5 and math >= 3.5 and literature >= 3.5 and english >= 3.5: print("Xếp loại: Trung bình")else: print("Xếp loại: Yếu")10. Lỗi thường gặp
Phần tiêu đề “10. Lỗi thường gặp”Quên dấu hai chấm
Phần tiêu đề “Quên dấu hai chấm”# ❌ SAIif age >= 18 print("Adult")
# ✅ ĐÚNGif age >= 18: print("Adult")Sai thụt lề
Phần tiêu đề “Sai thụt lề”# ❌ SAIif age >= 18:print("Adult")
# ✅ ĐÚNGif age >= 18: print("Adult")Dùng = thay vì ==
Phần tiêu đề “Dùng = thay vì ==”# ❌ SAI - Gán giá trị, không phải so sánhif age = 18: print("Adult")
# ✅ ĐÚNG - So sánhif age == 18: print("Adult")Nhầm lẫn and/or
Phần tiêu đề “Nhầm lẫn and/or”age = 20
# ❌ SAI - Muốn kiểm tra age trong khoảng 18-25if age >= 18 or age <= 25: # Luôn đúng! print("Trong khoảng")
# ✅ ĐÚNGif age >= 18 and age <= 25: print("Trong khoảng")
# Hoặc dùng cách viết ngắn gọnif 18 <= age <= 25: print("Trong khoảng")Tổng kết
Phần tiêu đề “Tổng kết”- if: Kiểm tra một điều kiện
- if-else: Kiểm tra điều kiện với 2 nhánh (đúng/sai)
- if-elif-else: Kiểm tra nhiều điều kiện (chỉ thực thi nhánh đầu tiên đúng)
- Toán tử so sánh:
==,!=,>,<,>=,<= - Toán tử logic:
and,or,not - Membership:
in,not in - Conditional expression:
giá_trị_nếu_đúng if điều_kiện else giá_trị_nếu_sai - Truthy/Falsy: Các giá trị được coi là True/False trong điều kiện
- Lưu ý: Luôn có dấu
:sau điều kiện và thụt lề đúng cho code bên trong
📝 Bài tập thực hành
Phần tiêu đề “📝 Bài tập thực hành”Sau khi học xong bài này, hãy thực hành với bài tập sau: