Chọn đến phần học sinh cần nhanh chóng thông qua mục lục bằng cách click đến phần đó
- I. Lý thuyết trọng tâm
- 1. Biểu thức logic
- 2. Câu lệnh rẽ nhánh if
- II. Phương pháp giải các dạng bài tập
- Dạng 1: Tính giá trị biểu thức logic
- Dạng 2: Viết biểu thức logic từ điều kiện cho trước
- Dạng 3: Tìm giá trị thỏa mãn biểu thức logic
- Dạng 4: Viết chương trình sử dụng lệnh if
- Dạng 5: Viết chương trình với if lồng nhau (nhiều điều kiện)
- III. Sơ đồ tư duy
- IV. Sai lầm thường gặp
I. Lý thuyết trọng tâm
1. Biểu thức logic
a) Khái niệm
Trong lập trình, nhiều tình huống phụ thuộc vào một điều kiện nào đó đúng hay sai. Biểu thức logic là biểu thức chỉ nhận một trong hai giá trị: True (đúng) hoặc False (sai), thuộc kiểu dữ liệu bool.
Dạng đơn giản nhất của biểu thức logic là các phép so sánh giữa hai giá trị (số hoặc xâu kí tự).
Câu hỏi kiểm tra nhanh (SGK): Biểu thức nào sau đây có thể đưa vào vị trí <điều kiện> trong lệnh Nếu <điều kiện> thì <lệnh>?
| Phương án | Biểu thức | Là biểu thức logic? | Giải thích |
|---|---|---|---|
| A | m, n = 1, 2 |
❌ | Đây là lệnh gán, không trả về True/False |
| B | a + b > 1 |
✔️ | Phép so sánh → cho True hoặc False |
| C | a * b < a + b |
✔️ | Phép so sánh → cho True hoặc False |
| D | 12 + 15 > 2 * 13 |
✔️ | Phép so sánh → cho True hoặc False |
b) Sáu phép so sánh trong Python
| Phép so sánh | Ý nghĩa | Ví dụ | Kết quả |
|---|---|---|---|
< |
Nhỏ hơn | 3 < 5 |
True |
> |
Lớn hơn | 10 > 10 |
False |
<= |
Nhỏ hơn hoặc bằng | 5 <= 5 |
True |
>= |
Lớn hơn hoặc bằng | 3 >= 7 |
False |
== |
Bằng nhau | 4 == 4 |
True |
!= |
Khác nhau | 3 != 5 |
True |
Lưu ý quan trọng: Phép
==(kiểm tra bằng) dùng hai dấu bằng, khác với=(lệnh gán) chỉ dùng một dấu bằng. Python cũng phân biệt hoa/thường khi so sánh xâu:"Number" == "number"→False.
c) Ba phép toán logic: and, or, not
Nhiều biểu thức logic đơn có thể kết hợp lại bằng ba phép toán logic:
Phép and (và): Kết quả True chỉ khi cả hai vế đều đúng.
| X | Y | X and Y |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
Phép or (hoặc): Kết quả True khi ít nhất một vế đúng.
| X | Y | X or Y |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
Phép not (phủ định): Đảo ngược giá trị.
| X | not X |
|---|---|
| True | False |
| False | True |
Ví dụ phân tích chi tiết (SGK):
>>> x, y, z = 10, 5, 9
>>> b = x < 11 and z > 5
>>> c = x > 15 or y < 9
>>> a = not b
| Biến | Phân tích | Kết quả |
|---|---|---|
| b | x < 11 → 10 < 11 → True; z > 5 → 9 > 5 → True. True and True → True |
True |
| c | x > 15 → 10 > 15 → False; y < 9 → 5 < 9 → True. False or True → True |
True |
| a | not b → not True → False |
False |
Câu hỏi kiểm tra nhanh (SGK): Mỗi biểu thức sau có giá trị True hay False?
| Biểu thức | Tính toán | Kết quả |
|---|---|---|
a) 100%4 == 0 |
$100 \% 4 = 0$; $0 == 0$ → đúng | True |
b) 111//5 != 20 or 20%3 != 0 |
$111 // 5 = 22$; $22 \neq 20$ → True. Phép or có vế trái True → kết quả True ngay |
True |
2. Câu lệnh rẽ nhánh if
Trong thực tế, nhiều công việc chỉ thực hiện khi điều kiện nhất định được thỏa mãn. Python dùng câu lệnh if để mô tả tình huống rẽ nhánh này.
a) Dạng thiếu (chỉ có if, không có else)
if <điều kiện>:
<khối lệnh>
Cách hoạt động: Python kiểm tra <điều kiện>. Nếu đúng (True) → thực hiện <khối lệnh>. Nếu sai (False) → bỏ qua <khối lệnh>, chuyển sang lệnh tiếp theo.

b) Dạng đủ (if...else)
if <điều kiện>:
<khối lệnh 1>
else:
<khối lệnh 2>
Cách hoạt động: Python kiểm tra <điều kiện>. Nếu đúng → thực hiện <khối lệnh 1>. Nếu sai → thực hiện <khối lệnh 2>.
Ví dụ in giá trị tuyệt đối của hiệu hai số a, b:
if a > b:
print(a - b)
else:
print(b - a)

c) Quy tắc cú pháp bắt buộc
| Quy tắc | Chi tiết |
|---|---|
Dấu hai chấm : |
Bắt buộc sau <điều kiện> và sau else |
| Thụt lề (indent) | Khối lệnh bên trong phải viết lùi vào (mặc định 1 Tab hoặc 4 dấu cách) và thẳng hàng |
if và else thẳng lề trái |
Hai từ khóa này phải nằm cùng cột |
Đặc trưng Python: Thay vì dùng dấu ngoặc nhọn
{}như nhiều ngôn ngữ khác, Python dùng thụt lề để xác định khối lệnh. Sai thụt lề → lỗiIndentationError.
d) if lồng nhau
Khi bài toán có 3 trường hợp trở lên, ta đặt thêm if bên trong else:
if <điều kiện 1>:
<khối lệnh 1>
else:
if <điều kiện 2>:
<khối lệnh 2>
else:
<khối lệnh 3>
Câu hỏi kiểm tra nhanh (SGK): Đoạn chương trình sau thực hiện công việc gì?
k = int(input("Nhập một số nguyên dương: "))
if k <= 0:
print("Bạn nhập sai rồi!")
→ Chương trình nhập một số nguyên. Sau đó kiểm tra: nếu số vừa nhập ≤ 0 (tức không phải số nguyên dương) thì in thông báo "Bạn nhập sai rồi!". Nếu nhập đúng số dương thì không thông báo gì (dạng thiếu — không có else).
II. Phương pháp giải các dạng bài tập
Dạng 1: Tính giá trị biểu thức logic
Phương pháp:
- Bước 1: Tính phép toán số học trước (nếu có):
%,//,**,*,/,+,-. - Bước 2: Thực hiện phép so sánh → được
TruehoặcFalse. - Bước 3: Áp dụng phép toán logic theo thứ tự ưu tiên:
not(cao nhất) →and→or(thấp nhất).
Thứ tự ưu tiên tổng hợp: Số học → So sánh →
not→and→or
Bài tập mẫu (SGK – Ví dụ): Cho x, y, z = 10, 5, 9. Tính: c = x > 15 or y < 9
| Bước | Tính toán | Kết quả |
|---|---|---|
| Vế trái | x > 15 → 10 > 15 |
False |
| Vế phải | y < 9 → 5 < 9 |
True |
Kết hợp or |
False or True |
True |
→ c = True
Dạng 2: Viết biểu thức logic từ điều kiện cho trước
Phương pháp:
- Xác định biến cần kiểm tra.
- Dịch điều kiện toán học sang Python, dùng
and/orđể kết hợp nhiều phép so sánh.
| Điều kiện toán học | Biểu thức Python |
|---|---|
| $a < x < b$ (khoảng mở) | x > a and x < b |
| $a \le x \le b$ (đoạn đóng) | x >= a and x <= b |
| x nằm ngoài đoạn $[a; b]$ | x < a or x > b |
| x thuộc $[a; b]$ hoặc $[c; d]$ | (x >= a and x <= b) or (x >= c and x <= d) |
| x chia hết cho n | x % n == 0 |
Bài tập mẫu (SGK – Luyện tập, bài 1): Viết biểu thức logic ứng với mỗi câu:
a) Số x nằm trong khoảng (0; 10):
x > 0 and x < 10
b) Số y nằm ngoài đoạn [1; 2]:
y < 1 or y > 2
c) Số z nằm trong đoạn [0; 1] hoặc [5; 10]:
(z >= 0 and z <= 1) or (z >= 5 and z <= 10)
Dạng 3: Tìm giá trị thỏa mãn biểu thức logic
Phương pháp:
- Phân tích từng vế của biểu thức logic.
- Tìm giá trị biến sao cho mỗi vế cho kết quả phù hợp (True/False) theo phép
and/or. - Với
and: cả hai vế phải đúng. - Với
or: ít nhất một vế phải đúng.
Bài tập mẫu (SGK – Luyện tập, bài 2): Tìm một vài giá trị m, n thỏa mãn:
a) 100%m == 0 and n%5 != 0
- Vế trái:
100 % m == 0→ m phải là ước của 100. Các ước: 1, 2, 4, 5, 10, 20, 25, 50, 100. - Vế phải:
n % 5 != 0→ n không chia hết cho 5. Ví dụ: 1, 2, 3, 4, 6, 7… - Phép
and→ cả hai vế cùng đúng.
→ Ví dụ: m = 10, n = 3 (vì $100 \% 10 = 0$ ✔️ và $3 \% 5 = 3 \neq 0$ ✔️).
b) m%100 == 0 and m%400 != 0
- m chia hết cho 100 nhưng không chia hết cho 400.
→ Ví dụ: m = 100 ($100 \% 100 = 0$ ✔️, $100 \% 400 = 100 \neq 0$ ✔️). Hoặc m = 200, 300, 500…
c) n%3 == 0 or (n%3 != 0 and n%4 == 0)
- Phép
or→ chỉ cần một vế đúng. - Vế trái: n chia hết cho 3 → ví dụ n = 3, 6, 9…
- Vế phải: n không chia hết cho 3 và chia hết cho 4 → ví dụ n = 4, 8, 16…
→ Ví dụ: n = 6 (vế trái đúng) hoặc n = 8 (vế phải đúng: $8 \% 3 = 2 \neq 0$ ✔️ và $8 \% 4 = 0$ ✔️).
Dạng 4: Viết chương trình sử dụng lệnh if
Phương pháp:
- Bước 1: Xác định dữ liệu cần nhập (kiểu gì, dùng
int(input())hayfloat(input())). - Bước 2: Xác định điều kiện cần kiểm tra và hành động tương ứng.
- Bước 3: Chọn dạng
ifphù hợp:- Chỉ có 1 trường hợp xử lí → dạng thiếu.
- Có 2 trường hợp (đúng/sai) → dạng đủ (
if...else). - Có 3 trường hợp trở lên →
iflồng nhau.
- Bước 4: Viết code, chú ý dấu
:và thụt lề đúng.
Bài tập mẫu (SGK – Thực hành, nhiệm vụ 1): Viết chương trình nhập số tự nhiên n, thông báo n chẵn hay lẻ.
Phân tích: Kiểm tra n % 2 == 0 (chia 2 dư 0 → chẵn), ngược lại lẻ → dùng if...else:
n = int(input("Nhập số tự nhiên n: "))
if n % 2 == 0:
print("Số đã nhập là số chẵn.")
else:
print("Số đã nhập là số lẻ.")
Dạng 5: Viết chương trình với if lồng nhau (nhiều điều kiện)
Phương pháp:
Khi bài toán có 3 trường hợp trở lên cần xử lí khác nhau, dùng if lồng bên trong else để kiểm tra lần lượt từng điều kiện.
Cấu trúc tổng quát (3 trường hợp):
if <điều kiện 1>:
<xử lí TH1>
else:
if <điều kiện 2>:
<xử lí TH2>
else:
<xử lí TH3>
Bài tập mẫu (SGK – Thực hành, nhiệm vụ 2): Tính tiền điện lũy kế theo 3 mức giá.
Phân tích:
| Mức tiêu thụ | Giá (nghìn đồng/kWh) | Công thức tính |
|---|---|---|
| k ≤ 50 | 1,678 | t = k × 1,678 |
| 50 < k ≤ 100 | 50 kWh đầu: 1,678; phần còn lại: 1,734 | t = 50 × 1,678 + (k − 50) × 1,734 |
| k > 100 | 50 kWh đầu: 1,678; 50 tiếp: 1,734; còn lại: 2,014 | t = 50 × 1,678 + 50 × 1,734 + (k − 100) × 2,014 |
Có 3 trường hợp → dùng if lồng nhau:
k = float(input("Nhập số kWh tiêu thụ điện nhà em: "))
if k <= 50:
t = k * 1.678
else:
if k <= 100:
t = 50 * 1.678 + (k - 50) * 1.734
else:
t = 50 * 1.678 + 50 * 1.734 + (k - 100) * 2.014
print("Số tiền điện phải trả là:", round(t), "nghìn đồng")
Lưu ý: Hàm round(t) dùng để làm tròn số thực t. Trong Python, phần thập phân dùng dấu chấm . (không dùng dấu phẩy ,).
III. Sơ đồ tư duy
1. Biểu thức logic
- 1.1. Chỉ nhận giá trị
TruehoặcFalse, thuộc kiểubool - 1.2. Sáu phép so sánh:
<,>,<=,>=,==,!= - 1.3. Ba phép toán logic:
and(cả hai đúng → đúng),or(một đúng → đúng),not(đảo ngược) - 1.4. Thứ tự ưu tiên: số học → so sánh →
not→and→or
2. Câu lệnh if dạng thiếu
- 2.1. Cú pháp:
if <điều kiện>:+ khối lệnh thụt lề - 2.2. Điều kiện đúng → thực hiện; sai → bỏ qua
3. Câu lệnh if...else dạng đủ
- 3.1. Cú pháp:
if <điều kiện>:+ khối lệnh 1 +else:+ khối lệnh 2 - 3.2. Điều kiện đúng → khối lệnh 1; sai → khối lệnh 2
4. Quy tắc cú pháp
- 4.1. Bắt buộc dấu
:sau điều kiện và sauelse - 4.2. Khối lệnh thụt lề (1 Tab / 4 dấu cách), thẳng hàng
- 4.3.
iflồng nhau cho bài toán có 3+ trường hợp
IV. Sai lầm thường gặp
| Sai lầm | Đính chính |
|---|---|
Quên dấu hai chấm : sau điều kiện: if x > 5 |
Bắt buộc phải viết if x > 5: (có dấu :). Thiếu → SyntaxError. |
Không thụt lề khối lệnh trong if/else |
Khối lệnh bên trong phải viết lùi vào. Không thụt lề → IndentationError. |
Nhầm = (gán) với == (so sánh bằng): viết if x = 5: |
= là lệnh gán, == mới là phép so sánh. Viết đúng: if x == 5:. |
Nghĩ and cần ít nhất một vế đúng là đủ (nhầm với or) |
and chỉ cho True khi cả hai vế đều True. Chỉ cần một vế False → kết quả False. |
Nghĩ or cần cả hai vế đúng mới đúng (nhầm với and) |
or chỉ cho False khi cả hai vế đều False. Chỉ cần một vế True → kết quả True. |
Viết if x > 0 and < 10: (thiếu lặp lại biến ở vế phải) |
Python không tự hiểu biến ở vế trước. Phải viết đầy đủ: if x > 0 and x < 10:. |
| Trộn lẫn Tab và dấu cách khi thụt lề | Nên dùng thống nhất một kiểu (khuyến nghị 4 dấu cách). Trộn lẫn → IndentationError. |

Thầy Phạm Thành Danh
(Người kiểm duyệt, ra đề)
Chức vụ: Trưởng ban biên soạn môn Tin Học THPT
Trình độ: Cử nhân Sư phạm Tin học, Chứng chỉ hạng II, Chứng chỉ Tin học, Ngoại ngữ B1
Kinh nghiệm: 8+ năm kinh nghiệm tại Trường THPT Thuận Hóa
