Câu lệnh if rẽ nhánh❖Python chỉ có một cấu trúc rẽ nhánh duy nhất, sử dụng để lựa chọn làm một trong số nhiều công việc ➢Nhiều ngôn ngữ lập trình khác sử dụng if cho trường hợp 2 lối rẽ
Trang 1TRƯỜNG ĐẠI HỌC THỦY LỢI Khoa Công nghệ thông tin
Trang 2Cấu trúc rẽ nhánh
Trang 3Khối lệnh
Sai
Đúng
Trang 4print("a nho hon b!")
→Kết quả: a nho hon b!
Trang 7Khối lệnh 1
Sai Đúng
Khối lệnh 2
Trang 11Câu lệnh if …elif …else
11
Cho ví dụ minh họa:
Trang 12Chú ý: if, elif, else phải được viết
thẳng cột (cùng 1 mức)
Câu lệnh if …elif …else
Trang 13Các phép toán so sánh và logic
❖Các phép toán so sánh:
==, ! =, < , >, <=, >=
→Kết quả của phép so sánh: True hoặc False
❖Phép toán logic: not, and, or
❖Chú ý: Các phép toán logic có thứ tự ưu
tiên thực hiện thấp hơn các phép toán số
học và phép so sánh.
13
Trang 14Nhập 3 số dương a, b, c Kiểm tra xem 3
số đó có phải là 3 cạnh của 1 tam giác?
Ví dụ
Trang 15Nhập 3 số a, b, c Kiểm tra xem 3 số đó có phải là 3 cạnh của 1tam giác?
15
Ví dụ
Trang 16Cách viết đầy đủ Cách viết rút gọn
if <điều kiện> == True: if <điều kiện>:
if a ==0 and b ==0 and c ==0: if a ==b ==c ==0:
if 1<a and a<b and b<5: if 1<a<b<5:
Trang 17Câu lệnh if
# In thông báo nếu được điểm số loại giỏi
if diem >= 8:
print("Chúc mừng bạn đã được điểm giỏi")
# In thông báo xem n chẵn hay lẻ
Trang 18Tổng kết về câu lệnh if
Trang 19Ví dụ
Nhập vào 3 số a, b, c (a ≠ 0) Giải phương
trình bậc 2: 𝑎𝑥2 + 𝑏𝑥 + 𝑐 = 0
19
Trang 20Ví dụ
Trang 21Ví dụ
21
Trang 22Ví dụ áp dụng
❖Nhập vào 3 số a, b, c dương Kiểm tra xem
a, b, c có phải là 3 cạnh của tam giác hay
không? Nếu là 3 cạnh của tam giác thì xem
thuộc loại nào: Tam giác đều/ cân/ thường?
Trang 23Câu lệnh: A if <điều-kiện> else B
23
Trang 24Câu lệnh: A if <điều-kiện> else B
Trang 25Câu lệnh if (rẽ nhánh)
❖Python chỉ có một cấu trúc rẽ nhánh duy nhất, sử dụng để
lựa chọn làm một trong số nhiều công việc
➢Nhiều ngôn ngữ lập trình khác sử dụng if cho trường
hợp 2 lối rẽ nhánh và switch cho trường hợp nhiều lối rẽ
nhánh
❖Nguyên tắc với rẽ nhánh if-elif-else:
➢Biểu thức điều kiện của if và elif phải có kết quả logic
➢Hệ thống sẽ lần lượt tính giá trị từng biểu thức điều kiện
từ trên xuống dưới, bắt đầu từ phát biểu if
➢Nếu biểu thức điều kiện nào đúng thì khối lệnh tương
ứng được thực hiện và bỏ qua các khối lệnh khác
➢Trường hợp mọi biểu thức điều kiện đều sai, khối lệnh
ứng với else sẽ được thực hiện
➢Khối else là tùy chọn, không nhất thiết phải xuất hiện
25
Trang 27➢Khối này sẽ không chạy nếu vòng lặp bị “break”
➢Không bắt buộc phải có khối này
for <Tên biến> in [Tập giá trị]:
<Khối lệnh for>
[ else:
<Khối lệnh else>
] # Phần else có thể không có
Trang 28Vòng lặp for
➢ Ví dụ:
Trang 29Vòng lặp for duyệt một miền số nguyên
❖Cú pháp vòng for rất phù hợp với việc duyệt một tập hợp ít phần tử
➢Vì ta phải liệt kê mọi phần tử trong tập
❖Nhưng nếu muốn duyệt tập rất nhiều phần tử thì sao?
➢Chẳng hạn muốn duyệt các số nguyên từ 1 đến 1.000.000?
❖Python cung cấp hàm range để tạo một dãy số:
➢Hàm range(n) : tạo dãy số nguyên từ 0 đến n-1
➢Hàm range(n,m) : tạo dãy số nguyên từ n đến m-1
➢Hàm range(n,m,k) : tạo dãy số nguyên từ n đến trước m với bước nhảy k (một lần giá trị tăng k đơn vị)
▪ Chú ý: giá trị k có thể âm, trong trường hợp này dãy số sinh ra sẽ giảm dần
Trang 30Vòng lặp for
Trang 31Ví dụ: Tính n!
31
Trang 32Câu lệnh continue
❖Câu lệnh continue được viết trong khối lệnh
của các vòng lặp Khi thực hiện câu lệnh
continue , các câu lệnh phía sau khối lệnh sẽ
không được thực hiện mà quay sang lần lặp
tiếp theo.
❖Ví dụ:
Trang 33Câu lệnh break
❖Câu lệnh break được viết trong khối lệnh của
các vòng lặp Khi thực hiện câu lệnh break ,
chương trình sẽ thoát ra khỏi vòng lặp trong
cùng chứa lệnh break
❖Ví dụ:
33
Trang 34Câu lệnh break
❖ Ví dụ:
Trang 35Khối lệnh
Sai
Đúng
Trang 36Câu lệnh while
Trang 37Vòng lặp while kết hợp điều kiện if
37
Trang 38Tính UCLN (thuật toán Euclid)
Trang 39Vòng lặp while với break
39
Trang 40Vòng lặp while với continue
Trang 41Vòng lặp while sử dụng else
41
Trang 42Tóm tắt nội dung
❖Python chỉ có 2 loại vòng lặp là while và for (thay vì 3 loại như C/C++)
❖Lặp while thực hiện lặp chừng nào điều kiện còn đúng
❖Lặp for cho phép duyệt từng phần tử của một danh sách
❖Hàm range hỗ trợ tạo các miền số nguyên để phép duyệt bằng for trở nên ngắn gọn hơn
❖Cả while và for đều hỗ trợ các cú pháp mở rộng:
➢Lệnh break để kết thúc vòng lặp hiện tại
➢Lệnh continue để bắt đầu một vòng lặp mới
➢Khối else được thực hiện nếu vòng lặp kết thúc không dobreak
Trang 434) Cho số nguyên dương n (0 < 𝑛 ≤ 1012) Kiểm tra xem n có
phải là số nguyên tố hay không?
5) Biết rằng: số tự nhiên n được gọi là số hoàn hảo nếu tổng
các ước số của n bằng đúng 2n Ví dụ: n = 6 có các ước là
1, 2, 3, 6 và có 1 + 2 + 3 + 6 = 12 Cho hai số tự nhiên a
và b (1 ≤ 𝑎 < 𝑏 ≤ 10000) Tìm tất cả các số hoàn hảotrong đoạn [a, b]
43
Trang 44Bài tập
6 Viết chương trình cho phép người dùng nhập vào liên tiếp
một dãy số tự nhiên (không biết trước độ dài), việc nhập
dãy sẽ kết thúc khi người dùng nhập một số âm hoặc số
0 Sau khi kết thúc, in ra màn hình ước số chung lớn nhất
và bội số chung nhỏ nhất của tất cả các số vừa nhập vào
7 Hàm fibo mở rộng được định nghĩa như sau
Trang 45Bài tập áp dụng
Số lũy thừa 2-3.
Một số tự nhiên n được gọi là số lũy thừa 2-3
nếu n có dạng n = 2x3y Nhập số n Kiểm tra
xem n có là số lũy thừa 2-3 không?
59