Chương trình cần "rẽ nhánh" để quyết định làm gì tùy tình huống. Bài này dạy câu lệnh if, elif, else và phép so sánh.
- So sánh giá trị và kết hợp điều kiện
- Viết if, elif, else đúng thụt lề
- Hiểu giá trị đúng/sai (truthy, falsy)
- Giải bài toán phân loại điểm, kiểm tra tuổi
- Điều kiện
- Biểu thức cho kết quả
TruehoặcFalse. - Thụt lề (indent)
- Khoảng trắng đầu dòng cho biết lệnh thuộc khối nào; Python dùng 4 dấu cách.
- Toán tử logic
and(và),or(hoặc),not(phủ định).
Khái niệm và lý thuyết
Chương trình đơn giản chạy tuần tự từng dòng. Nhưng thực tế luôn cần ra quyết định: nếu điểm từ 5 trở lên thì đạt, ngược lại thì không. Cấu trúc rẽ nhánh cho phép chương trình chọn đường đi tùy theo điều kiện.
Điều kiện là một biểu thức logic, kết quả chỉ có hai giá trị: True hoặc False. Biểu thức logic được tạo từ các phép so sánh (==, !=, <, >) và được kết hợp bằng and (cả hai cùng đúng), or (ít nhất một đúng), not (đảo ngược).
| A | B | A and B | A or B |
|---|---|---|---|
| True | True | True | True |
| True | False | False | True |
| False | True | False | True |
| False | False | False | False |
Python dùng thụt lề thay cho dấu ngoặc nhọn để xác định phạm vi của khối lệnh: các dòng thụt vào dưới if chỉ chạy khi điều kiện đúng. Khi có nhiều điều kiện nối tiếp, elif chỉ được xét nếu các điều kiện phía trên đều sai, và else là phần còn lại. Vì vậy phải sắp xếp điều kiện từ cụ thể đến tổng quát hoặc từ cao xuống thấp một cách có chủ ý.
Phép so sánh
| Toán tử | Ý nghĩa | Ví dụ |
|---|---|---|
| == | bằng | 5 == 5 là True |
| != | khác | 5 != 3 là True |
| < > | nhỏ hơn, lớn hơn | 2 < 9 |
| <= >= | nhỏ hơn hoặc bằng, lớn hơn hoặc bằng | 7 >= 7 |
Nhớ: = là gán, == mới là so sánh.
Cấu trúc if - elif - else
diem = float(input("Điểm: "))
if diem >= 8:
print("Giỏi")
elif diem >= 6.5:
print("Khá")
elif diem >= 5:
print("Trung bình")
else:
print("Yếu")Python kiểm tra từ trên xuống, gặp điều kiện đúng đầu tiên thì thực hiện khối đó rồi bỏ qua phần còn lại. Vì vậy thứ tự điều kiện rất quan trọng.
Ví dụ: tính cước taxi và xếp loại học lực
Cước taxi: 10.000 đồng cho 1 km đầu, 12.000 đồng cho mỗi km tiếp theo.
km = float(input("Số km: "))
if km <= 1:
tien = 10000
else:
tien = 10000 + (km - 1) * 12000
print("Cước:", tien)Xếp loại: điều kiện kiểm tra từ trên xuống, nên đặt mức cao nhất trước:
if diem >= 8:
print("Giỏi")
elif diem >= 6.5:
print("Khá")
elif diem >= 5:
print("Trung bình")
else:
print("Yếu")Nếu đặt điều kiện diem >= 5 lên đầu, học sinh 9 điểm cũng sẽ bị xếp "Trung bình" vì điều kiện đầu tiên đã đúng. Thứ tự các nhánh quyết định kết quả.
Kết hợp điều kiện
tuoi = 17
co_the = True
if tuoi >= 18 and co_the:
print("Được tham gia")
elif tuoi >= 16 or co_the:
print("Cần người lớn đi cùng")
nam_nhuan = (n % 4 == 0 and n % 100 != 0) or n % 400 == 0Quy định: xe máy 3 000 đồng, ô tô 20 000 đồng, ngoài giờ phụ thu 50%. Chương trình hỏi loại xe và giờ gửi rồi tính tiền.
loai = input("Loại xe (may/oto): ")
gio = int(input("Giờ gửi (0-23): "))
gia = 3000 if loai == "may" else 20000
if gio < 6 or gio >= 22:
gia *= 1.5
print(f"Phí: {gia:,.0f} đồng")Biểu thức gọn: kq = "Đạt" if diem >= 5 else "Chưa đạt". So sánh dạng chuỗi: 0 <= x < 10 hợp lệ trong Python.
Lỗi IndentationError xảy ra khi thụt lề không đều. Đừng trộn phím Tab và dấu cách.
- Nhập một số, in "chẵn" hoặc "lẻ".
- Nhập ba số, in số lớn nhất không dùng hàm
max. - Giải phương trình bậc nhất
ax + b = 0(xét a = 0). - Kiểm tra năm nhuận.
if/elif/elsechọn nhánh theo điều kiện.- Thụt lề 4 dấu cách xác định khối lệnh.
- Kết hợp bằng
and,or,not. - Thứ tự các
elifảnh hưởng kết quả.