Hôm nay chúng ta sẽ tìm hiểu cách sử dụng vòng lặp trong Python.
Trong quá trình phát triển ứng dụng sẽ có những việc (logic cụ thể nào đó) mà chúng ta muốn lặp lại một số lần nhất định, lúc này ta sẽ sử dụng vòng lặp để xử lý. Để hiểu rõ hơn ta sẽ xét một vài ví dụ cụ thể sau:
for … in
Vấn đề 1: Hãy in ra màn hình các phần tử trong danh sách a = [1, 0.2, 'abc']
.
Cú pháp của vòng lặp for:
for item in items:
# The code you want to repeat
Cách hoạt động: item
đại diện cho một phần tử trong danh sách items
trong quá trình chạy vòng lặp, với mỗi item
phần code phía dưới for
sẽ được thực thi. Vòng lặp for
sẽ dừng lại khi nó duyệt đến phần tử cuối cùng hoặc bị can thiệp bởi các câu lệnh khác (ta sẽ tìm hiểu sau).
Trở lại vấn đề 1, hành động chúng ta muốn lặp lại ở đây là: Với mỗi phần tử được xét đến hãy in nó ra màn hình.
def main():
a = [1, 0.2, 'abc']
for x in a:
print(x)
main()
Output
1
0.2
abc
while và for … in range
Vấn đề 2: Hãy in ra màn hình các số tự nhiên chẵn nhỏ hơn 10.
Trước tiên ta hãy tìm hiểu một chút về vòng lặp while. Vòng lặp while có cú pháp như sau:
while(condition)
# The code you want to repeat
Cách hoạt động: Khi condition được thỏa mãn (true
) thì phần code phía dưới while
sẽ được thực thi. Vòng lặp while
sẽ dừng lại khi condition bị vi phạm (false
) hoặc bị can thiệp bởi một số câu lệnh khác (ta sẽ tìm hiểu sau).
Trở lại vấn đề 2, hành động chúng ta muốn lặp lại ở đây là: Kiểm tra một con số nhỏ hơn 10 xem nó có là số chẵn hay không, nếu nó là số chẵn thì in con số đó ra màn hình.
Cách 1: Sử dụng vòng lặp while
def main():
i = 0
while(i < 10):
if(i % 2 == 0):
print(i)
i += 1
main()
Output
0
2
4
6
8
Cách 2: Sử dụng for ... in range
def main():
for i in range(10):
if(i % 2 == 0):
print(i)
main()
Output
0
2
4
6
8
Ta tìm hiểu một chút về hàm range()
: Hàm range()
có 3 tham số chúng ta cần lưu ý là start
, stop
và step
. Cụ thể hàm range(1, 5, 2)
thông báo với chương trình: “Hãy trả cho tôi một dãy các số bắt đầu từ 1
, kết thúc là một số bé hơn 5
và số sau sẽ lớn hơn số trước 2
đơn vị”, ta sẽ nhận được kết quả là 1, 3
.
Chú ý: Giá trị mặc định của start
và step
lần lượt là 0 và 1.
Trở lại với vấn đề trên, ở cách 2, chương trình sẽ lần lượt xét từng con số trong dãy số từ 0 đến 9 (được tạo ra từ hàm range(10)
), nếu con số đó là chẵn chương trình sẽ in ra màn hình.
Quiz: Các bạn hãy viết một hàm sử dụng hàm range()
với đầy đủ các tham số start
, stop
và step
để giải quyết vấn đề 2.
for và break
Không phải lúc nào chúng ta cũng phải duyệt hết các phần tử trong một danh sách cho trước, để dừng vòng lặp lại khi thoả một điều kiện cụ thể nào đó Python cung cấp cho ta câu lệnh (statement) break
.
Vấn đề 3: Cho trước một danh sách animals = ['cat', 'dog', 'tiger', 'lion', 'elephant]
. Hãy in tên các con vật đứng trước tiger
.
Sử dụng for
và break
: Ta thông báo với chương trình rằng với mỗi con vật (animal
) trong (in) danh sách animals
hãy in cho tôi tên của chúng tuy nhiên hãy dừng vòng lặp lại (break
) nếu tên con vật đang xét đến là tiger
.
def main():
animals = ['cat', 'dog', 'tiger', 'lion', 'elephant']
for animal in animals:
if(animal == 'tiger'):
break;
print(animal)
main()
Output
cat
dog
Việc đặt break
đúng chỗ rất quan trọng, hãy thử suy nghĩ về quiz sau:
def main():
animals = ['cat', 'dog', 'tiger', 'lion', 'elephant']
for animal in animals:
print(animal)
if(animal == 'tiger'):
break;
main()
Quiz: Đoạn code trên có giải quyết được vấn đề 3 không? Nếu không thì kết quả cụ thể trên màn hình là gì?
for và continue
Ngoài câu lệnh break
, Python còn cung cấp cho ta câu lệnh continue
để tác động vào vòng lặp. Ta sẽ xét một ví dụ để hiểu rõ hơn:
Vấn đề 4: Cho trước một danh sách animals = ['cat', 'dog', 'tiger', 'lion', 'elephant]
. Hãy in tên tất cả các con vật ngoại trừ tiger
.
def main():
animals = ['cat', 'dog', 'tiger', 'lion', 'elephant']
for animal in animals:
if(animal == 'tiger'):
continue
print(animal)
main()
Output
cat
dog
lion
elephant
Ở đoạn code trên, khi chương trình nhận thấy tên của con vật đang xét đến là tiger
nó sẽ bỏ qua phần code phía dưới và đi đến con vật tiếp theo.
for … else
Nếu muốn thực hiện một hành động nào đó sau khi vòng lặp kết thúc thì ta có thể dùng cú pháp for … else. Xét một ví dụ cụ thể:
Vấn đề 5: Cho trước một danh sách numbers = [1,2,3,4,5]
. Hãy viết một hàm có một tham số là một số nguyên, nếu số truyền vào có mặt trong danh sách đã cho hãy in Found
ra màn hình, ngược lại hãy in ra màn hình Not found
.
def main(n):
numbers = [1,2,3,4,5]
for x in numbers:
if(x == n):
print('Found')
break
else:
print('Not found')
main(9)
Output
Not found
Kết thúc bài hôm nay chúng ta đã biết được:
- Cách hoạt động của các vòng lặp
for
vàwhile
trong Python. - Vai trò của hàm
range()
và một số câu lệnh quan trọng để tác động đến vòng lặp nhưbreak
,continue
. - Sử dụng mệnh đề (clause) else để thực hiện một hành động sau khi vòng lặp kết thúc.
Các bạn hãy thử suy nghĩ về các quiz trong bài, tìm hiểu thêm các vấn đề sử dụng while
và break
, while
và continue
để xử lý nhé.
Python cơ bản
Phần 1: Kiến thức tổng quan
Cú pháp (syntax)
Biến (variables)
Chuỗi ký tự (strings)
Số (numbers) trong Python
Boolean trong Python
Vòng lặp trong Python
Danh sách (list) trong Python
Bộ dữ liệu (tuple) trong Python
Đường tuy ngắn không đi không đến; Việc tuy nhỏ không làm không nên.