ĐIỀU KHIỂN LUỒNG VÀ VÒNG LẶP

 

ĐIỀU KHIỂN LUỒNG VÀ VÒNG LẶP


 

Điều khiển luồng trong Python

 

 Các bạn cũng đã khá quen thuộc với các lệnh điều khiển luồng trong C, C++ như if, if else, … Chương này sẽ trình bày về các lệnh điều khiển luồng trong Python.

Ngôn ngữ lập trình Python coi các giá trị khác null và khác 0 là true, và coi các giá trị là null hoặc 0 là false.

Sau đây chúng ta cùng tìm hiểu các lệnh điều khiển luồng trong Python:

Lệnh if trong Python

Lệnh if trong Python là giống như trong ngôn ngữ C. Lệnh này được sử dụng để kiểm tra một điều kiện, nếu điều kiện là true thì lệnh của khối if sẽ được thực thi, nếu không nó sẽ bị bỏ qua.

Bạn theo link sau để tìm hiểu chi tiết về Lệnh if trong Python.

Lệnh if…else trong Python

Một lệnh else có thể được sử dụng kết hợp với lệnh if. Một lệnh else chứa khối code mà thực thi nếu biểu thức điều kiện trong lệnh if được ước lượng là 0 hoặc một giá trị false. Lệnh else là lệnh tùy ý và chỉ có duy nhất một lệnh else sau lệnh if.

Bạn theo link sau để tìm hiểu chi tiết về Lệnh if...else trong Python.

Lồng các lệnh if trong Python

Đôi khi có một tình huống là khi bạn muốn kiểm tra thêm một điều kiện khác sau khi một điều kiện đã được ước lượng là true. Trong tình huống như vậy, bạn có thể sử dụng các lệnh if lồng nhau trong Python.

Trong cấu trúc các lệnh if lồng nhau, bạn có thể có cấu trúc if…elif…else bên trong cấu trúc if…elif…else khác.

Bạn theo link sau để tìm hiểu chi tiết về Lồng các lệnh if trong Python.

Trường hợp các Suite lệnh đơn

Bạn đã tìm hiểu về suite trong chương Cú pháp cơ bản. Nếu suite của một mệnh đề if chỉ bao gồm một dòng lệnh đơn, thì nó có thể ở trên cùng một dòng như là header của lệnh.

Dưới đây là ví dụ đơn giản về một mệnh đề if một dòng:

var = 6677028


if ( var  == 6677028 ) : print "Gia tri cua bieu thuc la 6677028"


print "Beautiful!"

Khi code trên được thực thi sẽ cho kết quả:

Gia tri cua bieu thuc la 6677028

Beautiful!


 

Lệnh if trong Python

 

Lệnh if trong Python là giống như trong ngôn ngữ C. Lệnh này được sử dụng để kiểm tra một điều kiện, nếu điều kiện là true thì lệnh của khối if sẽ được thực thi, nếu không nó sẽ bị bỏ qua.

Cú pháp của lệnh if là:

if bieu_thuc:   cac_lenh

Ví dụ của lệnh if trong Python:

  var1 = 100if var1:   print "1 - Nhan mot gia tri true"   print var1 var2 = 0if var2:   print "2 - Nhan mot gia tri true"   print var2print "Good bye!"

 

Khi code trên được thực thi sẽ cho kết quả:

1 - Nhan mot gia tri true100Good bye!

 

Lệnh if...elif...else trong Python

 

Một lệnh else có thể được sử dụng kết hợp với lệnh if. Một lệnh else chứa khối code mà thực thi nếu biểu thức điều kiện trong lệnh if được ước lượng là 0 hoặc một giá trị false. Lệnh else là lệnh tùy ý và chỉ có duy nhất một lệnh else sau lệnh if.

Cú pháp của lệnh if...else là:

iif bieu_thuc:

   cac_lenh

Ví dụ của lệnh if trong Python:

 


var1 = 100

if var1:

   print "1 - Nhan mot gia tri true"

   print var1


var2 = 0

if var2:

   print "2 - Nhan mot gia tri true"

   print var2

print "Good bye!"

 

Khi code trên được thực thi sẽ cho kết quả:

1 - Nhan mot gia tri true

100

Good bye!


Lệnh elif trong Python

Lệnh elif cho phép bạn kiểm tra nhiều điều kiện và thực thi khối code ngay khi một trong các điều kiện được ước lượng là true. Cũng giống như lệnh else, lệnh elif là tùy ý. Tuy nhiên, không giống else mà chỉ có một lệnh được theo sau if, thì bạn có thể sử dụng nhiều elif theo sau if.

Cú pháp của lệnh elif là:

Cú pháp của lệnh if...else là:

if bieu_thuc:

   cac_lenh

else:

   cac_lenh

Dưới đây là ví dụ minh họa lệnh if...else trong Python:

 


var1 = 100

if var1:

   print "1 - Nhan mot gia tri true"

   print var1

else:

   print "1 - Nhan mot gia tri false"

   print var1


var2 = 0

if var2:

   print "2 - Nhan mot gia tri true"

   print var2

else:

   print "2 - Nhan mot gia tri false"

   print var2


print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả:

1 - Nhan mot gia tri true

100

2 - Nhan mot gia tri false

0

Good bye!


 

Lồng các lệnh if trong Python

 

Đôi khi có một tình huống là khi bạn muốn kiểm tra thêm một điều kiện khác sau khi một điều kiện đã được ước lượng là true. Trong tình huống như vậy, bạn có thể sử dụng các lệnh if lồng nhau trong Python.

Trong cấu trúc các lệnh if lồng nhau, bạn có thể có cấu trúc if…elif…else bên trong cấu trúc if…elif…else khác.

Cú pháp của cấu trúc lồng các lệnh if như sau:

if bieu_thuc1:

   cac_lenh

elif bieu_thuc2:

   cac_lenh

elif bieu_thuc3:

   cac_lenh

else:

   cac_lenh


 

Dưới đây là ví dụ minh họa cho cấu trúc các lệnh if lồng nhau trong Python:

var = 100

if var == 200:

   print "1 - Nhan mot gia tri true"

   print var

elif var == 150:

   print "2 - Nhan mot gia tri true"

   print var

elif var == 100:

   print "3 - Nhan mot gia tri true"

   print var

else:

   print "4 - Nhan mot gia tri false"

   print var


print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả:

3 - Nhan mot gia tri true

100

Good bye!


 

Vòng lặp trong Python

 

Nói chung, các lệnh được thực thi theo các liên tiếp nhau: lệnh thứ nhất được thực thi đầu tiên và sau đó là lệnh thứ hai, thứ ba, … Tuy nhiên có một tình huống là bạn muốn thực thi một khối code nhiều lần, thì trong trường hợp này, các ngôn ngữ lập trình cung cấp cho bạn các cấu trúc điều khiển đa dạng để làm điều này.

Bạn cũng đã khá quen thuộc với khái niệm vòng lặp trong C, hoặc C++. Ngôn ngữ Python cũng cung cấp cho bạn các kiểu vòng lặp như vòng lặp while, vòng lặp for, cấu trúc lồng vòng lặp. Bên cạnh đó, để hỗ trợ cho trình thực thi của vòng lặp, Python cũng hỗ trợ một số lệnh điều khiển vòng lặp như lệnh break, lệnh continue và lệnh pass. Phần tiếp theo chúng ta sẽ tìm hiểu sơ qua về từng loại này.

(Bạn truy cập link để tìm hiểu chi tiết.)

Các vòng lặp trong Python

Vòng lặp while: lặp đi lặp lại một lệnh hoặc một nhóm lệnh trong khi một điều kiện đã cho là TRUE. Nó kiểm tra điều kiện trước khi thực thi phần thân của vòng lặp.

Vòng lặp for: nó có khả năng lặp qua các item của bất kỳ dãy nào như một list hoặc một string.

Lồng vòng lặp: bạn có thể sử dụng một hoặc nhiều vòng lặp bên trong bất kỳ vòng lặp while, for hoặc do…while nào.

Các lệnh điều khiển vòng lặp trong Python

Các lệnh điều khiển vòng lặp thay đổi trình thực thi thông thường. Khi trình thực thi rời khỏi một phạm vi, thì tất cả các đối tượng tự động được tạo trong phạm vi đó sẽ bị hủy. Python hỗ trợ các lệnh điều khiển vòng lặp sau:

Lệnh break: kết thúc lệnh vòng lặp và truyền trình thực thi tới lệnh ngay sau vòng lặp đó.

Lệnh continue: làm cho vòng lặp nhảy qua phần còn lại của thân vòng lặp và tự động kiểm tra lại điều kiện của nó trước khi lặp lại vòng mới.

Lệnh pass: được sử dụng khi một lệnh là cần thiết theo cú pháp, nhưng bạn lại không muốn bất cứ lệnh hoặc code nào được thực thi.

 

 

Vòng lặp while trong Python

 

Vòng lặp while trong Python thực thi lặp đi lặp lại các lệnh hoặc phần thân của vòng lặp miễn là điều kiện đã cho là true. Khi điều kiện là false, thì điều khiển sẽ thoát ra khỏi vòng lặp. Dưới đây là cú pháp của vòng lặp while trong Python:

while bieu_thuc:   

    cac_lenh

Ở đây, cac_lenh có thể là một lệnh đơn hoặc một khối lệnh. Bieu_thuc có thể là bất kỳ biểu thức nào. Điều đáng chú ý về vòng lặp while là vòng lặp này có thể không chạy. Bởi vì khi điều kiện được kiểm tra là false, thì phần thân vòng lặp sẽ bị bỏ qua và lệnh đầu tiên ngay sau vòng lặp sẽ được thực thi.

Ví dụ minh họa cho vòng lặp while trong Python:

 count = 0

while (count < 9):

   print 'So thu tu cua ban la:', count

   count = count + 1


print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả:

So thu tu cua ban la: 0

So thu tu cua ban la: 1

So thu tu cua ban la: 2

So thu tu cua ban la: 3

So thu tu cua ban la: 4

So thu tu cua ban la: 5

So thu tu cua ban la: 6

So thu tu cua ban la: 7

So thu tu cua ban la: 8

Good bye!


Trong ví dụ trên, gồm lệnh print và lệnh tăng, khối code sẽ được thực thi lặp đi lặp lại tới khi count không còn nhỏ hơn 9 nữa. Với mỗi lần lặp, giá trị của count được hiển thị và sau đó được tăng thêm 1.

Vòng lặp vô hạn trong Python

Một vòng lặp vô hạn là vòng lặp mà điều kiện của nó là luôn true. Bạn phải đặc biệt chú ý khi sử dụng các vòng lặp while bởi vì tồn tại khả năng là điều kiện của nó sẽ không bao giờ false, tức là làm cho vòng lặp không bao giờ kết thúc.

Một vòng lặp vô hạn có thể là rất hữu ích trong lập trình client/server, tại đó server cần chạy liên tục để mà các chương trình client có thể giao tiếp với nó khi cần thiết.

 var = 1

while var == 1 :  # Lenh nay tao mot vong lap vo han

   num = raw_input("Hay nhap mot so  :")

   print "So da nhap la: ", num


print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả:

Hay nhap mot so  :20

So da nhap la:  20

Hay nhap mot so  :29

So da nhap la:  29

Hay nhap mot so  :3

So da nhap la:  3

Hay nhap mot so between :Traceback (most recent call last):

  File "test.py", line 5, in <module>

    num = raw_input("Hay nhap mot so :")

KeyboardInterrupt


Ví dụ trên là một vòng lặp vô hạn, và để thoát khỏi nó thì bạn cần nhấn phím CTRL+C.

 

Sử dụng lệnh else với vòng lặp while trong Python

Python cho phép bạn có một lệnh else được sử dụng kết hợp với một lệnh vòng lặp. Khi else được sử dụng với một vòng lặp while, thì lệnh else được thực thi khi điều kiện là false.

Ví dụ sau minh họa sự kết hợp của lệnh else với một lệnh while để in các số, miễn là số này nhỏ hơn 5, nếu không lệnh else được thực thi.

  count = 0

while count < 5:

   print count, " la nho hon 5"

   count = count + 1

else:

   print count, " la khong nho hon 5"

Khi code trên được thực thi sẽ cho kết quả:

0 la nho hon 5

1 la nho hon 5

2 la nho hon 5

3 la nho hon 5

4 la nho hon 5

5 la khong nho hon 5


Suite: lệnh while trên một dòng đơn

Tương tự như cú pháp của lệnh if, nếu mệnh đề while của bạn chỉ gồm một lệnh đơn, thì nó có thể được đặt trên cùng một dòng như là header của lệnh while này, ví dụ:

  flag = 1


while (flag): print 'Flag da cung cap nay la true!'


print "Good bye!"


Bạn không nên thử ví dụ này vì nó là một vòng lặp vô hạn và bạn cần nhấn CTRL+C để thoát.

 

 

Vòng lặp for trong Python

 

Vòng lặp for được sử dụng để lặp một biến qua một dãy (List hoặc String) theo thứ tự mà chúng xuất hiện. Sau đây là cú pháp của vòng lặp for:

for bien_vong_lap in day_sequense:   

    cac_lenh

Nếu một dãy day_sequense gồm một danh sách các biểu thức, nó được ước lượng đầu tiên. Sau đó, item đầu tiên trong dãy được gán cho biến vòng lặp bien_vong_lap. Tiếp theo, các khối lệnh cac_lenh được thực thi và khối lệnh này được thực thi tới khi dãy này đã được lặp xong.

Dưới đây là ví dụ minh họa vòng lặp for trong Python:

  for letter in 'Python':     # Vi du dau tien

   print 'Chu cai hien tai :', letter


qua = ['chuoi', 'tao',  'xoai']

for qua in qua:        # Vi du thu hai

   print 'Ban co thich an :', qua


print "Good bye!"

 

Khi code trên được thực thi sẽ cho kết quả:

 

Chu cai hien tai : P

Chu cai hien tai : y

Chu cai hien tai : t

Chu cai hien tai : h

Chu cai hien tai : o

Chu cai hien tai : n

Ban co thich an : chuoi

Ban co thich an : tao

Ban co thich an : xoai

Good bye!


Lặp qua index của dãy

Một cách khác để lặp qua mỗi item là bởi chỉ mục index bên trong dãy đó. Bạn theo dõi ví dụ đơn giản sau:

 qua = ['chuoi', 'tao',  'xoai']

for index in range(len(qua)):

   print 'Ban co thich an :', qua[index]


print "Good bye!"


Khi code trên được thực thi sẽ cho kết quả:

Ban co thich an : chuoi

Ban co thich an : tao

Ban co thich an : xoai

Good bye!


Ở đây, chúng ta sử dụng hàm len(), có sẵn trong Python, để cung cấp tổng số phần tử trong tuple cũng như hàm range() để cung cấp cho chúng ta dãy thực sự để lặp qua đó.

Sử dụng lệnh else với vòng lặp for trong Python

Python cho phép bạn có một lệnh else để liên hợp với một lệnh vòng lặp. Với vòng lặp for, lệnh else được thực thi khi vòng lặp đã lặp qua hết các phần tử trong list.

Ví dụ sau minh họa sự kết hợp của một lệnh else với một lệnh for để tìm kiếm các số nguyên tố từ 10 tới 20.

  for num in range(10,20):  #de lap tu 10 toi 20

   for i in range(2,num): #de lap tren cac thua so cua mot so

      if num%i == 0:      #de xac dinh thua so dau tien

         j=num/i          #de uoc luong thua so thu hai

         print '%d la bang %d * %d' % (num,i,j)

         break #de di chuyen toi so tiep theo, la vong FOR dau tien

   else:                  # else la mot phan cua vong lap

      print num, 'la so nguyen to'

Khi code trên được thực thi sẽ cho kết quả:

10 la bang 2 * 5

11 la so nguyen to

12 la bang 2 * 6

13 la so nguyen to

14 la bang 2 * 7

15 la bang 3 * 5

16 la bang 2 * 8

17 la so nguyen to

18 la bang 2 * 9

19 la so nguyen to


Lồng vòng lặp trong Python

Ngôn ngữ lập trình Python cho phép bạn sử dụng một vòng lặp bên trong một vòng lặp khác. Dưới đây là cú pháp và một số ví dụ để minh họa điều này.

Cú pháp lồng vòng lặp for trong Python

for bien_vong_lap in day_seq:   

    for bien_vong_lap in day_seq:      

        cac_lenh   cac_lenh

Cú pháp lồng vòng lặp while trong Python

while bieu_thuc:   

    while bieu_thuc:      

        cac_lenh   cac_lenh

Một ghi chú khác trong lồng vòng lặp là bạn có thể đặt bất cứ kiểu vòng lặp nào bên trong kiểu vòng lặp khác. Ví dụ như bạn có thể đặt một vòng lặp for bên trong một vòng lặp while hoặc ngược lại.

Ví dụ

Ví dụ sau sử dụng lồng vòng lặp để tìm số nguyên tố từ 2 tới 100.

  i = 2

while(i < 100):

   j = 2

   while(j <= (i/j)):

      if not(i%j): break

      j = j + 1

   if (j > i/j) : print i, " la so nguyen to"

   i = i + 1


print "Good bye!"

Khi code trên được thực thi sẽ cho kết quả:

2 la so nguyen to

3 la so nguyen to

5 la so nguyen to

7 la so nguyen to

11 la so nguyen to

13 la so nguyen to

17 la so nguyen to

19 la so nguyen to

23 la so nguyen to

29 la so nguyen to

31 la so nguyen to

37 la so nguyen to

41 la so nguyen to

43 la so nguyen to

47 la so nguyen to

53 la so nguyen to

59 la so nguyen to

61 la so nguyen to

67 la so nguyen to

71 la so nguyen to

73 la so nguyen to

79 la so nguyen to

83 la so nguyen to

89 la so nguyen to

97 la so nguyen to

Good bye!


 

Lệnh break trong Python

 

Lệnh break trong Python là giống như lệnh break trong C. Lệnh này kết thúc vòng lặp hiện tại và truyền điều khiển tới cuối vòng lặp. Lệnh break này có thể được sử dụng trong vòng lặp while và vòng lặp for. Nếu bạn đang sử dụng lồng vòng lặp, thì lệnh break kết thúc sự thực thi của vòng lặp bên trong và bắt đầu thực thi dòng code tiếp theo của khối.

Cú pháp của lệnh break là khá đơn giản:

break

Dưới đây là ví dụ minh họa lệnh break trong Python:

for letter in 'Python':     # Vi du thu nhat

   if letter == 'h':

      break

   print 'Chu cai hien tai :', letter

  

var = 10                    # Vi du thu hai

while var > 0:              

   print 'Gia tri bien hien tai la :', var

   var = var -1

   if var == 5:

      break


print "Good bye!"

 

Khi code trên được thực thi sẽ cho kết quả:

Chu cai hien tai : P

Chu cai hien tai : y

Chu cai hien tai : t

Gia tri bien hien tai la : 10

Gia tri bien hien tai la : 9

Gia tri bien hien tai la : 8

Gia tri bien hien tai la : 7

Gia tri bien hien tai la : 6

Good bye!

 

Lệnh continue trong Python

 

Lệnh continue trả về điều khiển tới phần ban đầu của vòng lặp. Lệnh này bỏ qua lần lặp hiện tại và bắt buộc lần lặp tiếp theo của vòng lặp diễn ra. Lệnh continue có thể được sử dụng trong vòng lặp while hoặc vòng lặp for. Dưới đây là cú pháp của lệnh continue:

continue

Dưới đây là ví dụ minh họa lệnh continue trong Python:

  for letter in 'Python':     # Vi du thu nhat

   if letter == 'h':

      continue

   print 'Chu cai hien tai :', letter


var = 10                    # Vi du thu hai

while var > 0:              

   var = var -1

   if var == 5:

      continue

   print 'Gia tri bien hien tai la :', var

print "Good bye!"

 

Khi code trên được thực thi sẽ cho kết quả:

Chu cai hien tai : P

Chu cai hien tai : y

Chu cai hien tai : t

Chu cai hien tai : o

Chu cai hien tai : n

Gia tri bien hien tai la : 9

Gia tri bien hien tai la : 8

Gia tri bien hien tai la : 7

Gia tri bien hien tai la : 6

Gia tri bien hien tai la : 4

Gia tri bien hien tai la : 3

Gia tri bien hien tai la : 2

Gia tri bien hien tai la : 1

Gia tri bien hien tai la : 0

Good bye!


 

Lệnh pass trong Python

 

Lệnh pass, giống như tên của nó, được sử dụng khi một lệnh là cần thiết theo cú pháp nhưng bạn không muốn bất cứ lệnh hoặc khối code nào được thực thi. Lệnh pass là một hoạt động null và không có gì xảy ra khi nó thực thi. Dưới đây là cú pháp của lệnh pass:

pass

Dưới đây là ví dụ minh họa lệnh pass trong Python:

 for letter in 'Python': 

   if letter == 'h':

      pass

      print 'Day la khoi pass'

   print 'Chu cai hien tai :', letter


print "Good bye!"


 

Khi code trên được thực thi sẽ cho kết quả:

Chu cai hien tai : P

Chu cai hien tai : y

Chu cai hien tai : t

Day la khoi pass

Chu cai hien tai : h

Chu cai hien tai : o

Chu cai hien tai : n

Good bye!