Chỉ chạy khối thuộc nhánh được chọn
Sau `if <điều kiện>:` là một khối thụt vào. Nếu điều kiện đúng, Python chạy khối đó; nếu sai, bỏ qua. Với `else:`, Python chạy khối còn lại khi điều kiện sai. Dấu hai chấm và lề quyết định câu lệnh nào thuộc nhánh; `else` phải thẳng lề với `if` tương ứng.
```python
n = 8
if n % 2 == 0:
print("Chẵn")
else:
print("Lẻ")
print("Xong")
```
Kết quả là `Chẵn` rồi `Xong`: số 8 chia 2 dư 0, nhánh else không chạy, còn lệnh cuối nằm ngoài if nên vẫn chạy. Dùng bốn dấu cách nhất quán cho lề trong các ví dụ.
Bài luyện
Với mã trong bài và `n = 8`, hai dòng được in là gì?
Điều kiện đúng nên in Chẵn; lệnh ngoài if in Xong.
Nhánh Lẻ chỉ chạy khi n lẻ.
Hai nhánh if/else không cùng chạy.
Nhánh đúng vẫn in Chẵn.
Lời giải
`8 % 2 == 0` đúng nên in `Chẵn`. Lệnh `print("Xong")` không thụt vào nhánh nào, nên chạy tiếp.
Bài luyện
Trong mã trên, nếu đổi `n = 8` thành `n = 7`, dòng đầu tiên in gì?
7 chia 2 dư 1, không vào nhánh chẵn.
Điều kiện sai nên vào else và in Lẻ.
Mã in chữ nhãn, không in giá trị bool.
else có lệnh print.
Lời giải
`7 % 2` bằng 1 nên `7 % 2 == 0` sai. Python bỏ khối if, chạy else và in `Lẻ`.
Thử hai phía của điều kiện
Nhiệm vụ: tạo `chan-le.py`, thay dòng gán đầu trong ví dụ bằng `n = int(input("Nhập số nguyên: "))`, lưu và chạy. Nhập `8` phải có `Chẵn`, nhập `7` phải có `Lẻ`; cả hai lượt đều có `Xong` ở dòng sau. Nếu Python báo `IndentationError`, kiểm hai lệnh trong nhánh đã thụt đều và lệnh cuối về lề trái. Nếu nhập chữ, `int` báo lỗi đổi kiểu như đã học; chương trình này nhận số nguyên hợp lệ, chưa xử lí nhập lại.
Bài luyện
Muốn lệnh `print("Xong")` chạy sau cả hai trường hợp chẵn và lẻ, nên đặt lệnh ở đâu?
Khi điều kiện sai, khối if không chạy.
Khi điều kiện đúng, khối else không chạy.
Lệnh ngoài hai nhánh chạy khi if/else kết thúc.
Thiếu dấu hai chấm gây lỗi cú pháp.
Lời giải
Đặt lệnh sau `else` và trở lại lề của `if`. Khi một trong hai khối kết thúc, luồng chương trình đi tới lệnh này.
Đang học