Mục tiêu bài học
- Kiến thức:
- Biết và trình bày được các phép toán với kiểu dữ liệu logic.
- Trình bày và hiểu được cấu trúc rẽ nhánh và câu lệnh if.
- Kĩ năng:
- Sử dụng được lệnh rẽ nhánh if trong lập trình để giải quyết các bài toán đơn giản.
- Phẩm chất:
- Hình thành ý thức trách nhiệm, tính cẩn thận khi làm việc nhóm.
- Rèn luyện phẩm chất làm việc chăm chỉ, chuyên cần để hoàn thành nhiệm vụ.
Hoạt động khởi động
Trong cuộc sống, chúng ta thường xuyên đứng trước những lựa chọn phụ thuộc vào một điều kiện nào đó. Ví dụ: “Nếu ngày mai trời không mưa thì em sẽ đi chơi, ngược lại thì em sẽ ở nhà làm bài tập”.
Tình huống này mô tả một cấu trúc “rẽ nhánh”. Trong lập trình, chúng ta sử dụng câu lệnh if để mô tả những cấu trúc như vậy.

Để sử dụng được lệnh if, trước hết chúng ta cần tìm hiểu về “điều kiện”, hay còn gọi là biểu thức logic.
1. Biểu thức logic
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).
- Ví dụ:
a > 10
,b < 3
,s == "number"
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>
của các ngôn ngữ lập trình bậc cao?
A. m, n = 1, 2.
B. a + b > 1.
C. a*b<a+b.
D. 12 + 15 > 2 * 13.5 > 2 * 13.
Các biểu thức có thể đưa vào vị trí <điều kiện> là các biểu thức logic, tức là các biểu thức trả về giá trị Đúng (True) hoặc Sai (False). Do đó, các phương án phù hợp là B, C, và D.
Các phép so sánh: Python cung cấp các phép toán để so sánh các giá trị số và xâu kí tự, kết quả trả về là True hoặc False.
Phép toán | Ý nghĩa | Ví dụ (với a = 10, b = 3) | Kết quả |
---|---|---|---|
> | Lớn hơn | a > 10 | False |
< | Nhỏ hơn | b < 3 | False |
>= | Lớn hơn hoặc bằng | a >= 10 | True |
<= | Nhỏ hơn hoặc bằng | b <= 3 | True |
== | Bằng nhau | a == 10 | True |
!= | Khác nhau | b != 3 | False |
Các phép toán logic: Dùng để kết hợp nhiều biểu thức logic.
and (và): Trả về True chỉ khi cả hai biểu thức đều True.
or (hoặc): Trả về True nếu ít nhất một trong hai biểu thức là True.
not (phủ định): Đảo ngược giá trị của biểu thức (True thành False và ngược lại).
Câu hỏi củng cố
Mỗi biểu thức sau có giá trị True hay False?
a) 100%4 == 0
b) 111//5 != 20 or 20%3 != 0
a) True
(100 chia hết cho 4).
b) True (Vì 111//5 = 22, khác 20 là đúng. Vế sau không cần xét vì phép toán là or).
2. Lệnh IF
Lệnh if được sử dụng để xử lý các tình huống rẽ nhánh trong chương trình.
Em có nhận xét gì về cấu trúc lệnh if? Sau <điều kiện> lệnh if có kí tự gì? Lệnh print() được viết như thế nào?
Sau <điều kiện>
của lệnh if luôn có dấu hai chấm :
. Các lệnh bên trong khối if (ví dụ lệnh print()
) phải được viết lùi vào và thẳng hàng (mặc định là 1 tab hoặc 4 dấu cách).
Câu lệnh điều kiện dạng thiếu:
Chỉ thực hiện một khối lệnh nếu điều kiện đúng và bỏ qua nếu điều kiện sai.
Cú pháp:
if <điều kiện>:
<khối lệnh>

Câu lệnh điều kiện dạng đủ:
Thực hiện <khối lệnh 1>
nếu điều kiện đúng, ngược lại thì thực hiện <khối lệnh 2>
.
Cú pháp:
if <điều kiện>:
<khối lệnh 1>
else:
<khối lệnh 2>

Lưu ý quan trọng:
- Các từ khóa if và else phải được viết thẳng lề.
- Sau <điều kiện> và else luôn có dấu hai chấm :.
- Các khối lệnh bên trong if và else phải được viết lùi vào và thẳng hàng.
Câu hỏi củng cố
Đ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 yêu cầu người dùng nhập một số nguyên dương và gán vào biến k
. Sau đó, chương trình kiểm tra nếu giá trị của k nhỏ hơn hoặc bằng 0, thì sẽ thông báo "Bạn nhập sai rồi!"
. Đây là một cách để kiểm tra dữ liệu đầu vào có hợp lệ hay không.
Luyện tập
1. Viết biểu thức logic ứng với mỗi câu sau:
a) Số x nằm trong khoảng (0; 10).
b) Số y nằm ngoài đoạn [1; 2].
c) Số z nằm trong đoạn [0; 1] hoặc [5; 10].
a) x > 0 and x < 10
b) y < 1 or y > 2
c) (0 <= z <= 1) or (5 <= z <= 10)
2. Tìm một vài giá trị m, n thoả mãn các biểu thức sau:
a) 100%m == 0 and n%5 != 0
b) m%100 == 0 and m%400 != 0
c) n%3 == 0 or (n%3 != 0 and n%4 == 0)
a) m là ước của 100, n không chia hết cho 5. Ví dụ: m = 10, n = 9.
b) m chia hết cho 100 nhưng không chia hết cho 400. Ví dụ: m = 100, 200, 300, 500.
c) n chia hết cho 3, hoặc n không chia hết cho 3 nhưng chia hết cho 4. Ví dụ: n = 3, 4, 6, 8.
Vận dụng
1. Giá bán cam tại siêu thị tính như sau: nếu khối lượng cam mua dưới 5 kg thì giá bán là 12 000 đồng/kg, nếu khối lượng mua lớn hơn hoặc bằng 5 kg thì giá bán là 10 000 đồng/kg. Viết chương trình nhập số lượng mua (tính theo kg) sau đó tính số tiền phải trả.
# Nhập số lượng cam đã mua, có thể là số lẻ
c = float(input("Nhập số lượng cam đã mua (tính theo kg): "))
# Tính và in số tiền phải trả
if c < 5:
so_tien = c * 12000
print("Số tiền phải trả là:", so_tien, "đồng")
else:
so_tien = c * 10000
print("Số tiền phải trả là:", so_tien, "đồng")
2. Năm n là năm nhuận nếu giá trị n thoả mãn điều kiện: n chia hết cho 400 hoặc (n chia hết cho 4 đồng thời không chia hết cho 100). Viết chương trình nhập số năm n và cho biết năm n có phải là nhuận hay không.
# Nhập số năm từ người dùng
year = int(input("Nhập số năm: "))
# Kiểm tra điều kiện năm nhuận
if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
print(year, "là năm nhuận")
else:
print(year, "không là năm nhuận")