



















Preview text:
lOMoAR cPSD| 45734214 10/7/2023
LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN NÂNG CAO
Thực hiện: TS.Trần B nh Long
CHƯƠNG 2: ĐIỀU KHIỂN LUỒNG VÀ VÒNG LẶP
1. Lệnh if, if...else, if...elif...else 2. Vòng lặp for 3. Vòng lặp while 4. Lệnh break và continue 5. Lệnh pass
6. Các kỹ thuật vòng lặp
Cấu trœc lệnh if if i u kiện: khối lệnh
Chương trình kiểm tra iều kiện v thực hiện các lệnh khi
iều kiện là True. Nếu iều kiện False th lệnh không thực hiện. 1 lOMoAR cPSD| 45734214 10/7/2023
Khối lệnh của if bắt ầu với thụt l và kết thúc lệnh if
với d ng không thụt l .
Cấu trœc lệnh if
>>> # Nếu l số dương sẽ in th ng bÆo num = 3 if num > 0:
print(num, "l số dương.")
print("Th ng bÆo này luôn ược in.") num = -1 if num > 0:
print(num, "l số dương.")
print("Th ng bÆo này cũng ược in.") Kết quả 3 l số dương.
Th ng bÆo này luôn ược in.
Th ng bÆo này cũng ược in. nh if...else
Cấu trúc lệnh if...else if i u kiện: Khối lệnh của if else: Khối lệnh của else 2 lOMoAR cPSD| 45734214 10/7/2023 Lệ
Lệnh if kiểm tra i u kiện và thực hiện khối lệnh if nếu
i u kiện úng. Nếu i u kiện sai, khối lệnh của else sẽ ược thực hiện.
Thụt l ược sử dụng trong các khối lệnh.
Lệnh if...else
>>> # Kiem tra so am hay duong >>> num = 3 if num >= 0:
print("So duong hoac bang 0") else: print("So am")
# Output: So duong hoac bang 0 num1=-1 if num1 >= 0:
print("So duong hoac bang 0") else: print("So am") # Output: So am 3 lOMoAR cPSD| 45734214 10/7/2023 Lệ
nh if...elif...else
Cấu trúc lệnh if...elif...else if i u kiện: Khối lệnh của if elif i u kiện: Khối lệnh của elif else: Khối lệnh của else
elif là viết gọn của else if, cho phØp kiểm tra nhi u
i u kiện. Nếu i u kiện sai, sẽ kiểm tra i u kiện của
khối elif tiếp theo v tiếp tục cho ến hết. Nếu tất cả i u
kiện u sai sẽ thực hiện khối lệnh của else. C thể c
nhi u elif, phần else là tùy chọn
Lệnh if...elif...else V dụ:
>>> x = int(input("Nhap mot so: ")) if x < 0: print(’So am’) elif x == 0: print(’So 0’) elif x == 1: print(’So 1’) else: print(’So duong’) 4 lOMoAR cPSD| 45734214 10/7/2023 Lệ
Lệnh if ... elif ... elif… thay thế cho lệnh switch hay
case trong ng n ngữ lập trình khác.
nh if lồng nhau
Lệnh if... else trong khối lệnh if... else khÆc tạo th nh lệnh if lồng nhau.
Kh ng giới hạn số lệnh ược lồng v o nhau.
Thụt l l cÆch ể nhận diện mức ộ lồng nhau.
>>> num = float(input("Nhập một số: ")) if
num >= 0: if num == 0: print("Số Kh ng") else: print("Số dương") else: print("Số m") V ng lặp for
For ể duyệt cÆc phần tử trong Python như list, string
hoặc các ối tượng. Cú pháp của for for
bien_lap in chuoi_lap: Khối lệnh của for bien_lap
sẽ nhận giá trị của từng mục trong chuoi_lap ở mỗi lần lặp.
V ng for sẽ thực hiện ến mục cuối cùng trong chuỗi.
Khối lệnh của for ược thụt l . 5 lOMoAR cPSD| 45734214 10/7/2023 V ng lặp for
>>> # In chữ cÆi trong lachong for chu in ‘lachong’:
print('Chữ cái hiện tại:', chu) Kết quả: Chữ cái hiện tại: l Chữ cái hiện tại: a Chữ cái hiện tại: c Chữ cái hiện tại: h Chữ cái hiện tại: o Chữ cái hiện tại: n Chữ cái hiện tại: g V ng lặp for
>>> # T nh t ऀ ng tất cả cÆc số trong danh sÆch A # Danh sÆch A
A = [1, 3, 5, 9, 11, 2, 6, 8, 10]
# Biến lưu trữ t ऀ ng cÆc số l tong tong = 0 # Vòng lặp for for i in A: tong = tong+i
print("T ऀ ng cÆc số l ", tong)
# Output: T ऀ ng cÆc số l 55 ) 6 lOMoAR cPSD| 45734214 10/7/2023 Lệ 7 lOMoAR cPSD| 45734214 10/7/2023 H m range()
Døng h m range() ể tạo dªy số. Cœ phÆp H m
range(số bắt ầu, số kết thúc, khoảng cách giữa hai số)
Nếu không ặt khoảng cách giữa hai số thì mặc ịnh bằng 1.
V dụ, range(100) tạo dãy số từ 0 ến 99 (100 số).
Ví dụ: Viết 10 lần ‘Lập trình Python’ >>> for i in range(10):
print (‘Lập trình Python’) H m range()
Døng list() ể hàm range() xuất tất cả các giá trị >>> print(range(9)) # Output: range(0, 9) print(list(range(9)))
# Output: [0, 1, 2, 3, 4, 5, 6, 7, 8]
print(list(range(2, 5))) # Output:
[2, 3, 4] print(list(range(0, 15, 5))) # Output: [0, 5, 10] H m range()
H m range() sử dụng kết hợp với len() ể lặp qua một dªy sử dụng index: 8 lOMoAR cPSD| 45734214 10/7/2023
>>> chuoi = [‘học’,’học nữa’,’học mãi’] for i in range(len(chuoi)):
print(‘Chúng ta phải: ‘,chuoi[i]) Kết quả: Chœng ta phải: học
Chœng ta phải: học nữa Chœng ta phải: học mãi
Kết hợp for với else
Else kh ng chỉ kết hợp với if m còn ược dùng trong
vòng lặp for. Trong for, khối lệnh của else ược thực
thi khi các mục trong chuỗi ược lặp hết. >>> B = [0, 2, 4] for b in B: print(b) else:
print(‘Đã hết số.’) # Kết quả: 0 2 4 Đã hết số. Lệnh break
Lệnh break ược døng ể dừng vòng lặp for. Nếu có
else, else trong for chỉ thực hiện khi kh ng c break.
>>> # Dãy từ 0 ến 10 9 lOMoAR cPSD| 45734214 10/7/2023 for num in range(0,10):
# Các thừa số của một số trong dªy for i in range(2, num):
#Xác ịnh thừa số (phØp chia c số dư bằng 0) if num%i == 0:
j=num/i #Ước lượng thừa số thứ 2
print ('%d bằng %d * %d' % (num,i,j))
break #Dừng for trong, chuyển ra for ngo i
else: # Phần else trong vòng lặp
print (num, ’l số nguyŒn t́’) Lệnh break Kết quả: 0 l số nguyŒn tố 1 l số nguyŒn tố 2 l số nguyŒn tố
3 l số nguyŒn tố 4 bằng 2 * 2 5 l số nguyŒn tố 6 bằng 2 * 3 7 l số nguyŒn tố 8 bằng 2 * 4 9 bằng 3 * 3 10 lOMoAR cPSD| 45734214 10/7/2023 V ng lặp while
While ược dùng ể lặp lại một khối lệnh, thực hiện khi
i u kiện kiểm tra úng.
while døng trong trường hợp kh ng biết trước ược
số lần lặp là bao nhiŒu. Cú pháp của while:
while i u_kiện_kiểm_tra: Khối lệnh của while
Trong Python mọi giá trị khác 0 u là True, None và 0 ược hiểu là False.
While sẽ kh ng thực hiện nếu ngay lần ầu tiên
iều_kiện_kiểm_tra l False.
Cœ phÆp của while
Khối lệnh của While bắt ầu với thụt l và kết thœc với dòng không thụt l . >>> count = 0 n = 0 while (count < 8):
print (’Số thứ', n,' là:', count) n = n + 1 count = count + 1 print ("Hết rồi!")
Cœ phÆp của while Kết quả: Số thứ 0 l : 0 11 lOMoAR cPSD| 45734214 10/7/2023 Số thứ 1 l : 1 Số thứ 2 l : 2 Số thứ 3 l : 3 Số thứ 4 l : 4 Số thứ 5 l : 5 Số thứ 6 l : 6 Số thứ 7 l : 7 Hết rồi!
Cœ phÆp của while V dụ
>>> n = int(input("Nhập n: ")) #Nhập số n tøy
tong = 0 #khai báo và gán giá trị cho tong i
= 1 #khai báo và gán giá trị cho bíŒn ếm i while i <= n: tong = tong + i i =
i+1 # cập nhật biến ếm
print("T ऀ ng l ", tong) Kết quả: >>>Nhập n: 11 T ऀ ng l 66
Vòng lặp vô tận
>>> n = int(input("Nhập n: ")) #Nhập số n tøy
tong = 0 #khai báo và gán giá trị cho tong i
= 1 #khai báo và gán giá trị cho biến ếm i 12 lOMoAR cPSD| 45734214 10/7/2023
while i <= n: tong = tong + i #
i=i+1 bỏ i dòng i=i+1 print("T ऀ ng l ", tong)
Khi này chạy lệnh ta sẽ ược: >>> Nhập n: 1
Kh ng c lệnh nào ược thực hiện. Đây l trường hợp lặp
v tận. Nhấn phím Ctrl + C ể thoÆt khỏi vòng lặp.
While kết hợp với else
Khối lệnh của else ược thực hiện khi i u kiện của while l False. >>> dem = 0
while dem < 3: print("Đang
ở v ng lặp while") dem = dem + 1 else:
print("Đang ở else") Kết quả:
>>> Đang ở v ng lặp while Đang ở v ng lặp while Đang ở v ng lặp while Đang ở else
While kết hợp với else >>> n = 0 while n < 2: print(n,"nhỏ hơn 2") 13 lOMoAR cPSD| 45734214 10/7/2023 n = n + 1 else:
print (n,"kh ng nhỏ hơn 2") Kết quả l : >>> 0 l nhỏ hơn 2 1 l nhỏ hơn 2 2 kh ng nhỏ hơn 2
while trŒn một d ng
Vòng lặp while chỉ có một lệnh duy nhất, c thể viết
trŒn cøng một dòng với while. V ng lặp vô tận
với while một dòng lệnh >>> flag = 1
while (flag): print (‘Flag ã cho là True!’) Print (‘Kết thúc’)
Đây l v ng lặp vô tận, nhấn t ऀ hợp phím Ctrl + C ể thoát vòng lặp. 14 lOMoAR cPSD| 45734214 10/7/2023 Lệ
nh break v lệnh continue
Lệnh break v continue døng thay ऀ i các bước thực hiện của vòng lặp.
Vòng lặp thực hiện khối lệnh ến khi i u kiện kiểm tra l
False thì dừng, nhưng nếu muốn dừng v ng lặp m kh
ng cần i u kiện kiểm tra, sử dụng lệnh break v continue. Lệnh break
Lệnh break kết thúc vòng lặp chứa nó và chuyển ến
lệnh tiếp theo sau vòng lặp.
Nếu lệnh break ở trong v ng lặp lồng nhau, break sẽ
kết thúc vòng lặp trong chuyển ến vòng lặp ngoài.
Cú pháp của lệnh break:
>>> break Với vòng lặp for
>>> for var in sequence: 15 lOMoAR cPSD| 45734214 10/7/2023 Lệ
# khối lệnh bên trong vòng lặp for if dieu_kien: break
#lệnh khác bên trong vòng lặp for
# lệnh bên ngoài vòng lặp for nh break
Với vòng lặp while
>>> while dieu_kien_kiem_tra:
#Lệnh bên trong vòng lặp while if dieu_kien: break
#Lệnh khác bên trong vòng lặp while
#lệnh bên ngoài vòng lặp while
Khi break ược thực thi ‘#lệnh khÆc bŒn trong v ng
lặp for/while’ sẽ bỏ qua và chuyển ến ‘#lệnh bŒn
ngoài vòng lặp for/while’. Lệnh break
>>> # Lệnh break trong for for val in "string": if val == "i": break print(val) print("Kết thœc!") 16 lOMoAR cPSD| 45734214 10/7/2023 Lệ
V ng for thực hiện trong chuỗi "string", và kiểm tra i u
kiện, nếu gặp chữ ‘i’, lệnh break ược thực hiện. Kết
quả cÆc chữ khác ‘i’ trước ó ược in ra m n h nh. >>> s t r Kết thœc! nh break >>> bien = 10
while bien > 0: print ('Giá trị
biến hiện tại là: ', bien) bien = bien -1 if bien == 5: break print ("OK!")
Lệnh trên kiểm tra và in biến theo giá trị giảm dần từ 10,
cho ến khi biến bằng 5 thì kết thúc vòng lặp.
>>> GiÆ trị biến hiện tại là: 10
GiÆ trị biến hiện tại là: 9
GiÆ trị biến hiện tại là: 8
GiÆ trị biến hiện tại là: 7
GiÆ trị biến hiện tại là: 6 OK!
Lệnh continue
Lệnh continue bỏ qua phần lệnh c n lại bŒn trong
v ng lặp v thực hiện cho lần lặp hiện tại.
Cấu trúc của continue: 17 lOMoAR cPSD| 45734214 10/7/2023 Lệ
>>> continue Với vòng
lặp for >>> for var in sequence:
#khối lệnh bên trong vòng lặp for if dieu_kien: continue
#Lệnh khác bên trong vòng lặp for
#Lệnh bên ngoài vòng lặp for nh continue
Với vòng lặp while
>>> while dieu_kien_kiem_tra:
#Lệnh bên trong vòng lặp while if dieu_kien: continue
#Lệnh khác bên trong vòng lặp while
#Lệnh bên ngoài vòng lặp while
Khi continue ược thực thi ‘#Lệnh khÆc bŒn trong
vòng lặp for/while’ sẽ bị bỏ qua và quay trở lại ‘#Lệnh
bŒn trong vòng lặp for/while’
Lệnh continnue
>>> # Lệnh continue trong for for val in "string": if val == "i": continue print(val) 18 lOMoAR cPSD| 45734214 10/7/2023 Lệ print("Kết thœc!")
Khi for lặp chuỗi "string" ến chữ "i“, sẽ bỏ qua lệnh in
print(val) và quay trở lại lệnh if val=="i":, kết quả: >>> s t r n g Kết thœc! nh continnue >>> bien = 10
while bien > 0: bien = bien -1 if bien == 5: continue print
(’Giá trị bíên hiện tại là: ', bien) print ("OK!")
Nếu bien = 5 bỏ qua và thực hiện lần lặp tiếp theo, kết quả:
>>> GiÆ trị biến hiện tại là: 9 . . . .
GiÆ trị biến hiện tại là: 6
GiÆ trị biến hiện tại là: 4
GiÆ trị biến hiện tại là: 3 . . ..
GiÆ trị biến hiện tại là: 0 OK! Lệnh pass 19 lOMoAR cPSD| 45734214 10/7/2023 Lệ
Lệnh pass như một placeholder (trình giữ chỗ) cho
việc thực thi các hàm, vòng lặp,... trong tương lai.
Khi lập trình, dự ịnh c h m, vòng lặp, nhưng chưa thể x
y dựng, muốn ể lại làm sau. Nhưng hàm, v ng lặp ó
không thể ể rỗng, trình biên dịch sẽ báo lỗi, Sử dụng
lệnh pass ể xây dựng một khối lệnh rỗng, lúc này trình
biên dịch sẽ không báo lỗi.
Trong lệnh pass cÆc chú thích, bình luận sẽ không bị bỏ qua.
Cấu trúc của lệnh pass >>> pass 20