Menu

Câu lệnh if, elif, else trong Python và toán tử ba ngôi

Cách câu lệnh if, elif và else trong Python hoạt động, bao gồm giá trị truthy, điều kiện lồng nhau và biểu thức if ba ngôi.

Trang này có trình soạn thảo chạy trực tiếp. Sửa, chạy và xem đầu ra ngay lập tức.

Một quyết định, viết gần như tiếng Anh

if là công cụ đầu tiên mà hầu hết chương trình cần đến. Nó cho phép code đi theo một hướng khi điều kiện (condition) đúng và hướng khác khi điều kiện sai. Python viết điều này rất trực tiếp:

Hai dòng, một quyết định. Dòng if kết thúc bằng dấu hai chấm. Dòng thụt lề bên dưới là phần thân của if, tức đoạn code chạy khi điều kiện đúng. Nếu hour là 15, phần thân sẽ bị bỏ qua hoàn toàn và không có gì được in ra.

Thụt lề chính là cấu trúc ở đây. Python biết những dòng nào thuộc về if bằng cách nhìn khoảng trắng ở đầu dòng. Quy ước là bốn dấu cách cho mỗi cấp; hãy nhất quán.

Thêm nhánh else

Thường bạn muốn có việc gì đó xảy ra trong cả hai trường hợp: làm việc này khi điều kiện đúng, làm việc kia khi sai. else giúp bạn làm điều đó:

Dòng else không có điều kiện: nó bắt mọi trường hợp mà if không bắt.

Nhiều nhánh với elif

Khi có nhiều hơn hai hướng, hãy xếp các mệnh đề elif ("else if") giữa if và else:

Python duyệt các điều kiện từ trên xuống và chạy khối lệnh của điều kiện đầu tiên đúng. Phần còn lại bị bỏ qua. Thứ tự từ trên xuống này rất quan trọng: nếu bạn đặt score >= 60 trước score >= 90, ai cũng nhận điểm D, vì điều kiện đúng đầu tiên sẽ thắng.

Một cấu trúc gọn gàng nên nhớ: với mỗi đầu vào, các điều kiện nên loại trừ lẫn nhau, và thứ tự nên phản ánh cách bạn tự nhiên suy nghĩ về bài toán. Đặt các trường hợp cụ thể nhất lên trước, tổng quát nhất xuống cuối.

Giá trị truthy trong điều kiện

Biểu thức trong if không nhất thiết phải cho ra đúng True hay False. Python chấp nhận mọi giá trị và tự xác định giá trị đó là truthy hay falsy:

if items: đọc là "nếu list có phần tử nào." Các giá trị falsy gồm:

  • False
  • 0, 0.0
  • None
  • Các container rỗng: "", [], {}, set(), ()

Mọi thứ khác đều là truthy. Dùng truthiness giúp code đọc tự nhiên hơn, với một lưu ý: nếu số 0 là một giá trị có ý nghĩa (một biến đếm đang thật sự bằng 0), hãy so sánh rõ ràng bằng is not None hoặc != 0 để tránh nhầm lẫn giữa "rỗng" và "bằng 0".

Kết hợp các điều kiện

and, or và not giúp bạn tạo các điều kiện phức hợp:

So sánh nối chuỗi gọn hơn một and tường minh khi hai đầu so sánh có chung giá trị ở giữa:

Cách viết đó giống hệt 18 <= age and age < 65, nhưng đọc như một bất đẳng thức toán học.

Câu lệnh if lồng nhau

Bạn có thể đặt if bên trong if. Điều đó hợp lệ, và đôi khi là cấu trúc rõ ràng nhất, nhưng đó cũng là nguyên nhân chính khiến code điều kiện khó theo dõi. Nếu thấy mình đã lồng đến ba cấp, hãy cân nhắc làm phẳng bằng return sớm (khi bạn đã viết hàm) hoặc bằng cách gộp điều kiện:

Cả hai đều chạy được. Hãy chọn cách nào dễ đọc hơn với một người chưa từng thấy đoạn code này.

Biểu thức ba ngôi

Khi bạn chỉ muốn một giá trị nhận một trong hai khả năng tùy theo điều kiện, Python có một dạng viết gọn:

Đọc từ trái sang phải: "warm nếu temp ít nhất là 70, ngược lại là cool." Cách này rất hợp cho những phép gán chọn một trong hai ngắn gọn. Đừng dùng nữa khi các nhánh trở nên dài hoặc chứa nhiều thao tác: lúc đó, một khối if/else đầy đủ sẽ dễ nhìn hơn.

if chỉ là biểu thức ở đúng một chỗ

Không giống một số ngôn ngữ khác, bản thân câu lệnh if của Python không tạo ra giá trị. Chỉ có dạng ba ngôi mới làm được. Bạn không thể viết x = if ...: như trong Rust hay Kotlin. Nếu muốn một giá trị có điều kiện, hãy dùng toán tử ba ngôi; nếu muốn một hành vi có điều kiện, hãy dùng khối if đầy đủ.

Một ví dụ nhỏ hoàn chỉnh

Một chương trình ngắn phân loại nhiệt độ:

Để ý rằng phần logic chủ yếu chỉ là quyết định advice nên là gì. Nhìn qua là bạn biết khoảng nhiệt độ nào ứng với thông điệp nào. Đó là hình dạng bạn nên hướng tới khi viết điều kiện: mỗi nhánh nhỏ gọn và ý đồ tổng thể thật rõ ràng.

Tiếp theo là gì

Điều kiện cho phép code chọn một hướng đi. Vòng lặp cho phép code lặp lại. Tiếp theo: vòng lặp for, loại vòng lặp phổ biến nhất trong Python, bỏ xa các loại khác, và là người bạn đồng hành tự nhiên của các kiểu tập hợp dữ liệu mà bạn sẽ gặp vài trang sau.

Câu hỏi thường gặp

Câu lệnh if trong Python hoạt động thế nào?

if condition: theo sau là một khối lệnh thụt lề sẽ chỉ chạy khối đó khi điều kiện đúng. Các mệnh đề elif (else if) không bắt buộc cho phép bạn kiểm tra thêm điều kiện khác, và else không bắt buộc sẽ chạy khi không có điều kiện nào khớp.

Python có câu lệnh switch không?

Python 3.10 đã thêm match/case để so khớp mẫu theo cấu trúc (structural pattern matching), đáp ứng hầu hết các trường hợp dùng switch và còn hơn thế. Với rẽ nhánh đơn giản, một chuỗi if/elif vẫn rất phổ biến và hoàn toàn ổn.

Biểu thức if ba ngôi trong Python là gì?

Một biểu thức điều kiện viết trên một dòng: result = a if condition else b. Đọc từ trái sang phải: tính a khi condition đúng, ngược lại tính b. Rất tiện cho những phép gán chọn một trong hai ngắn gọn; khó đọc hơn khi các nhánh trở nên dài.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu