Sự khác nhau giữa vòng lặp for và while trong Python

* Giống:

Đều là vòng lặp dùng để lặp lại một đoạn lệnh nào đó.
* Khác:

For do:

– Là câu lệnh lặp có số lần biết trước.

– Lặp theo số lần hữu hạn.

– Từ khóa: for, to, do.

– Cú pháp: for := to do ;

– Trong vòng lặp không làm đổi giá trị của biến đếm.

While do:

– Câu lệnh lặp có số lần chưa biết.

– Kiểm tra điều kiện trước khi thực hiện lệnh,vài trường hợp sẽ lặp vô hạn (khi điều kiện lặp không bao giờ sai).

– Từ khóa: while, do.

– Cú pháp: while <điều kiện> do ;

– Là câu lệnh đơn hay câu lệnh ghép.

Iteration có nghĩa là lặp đi lặp lại một khối lệnh, có thể là nhiều lần, cấu trúc thực hiện trình lặp này được gọi là loop. Trong lập trình, có hai loại lặp bao gồm lặp vô hạn -  số lần vòng lặp được thực hiện không được chỉ định trước một cách rõ ràng. Thay vào đó, khối được chỉ định được thực thi lặp đi lặp lại miễn là một số điều kiện được đáp ứng. Loại thứ hai là phép lặp xác định, số lần khối được chỉ định sẽ được thực thi được chỉ định rõ ràng tại thời điểm bắt đầu vòng lặp.

Sự khác nhau giữa vòng lặp for và while trong Python

Vòng lặp While trong Python

Cú pháp vòng lặp

Vòng lặp while có cú pháp như sau:

while <expr>:

    <statement(s)>

đại diện cho khối lệnh được thực thi nhiều lần, thường được gọi là phần thân của vòng lặp. Điều này được biểu thị bằng thụt lề, giống như trong một câu lệnh if. 

Vòng lặp while sẽ kiểm tra điều kiện (expr) đầu tiên, nếu điều kiện này đúng các khối lệnh bên trong mới được thực thi. Sau đó điều kiện này sẽ liên tục được kiểm tra lại cho đến khi kết quả nhận về là false. Lúc này, chương trình sẽ chuyển qua thực thi các lệnh khác bên ngoài thân vòng lặp.

Cùng xem ví dụ dưới đây:

>>> n = 5

 2>>> while n > 0:

 3...    n -= 1

 4...    print(n)

 5...

 64

 73

 82

 91

100

Trong ví dụ này ta có:

- n là ban đầu 5. Biểu thức  dòng 2 n > 0 là true, vì vậy phần thân của vòng lặp sẽ thực thi. Bên trong thân vòng lặp trên dòng 3, n được giảm 1 dần đến 4, và sau đó được print.

- Khi phần nội dung của vòng lặp kết thúc, việc thực thi chương trình quay trở lại đầu vòng lặp ở dòng 2 và biểu thức được đánh giá lại. Nếu nó vẫn đúng, chương trình sẽ tiếp tục chạy , và dòng 3 được in ra.

- Vòng lặp sẽ tiếp tục cho đến khi n trở thành 0. Tại thời điểm đó, khi biểu thức được kiểm tra, điều kiện n>0 sẽ sai và vòng lặp kết thúc. Việc thực thi sẽ tiếp tục ở câu lệnh đầu tiên sau thân vòng lặp.

Lưu ý rằng biểu thức điều khiển của while vòng lặp được kiểm tra trước, trước khi bất kỳ điều gì khác xảy ra. Nếu biểu thức này sai, phần thân của vòng lặp sẽ không bao giờ được thực thi. 

>>> Xem thêm: Khóa học lập trình Python

Vòng lặp while 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ó luôn luôn là true, khi đó vòng lặp sẽ không bao giờ kết thúc và bạn cần sử dụng phím CTRL +C để thoát khỏi vòng lặp.

Ví dụ:

...    print('foo')

...

foo

foo

foo

  .

  .

  .

foo

foo

foo

KeyboardInterrupt

Traceback (most recent call last):

  File "", line 2, in

    print('foo')

Việc sử dụng vòng lặp này sẽ rất có ích khi bạn cần phải chạy chương trình liên tục để tương tác với khách hàng. Tuy nhiên, hãy nhớ rằng các vòng lặp có thể được chia nhỏ với câu lệnh  break. Khi kết thúc một vòng lặp dựa trên điều kiện được công nhận trong thân vòng lặp, thay vì dựa trên một điều kiện được đưa ra trên cùng.

>>>Xem thêm: Biến và các kiểu dữ liệu trong Python

Sử dụng else trong vòng lặp Python

Python cho phép sử dụng lệnh else cùng với một lệnh vòng lặp. Đây là một tính năng độc đáo của Python mà hầu hết các ngôn ngữ lập trình khác không các, cú pháp như sau:

hile <expr>:

    <statement(s)>

else:

    <additional_statement(s)>

Lệnh được chỉ định trong mệnh đề else sẽ được thực thi khi vòng lặp while kết thúc (điều kiện là else). Bạn cũng có thể thực hiện điều tương tự bằng cách đặt câu lệnh đó ngay sau vòng lặp mà không cần else như sau:

while <expr>:

    <statement(s)>

<additional_statement(s)>

Không có mệnh đề else, sẽ được thực thi sau khi vòng lặp while kết thúc bất kể điều gì. Nếu vòng lặp được thoát bởi một lệnh break, mệnh đề else sẽ không được thực thi.

Ví dụ vòng lặp else không có break:

>>> n = 5

>>> while n > 0:

...    n -= 1

...    print(n)

... else:

...    print('Loop done.')

...

4

3

2

1

0

Loop done.

Trong trường hợp này, vòng lặp sẽ lặp đi lặp lại cho đến khi  n trở thành 0, vì vậy điều kiện n>0 sai, do đó, mệnh đề else được thực thi. Bây giờ cùng quan sát sự khác biệt dưới đây, khi vòng lặp có sử dụng lệnh break:

>>> while n > 0:

...    n -= 1

...    print(n)

...    if n == 2:

...        break

... else:

...    print('Loop done.')

...

4

3

2

Vòng lặp này được kết thúc với break do vậy mệnh đề else không được thực thi.

Vòng lặp while lồng nhau

Các cấu trúc điều khiển Python có thể được lồng vào nhau. Ví dụ các câu lệnh điều kiện như  if/elif/ có thể được lồng vào nhau như sau:

   if gender == 'M':

        print('son')

    else:

        print('daughter')

elif age >= 18 and age < 65:

    if gender == 'M':

        print('father')

    else:

        print('mother')

else:

    if gender == 'M':

        print('grandfather')

    else:

        print('grandmother')

Tương tự, một vòng lặp while có thể được chứa trong một vòng lặp while khác, như được hiển thị dưới đây:

>>> a = ['foo', 'bar']

>>> while len(a):

...    print(a.pop(0))

...    b = ['baz', 'qux']

...    while len(b):

...        print('>', b.pop(0))

...

foo

> baz

> qux

bar

> baz

> qux

Kết luận: Bài viết trên đã cung cấp các thông tin về vòng lặp vô hạn thông qua cách sử dụng vòng lặp while của Python. Giờ đây bạn đã có thể xây dựng các vòng lặp while cơ bản và phức tạp, thực thi vòng lặp ngắt với break, sử dụng lệnh else có vòng lặp while và cách sử dụng vòng lặp vô hạn trong Python.