CẤU TRÚC RẼ NHÁNH - IF, ELSE TRONG PYTHON¶
I. Định nghĩa và đặc điểm¶
1. Cấu trúc rẽ nhánh là gì?¶
Cấu trúc rẽ nhánh cho phép chương trình thực hiện các khối lệnh khác nhau dựa trên điều kiện đúng hoặc sai.
# Ví dụ đơn giản
diem = 8.5
if diem >= 8.0:
print("Học sinh giỏi")
else:
print("Cần cố gắng thêm")
2. Đặc điểm của cấu trúc rẽ nhánh¶
- Kiểm tra điều kiện đúng/sai
- Thực hiện khối lệnh tương ứng
- Có thể lồng nhau nhiều tầng
- Luôn có ít nhất một khối lệnh được thực hiện
II. Các toán tử so sánh¶
1. Toán tử so sánh cơ bản¶
# So sánh bằng
a = 5
b = 5
print(a == b) # True
# So sánh khác
print(a != b) # False
# So sánh lớn hơn, nhỏ hơn
print(a > 3) # True
print(a < 10) # True
# So sánh lớn hơn hoặc bằng, nhỏ hơn hoặc bằng
print(a >= 5) # True
print(a <= 5) # True
2. So sánh chuỗi¶
ten1 = "An"
ten2 = "Bình"
print(ten1 < ten2) # True (so sánh theo thứ tự bảng chữ cái)
# So sánh độ dài chuỗi
print(len(ten1) == len(ten2)) # False
3. So sánh với nhiều điều kiện¶
tuoi = 15
diem = 8.5
# Kiểm tra nhiều điều kiện
if tuoi >= 15 and diem >= 8.0:
print("Đủ điều kiện tham gia đội tuyển")
else:
print("Chưa đủ điều kiện")
III. Cấu trúc if cơ bản¶
1. Cấu trúc if đơn giản¶
# Cú pháp cơ bản
if dieu_kien:
# Khối lệnh thực hiện khi điều kiện đúng
pass
# Ví dụ
diem = float(input("Nhập điểm: "))
if diem >= 8.0:
print("Học sinh giỏi!")
2. Cấu trúc if-else¶
# Cú pháp if-else
if dieu_kien:
# Khối lệnh khi điều kiện đúng
pass
else:
# Khối lệnh khi điều kiện sai
pass
# Ví dụ
diem = float(input("Nhập điểm: "))
if diem >= 5.0:
print("Đạt")
else:
print("Không đạt")
3. Cấu trúc if-elif-else¶
# Cú pháp if-elif-else
if dieu_kien1:
# Khối lệnh 1
pass
elif dieu_kien2:
# Khối lệnh 2
pass
elif dieu_kien3:
# Khối lệnh 3
pass
else:
# Khối lệnh mặc định
pass
# Ví dụ xếp loại học sinh
diem = float(input("Nhập điểm: "))
if diem >= 9.0:
print("Xuất sắc")
elif diem >= 8.0:
print("Giỏi")
elif diem >= 6.5:
print("Khá")
elif diem >= 5.0:
print("Trung bình")
else:
print("Yếu")
IV. Toán tử logic¶
1. Toán tử AND (và)¶
# Cả hai điều kiện phải đúng
tuoi = 15
diem = 8.5
if tuoi >= 15 and diem >= 8.0:
print("Đủ điều kiện tham gia đội tuyển")
else:
print("Chưa đủ điều kiện")
2. Toán tử OR (hoặc)¶
# Chỉ cần một trong hai điều kiện đúng
mon_toan = 8.5
mon_van = 7.0
if mon_toan >= 8.0 or mon_van >= 8.0:
print("Có ít nhất một môn đạt điểm giỏi")
else:
print("Chưa có môn nào đạt điểm giỏi")
3. Toán tử NOT (không)¶
# Phủ định điều kiện
diem = 6.0
if not (diem >= 8.0):
print("Chưa đạt học sinh giỏi")
else:
print("Đạt học sinh giỏi")
4. Kết hợp nhiều toán tử logic¶
tuoi = 16
diem = 8.5
co_ho_khau = True
if (tuoi >= 15 and diem >= 8.0) or (co_ho_khau and diem >= 9.0):
print("Đủ điều kiện nhận học bổng")
else:
print("Chưa đủ điều kiện")
V. Cấu trúc if lồng nhau¶
1. If lồng nhau cơ bản¶
diem = float(input("Nhập điểm: "))
if diem >= 5.0:
if diem >= 8.0:
print("Học sinh giỏi")
else:
print("Học sinh trung bình")
else:
print("Học sinh yếu")
2. If lồng nhau phức tạp¶
tuoi = int(input("Nhập tuổi: "))
diem = float(input("Nhập điểm: "))
if tuoi >= 15:
if diem >= 8.0:
if tuoi <= 18:
print("Đủ điều kiện tham gia đội tuyển trẻ")
else:
print("Đủ điều kiện tham gia đội tuyển chính")
else:
print("Điểm chưa đủ")
else:
print("Tuổi chưa đủ")
VI. Ví dụ minh họa¶
Ví dụ 1: Kiểm tra số chẵn lẻ¶
so = int(input("Nhập một số nguyên: "))
if so % 2 == 0:
print(f"{so} là số chẵn")
else:
print(f"{so} là số lẻ")
# Kiểm tra thêm tính chất khác
if so > 0:
print("Số dương")
elif so < 0:
print("Số âm")
else:
print("Số không")
Ví dụ 2: Tính điểm trung bình và xếp loại¶
# Nhập điểm các môn
toan = float(input("Nhập điểm Toán: "))
van = float(input("Nhập điểm Văn: "))
anh = float(input("Nhập điểm Anh: "))
# Tính điểm trung bình
diem_tb = (toan + van + anh) / 3
print(f"Điểm trung bình: {diem_tb:.2f}")
# Xếp loại
if diem_tb >= 9.0:
print("Xếp loại: Xuất sắc")
elif diem_tb >= 8.0:
print("Xếp loại: Giỏi")
elif diem_tb >= 6.5:
print("Xếp loại: Khá")
elif diem_tb >= 5.0:
print("Xếp loại: Trung bình")
else:
print("Xếp loại: Yếu")
# Kiểm tra điều kiện đặc biệt
if toan >= 8.0 and van >= 8.0 and anh >= 8.0:
print("🎉 Chúc mừng! Tất cả môn đều đạt điểm giỏi!")
Ví dụ 3: Kiểm tra năm nhuận¶
nam = int(input("Nhập năm: "))
# Kiểm tra năm nhuận
if (nam % 4 == 0 and nam % 100 != 0) or (nam % 400 == 0):
print(f"{nam} là năm nhuận")
print("Tháng 2 có 29 ngày")
else:
print(f"{nam} không phải năm nhuận")
print("Tháng 2 có 28 ngày")
# Kiểm tra thế kỷ
if nam >= 2000:
print("Thuộc thế kỷ 21")
else:
print("Thuộc thế kỷ 20")
Ví dụ 4: Máy tính đơn giản¶
print("MÁY TÍNH ĐƠN GIẢN")
print("1. Cộng")
print("2. Trừ")
print("3. Nhân")
print("4. Chia")
lua_chon = input("Chọn phép tính (1-4): ")
so1 = float(input("Nhập số thứ nhất: "))
so2 = float(input("Nhập số thứ hai: "))
if lua_chon == "1":
ket_qua = so1 + so2
print(f"{so1} + {so2} = {ket_qua}")
elif lua_chon == "2":
ket_qua = so1 - so2
print(f"{so1} - {so2} = {ket_qua}")
elif lua_chon == "3":
ket_qua = so1 * so2
print(f"{so1} × {so2} = {ket_qua}")
elif lua_chon == "4":
if so2 != 0:
ket_qua = so1 / so2
print(f"{so1} ÷ {so2} = {ket_qua}")
else:
print("❌ Lỗi: Không thể chia cho 0!")
else:
print("❌ Lựa chọn không hợp lệ!")
VII. Bài tập thực hành tại lớp¶
Bài 1: Kiểm tra số nguyên¶
Đề bài: Viết chương trình kiểm tra số nguyên dương, âm hay bằng 0.
💡 Phân tích đề
Các bước thực hiện:
- Nhập số nguyên từ bàn phím
- Sử dụng if-elif-else để kiểm tra
- Điều kiện: > 0 (dương), < 0 (âm), == 0 (bằng không)
- In kết quả tương ứng
Input/Output mẫu:
Input | Điều kiện | Output |
---|---|---|
5 |
> 0 |
Số dương |
-3 |
< 0 |
Số âm |
0 |
== 0 |
Số không |
💡 Gợi ý code
# Nhập số từ bàn phím
so = int(input("Nhập một số: "))
# Kiểm tra và phân loại
if so > 0:
print("Số dương")
elif so < 0:
print("Số âm")
else:
print("Số không")
Bài 2: Xếp loại học lực¶
Đề bài: Viết chương trình kiểm tra điểm và đưa ra nhận xét.
💡 Phân tích đề
Các bước thực hiện:
- Nhập điểm từ bàn phím (float)
- Sử dụng if-elif-else theo thứ tự giảm dần
- Thang điểm: ≥9.0 (Xuất sắc), ≥8.0 (Giỏi), ≥6.5 (Khá), ≥5.0 (TB)
- In nhận xét tương ứng
Input/Output mẫu:
Điểm | Phân loại | Nhận xét |
---|---|---|
9.2 |
≥ 9.0 |
Xuất sắc! |
7.8 |
≥ 6.5 |
Khá! |
4.5 |
< 5.0 |
Cần cố gắng! |
💡 Gợi ý code
# Nhập điểm từ bàn phím
diem = float(input("Nhập điểm: "))
# Phân loại học lực
if diem >= 9.0:
print("Xuất sắc!")
elif diem >= 8.0:
print("Giỏi!")
elif diem >= 6.5:
print("Khá!")
elif diem >= 5.0:
print("Trung bình")
else:
print("Cần cố gắng!")
Bài 3: Phân loại độ tuổi¶
Đề bài: Viết chương trình kiểm tra tuổi và đưa ra phân loại.
💡 Phân tích đề
Các bước thực hiện:
- Nhập tuổi từ bàn phím (int)
- Phân loại theo các khoảng tuổi
- < 13 (Thiếu niên), < 18 (Thanh niên), < 60 (Trung niên), ≥ 60 (Cao niên)
- In phân loại tương ứng
Input/Output mẫu:
Tuổi | Phân loại | Kết quả |
---|---|---|
10 |
< 13 |
Thiếu niên |
16 |
< 18 |
Thanh niên |
65 |
≥ 60 |
Cao niên |
💡 Gợi ý code
# Nhập tuổi từ bàn phím
tuoi = int(input("Nhập tuổi: "))
# Phân loại theo độ tuổi
if tuoi < 13:
print("Thiếu niên")
elif tuoi < 18:
print("Thanh niên")
elif tuoi < 60:
print("Trung niên")
else:
print("Cao niên")
VIII. Bài tập về nhà¶
Bài 1: Kiểm tra tam giác¶
Đề bài: Viết chương trình kiểm tra tam giác (đều, cân, vuông, thường).
💡 Phân tích đề
Các bước thực hiện:
- Nhập 3 cạnh của tam giác
- Kiểm tra điều kiện tồn tại tam giác: a+b > c, b+c > a, a+c > b
- Kiểm tra tam giác vuông: a² + b² = c² (hoặc hoán vị)
- Kiểm tra tam giác đều: a = b = c
- Kiểm tra tam giác cân: a = b hoặc b = c hoặc a = c
- Các trường hợp còn lại là tam giác thường
Input/Output mẫu:
Cạnh a | Cạnh b | Cạnh c | Loại tam giác |
---|---|---|---|
3 |
4 |
5 |
Tam giác vuông |
5 |
5 |
5 |
Tam giác đều |
5 |
5 |
7 |
Tam giác cân |
Bài 2: Tính thuế thu nhập¶
Đề bài: Viết chương trình tính thuế thu nhập dựa trên mức lương.
💡 Phân tích đề
Các bước thực hiện:
- Nhập mức lương từ bàn phím
- Áp dụng bậc thuế lũy tiến:
- ≤ 5 triệu: 5%
- 5-10 triệu: 10%
- 10-18 triệu: 15%
-
18 triệu: 20%
- Tính thuế phải nộp
- Tính lương thực nhận = lương - thuế
Input/Output mẫu:
Lương | Bậc thuế | Thuế | Thực nhận |
---|---|---|---|
8,000,000 |
10% |
800,000 |
7,200,000 |
Bài 3: Kiểm tra mật khẩu¶
Đề bài: Viết chương trình kiểm tra mật khẩu và đưa ra đánh giá độ mạnh.
💡 Phân tích đề
Các bước thực hiện:
- Nhập mật khẩu từ bàn phím
- Kiểm tra các tiêu chí:
- Độ dài ≥ 8 ký tự
- Có chữ hoa, chữ thường
- Có số và ký tự đặc biệt
- Đánh giá độ mạnh: Yếu, Trung bình, Mạnh
- Đưa ra gợi ý cải thiện nếu cần
Input/Output mẫu:
Mật khẩu | Tiêu chí | Đánh giá |
---|---|---|
Abc123@# |
Đủ 4 tiêu chí |
Mật khẩu mạnh |
abc123 |
Thiếu chữ hoa, ký tự đặc biệt |
Mật khẩu yếu |
Bài 4: Tính tiền điện bậc thang¶
Đề bài: Viết chương trình tính tiền điện theo bậc thang.
💡 Phân tích đề
Các bước thực hiện:
- Nhập số kWh điện sử dụng
- Áp dụng bậc giá:
- Bậc 1 (0-50 kWh): 1,678đ/kWh
- Bậc 2 (51-100 kWh): 1,734đ/kWh
- Bậc 3 (101-200 kWh): 2,014đ/kWh
- Bậc 4 (201-300 kWh): 2,536đ/kWh
- Bậc 5 (>300 kWh): 2,834đ/kWh
- Tính tiền theo từng bậc
- Cộng tổng tiền phải trả
Input/Output mẫu:
Điện tiêu thụ | Bậc áp dụng | Tổng tiền |
---|---|---|
120 kWh |
Bậc 1,2,3 |
214,700đ |
IX. Ghi chú quan trọng¶
1. Cú pháp cơ bản¶
- Sử dụng
:
sau điều kiện - Thụt lề (indent) cho khối lệnh
- Có thể lồng nhiều tầng if
2. Thứ tự ưu tiên toán tử¶
()
- Dấu ngoặcnot
- Phủ địnhand
- Vàor
- Hoặc
3. Lưu ý khi sử dụng¶
- Kiểm tra điều kiện từ đơn giản đến phức tạp
- Sử dụng
elif
thay vì nhiềuif
riêng biệt - Tránh lồng quá nhiều tầng if
4. Các lỗi thường gặp¶
- Quên dấu
:
sau điều kiện - Sai thụt lề
- So sánh chuỗi với số
- Quên kiểm tra điều kiện chia cho 0