tinbc tinbc

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

Thợ Code6 phút đọc
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ợp and, 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 =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.5Xếp loại: Khá; với 9Giỏi; với 4Yếu. Mấu chốt: dùng float()input() luôn trả về chuỗi, và kiểm tra hợp lệ trước khi xếp loại.

💡 int() hay float()? Dùng int() 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òng if/elif/elseSyntaxError. 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

  1. if 5 == 5: in gì nếu bên trong là print("ok")? (Đáp án: ok)
  2. 10 % 2 bằng mấy? (Đáp án: 0 — nên 10 là số chẵn)
  3. Vì sao điểm 9 lại ra “Trung bình” nếu đặt elif diem >= 5 trước elif 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ằng and / 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).

Chia sẻ:
0.0 0 lượt đánh giá

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

Thợ Code

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

Hướng dẫn React cơ bản qua một dự án thực tế
Lập trình

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ó.

1 lượt xem
Bài 3: Chuỗi (string) và thao tác văn bản trong Python
Lập trình

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ề.

1 lượt xem