Bài 4: Điều kiện if/else trong Python

Bài 3 bạn đã xử lý chuỗi. Giờ ta cho chương trình biết ra quyết định: nếu điều kiện đúng thì làm việc này, không thì làm việc khác. Đó là if/else — thứ có mặt trong gần như mọi chương trình. Cuối bài bạn tự viết một chương trình xếp loại điểm (nhập điểm → in Giỏi/Khá/Trung bình/Yếu), chạy ra kết quả thật.
⏱️ Cách học bài này (~30 phút): đọc khái niệm + code mẫu (10’), tự gõ và chạy các bài thực hành (12’), xem lỗi thường gặp (4’), tự kiểm + lưu code mang về (4’).
Mục tiêu bài học
Sau bài này bạn sẽ:
- Viết câu lệnh if / elif / else để rẽ nhánh.
- Dùng toán tử so sánh
==, !=, >, <, >=, <=và kết hợpand,or,not. - Hiểu vì sao thụt lề (indentation) quyết định trong Python.
- Tự viết chương trình xếp loại điểm — thêm vào kho code cá nhân.
Nội dung: rẽ nhánh với if/elif/else
1. Câu if cơ bản
Cú pháp: if + điều kiện + dấu hai chấm :, rồi khối lệnh thụt vào bên trong.
tuoi = 20
if tuoi >= 18:
print("Bạn đủ tuổi.") # thụt vào 4 dấu cách
Điều kiện là một biểu thức đúng/sai (True/False). Nếu đúng, khối thụt lề bên trong chạy; nếu sai, bỏ qua.
2. Toán tử so sánh
print(10 == 10) # True — bằng nhau
print(10 != 5) # True — khác nhau
print(7 > 3) # True
print(3 >= 4) # False
⚠️ So sánh dùng
==(hai dấu bằng). Một dấu=là gán giá trị. Nhầm hai cái này là lỗi kinh điển của người mới.
3. if / elif / else
Khi có nhiều tình huống, dùng elif (else if) cho các nhánh giữa, else cho phần còn lại:
diem = 7
if diem >= 8:
print("Giỏi")
elif diem >= 6.5:
print("Khá")
elif diem >= 5:
print("Trung bình")
else:
print("Yếu")
# Kết quả: Khá
Python xét từ trên xuống, dừng ở nhánh đúng đầu tiên. Vì vậy thứ tự phải từ điều kiện chặt nhất xuống lỏng nhất — nếu đặt >= 5 lên đầu thì điểm 9 cũng rơi vào “Trung bình”.
4. Kết hợp điều kiện: and / or / not
tuoi = 25
co_ve = True
if tuoi >= 18 and co_ve:
print("Được vào.") # cả hai đúng mới chạy
and: cả hai phải đúng.or: một trong hai đúng là đủ.not: đảo ngược đúng/sai.
Code mẫu có chú thích: xếp loại điểm
Ghép lại thành chương trình hoàn chỉnh, nhận điểm từ người dùng:
diem = float(input("Nhập điểm (0-10): ")) # float() để nhận cả điểm lẻ như 6.5
if diem < 0 or diem > 10: # kiểm tra hợp lệ trước
print("Điểm không hợp lệ!")
elif diem >= 8:
print("Xếp loại: Giỏi")
elif diem >= 6.5:
print("Xếp loại: Khá")
elif diem >= 5:
print("Xếp loại: Trung bình")
else:
print("Xếp loại: Yếu")
Chạy thử với 6.5 → Xếp loại: Khá; với 9 → Giỏi; với 4 → Yếu. Mấu chốt: dùng float() vì input() luôn trả về chuỗi, và kiểm tra hợp lệ trước khi xếp loại.
💡
int()hayfloat()? Dùngint()khi chỉ nhận số nguyên (tuổi, số lượng);float()khi có thể có phần lẻ (điểm 6.5, giá tiền). Cả hai đều ép chuỗi từinput()về số để so sánh.
Bài thực hành code (tự gõ)
Bài 1 — Chẵn hay lẻ: nhận một số nguyên, in “Chẵn” hoặc “Lẻ”.
✅ Gợi ý: số chia hết cho 2 khi so % 2 == 0 (% là phép chia lấy dư).
Bài 2 — Kiểm tra đăng nhập: cho sẵn mat_khau_dung = "python123"; hỏi người dùng nhập mật khẩu, in “Đăng nhập thành công” nếu đúng, ngược lại “Sai mật khẩu”.
✅ Gợi ý: so sánh bằng ==.
Bài 3 — Phân loại tuổi: nhận tuổi, in “Trẻ em” (<13), “Thiếu niên” (13–17), “Người lớn” (≥18).
✅ Gợi ý: dùng if/elif/else, xét từ nhỏ đến lớn hoặc ngược lại cho nhất quán.
Lỗi thường gặp & cách sửa
IndentationError→ quên thụt lề khối bên trong if, hoặc lẫn tab với dấu cách. Dùng nhất quán 4 dấu cách. Ví dụ code sai:
if diem >= 5:
print("Đậu") # SAI: không thụt lề
# → IndentationError: expected an indented block after 'if' statement
Sửa: thụt dòng print vào 4 dấu cách.
- Quên dấu
:cuối dòngif/elif/else→SyntaxError. Luôn có dấu hai chấm. - Dùng
=thay==trong điều kiện → lỗi cú pháp. So sánh phải==. - Thứ tự elif sai → điểm 9 ra “Trung bình” vì
>= 5đặt trên>= 8. Xét từ điều kiện chặt nhất xuống. - Quên
float()/int()→ so sánh chuỗi với số báo lỗi, vìinput()trả về chuỗi. Xem lại đọc lỗi và debug cho người mới.
💾 Mang về — chương trình xếp loại điểm
Lưu vào kho code cá nhân (bài L4 trong series):
# xep_loai.py — xếp loại điểm học tập
diem = float(input("Nhập điểm (0-10): "))
if diem < 0 or diem > 10:
print("Điểm không hợp lệ!")
elif diem >= 8:
print("Giỏi")
elif diem >= 6.5:
print("Khá")
elif diem >= 5:
print("Trung bình")
else:
print("Yếu")
Thuật ngữ chốt
| Thuật ngữ | Giải thích ngắn |
|---|---|
| if / elif / else | Rẽ nhánh: nếu / nếu không thì nếu / còn lại |
| điều kiện (condition) | Biểu thức cho kết quả True hoặc False |
| indentation (thụt lề) | Khoảng cách đầu dòng xác định khối lệnh; Python bắt buộc |
| toán tử so sánh | ==, !=, >, <, >=, <= |
| and / or / not | Kết hợp/đảo điều kiện logic |
Tự kiểm tra & lời giải
if 5 == 5:in gì nếu bên trong làprint("ok")? (Đáp án:ok)10 % 2bằng mấy? (Đáp án: 0 — nên 10 là số chẵn)- Vì sao điểm 9 lại ra “Trung bình” nếu đặt
elif diem >= 5trướcelif diem >= 8? (Đáp án: Python dừng ở nhánh đúng đầu tiên; 9 ≥ 5 đã đúng nên không xét tiếp)
Lời giải Bài thực hành:
# Bài 1
so = int(input("Nhập số: "))
if so % 2 == 0:
print("Chẵn")
else:
print("Lẻ")
# Bài 2
mat_khau_dung = "python123"
nhap = input("Mật khẩu: ")
if nhap == mat_khau_dung:
print("Đăng nhập thành công")
else:
print("Sai mật khẩu")
# Bài 3
tuoi = int(input("Tuổi: "))
if tuoi < 13:
print("Trẻ em")
elif tuoi < 18:
print("Thiếu niên")
else:
print("Người lớn")
Ghi nhớ nhanh
- Cấu trúc:
if điều_kiện:→elif:→else:, mỗi khối thụt lề 4 dấu cách. - So sánh dùng
==; kết hợp bằngand/or/not. - Python dừng ở nhánh đúng đầu tiên — xếp điều kiện đúng thứ tự.
👉 Bài tập về nhà: nâng cấp chương trình xếp loại điểm để hỏi tên rồi in "<tên> xếp loại: ..." bằng f-string (nhắc lại Bài 3). Bài tiếp theo trong series: Bài 5 — Vòng lặp for/while (sắp đăng).
Câu hỏi thường gặp
if, elif, else khác nhau thế nào?
if kiểm tra điều kiện đầu tiên; elif (else if) kiểm tra điều kiện tiếp theo NẾU các điều kiện trên đều sai; else chạy khi tất cả điều kiện trên đều sai. Python xét từ trên xuống và dừng ở nhánh đúng đầu tiên, nên thứ tự các điều kiện rất quan trọng.
Vì sao Python báo lỗi IndentationError?
Vì code bên trong if/elif/else phải được thụt lề (thường 4 dấu cách) và thụt đều nhau. Quên thụt lề, hoặc lẫn dấu cách với tab, là nguyên nhân phổ biến nhất gây IndentationError ở người mới. Hãy dùng nhất quán 4 dấu cách.
Dùng = hay == để so sánh?
Dùng == (hai dấu bằng) để SO SÁNH hai giá trị (vd if diem == 10). Một dấu = là GÁN giá trị cho biến (vd diem = 10). Nhầm = với == trong câu if là lỗi rất hay gặp; Python sẽ báo lỗi cú pháp.
Thợ code chính hiệu, thích dắt người mới qua mấy đoạn 'khó nhằn' bằng giọng nhẹ tênh. Châm ngôn: cứ làm dự án thật, sai thì sửa, vui là chính.
Bài liên quan

Cách dùng AI để học lập trình hiệu quả hơn (mà không lệ thuộc)
AI có thể là gia sư lập trình tuyệt vời — hoặc cái nạng khiến bạn mãi không giỏi. Đây là cách dùng AI để học code nhanh hơn: prompt học đúng cách, và ranh giới để không lệ thuộc.

Hướng dẫn React cơ bản qua một dự án thực tế
Học React không phải bằng lý thuyết suông mà bằng cách dựng một app to-do hoàn chỉnh: component, JSX, props và state — giải thích từng khái niệm ngay khi bạn cần đến nó.

Bài 3: Chuỗi (string) và thao tác văn bản trong Python
Bài 3 series Python cho người mới (bài học 30 phút): làm chủ chuỗi và các thao tác văn bản hay dùng nhất qua một chương trình đếm từ và ký tự tự viết — kèm bài tập gõ code, lỗi thường gặp và code mang về.