Python while loops (tiếp tục)
Nó là quan trọng rằng bạn nhớ tăng num. Một for loop tự động bước lên biến loop của chúng
ta qua các giá trị phù hợp. Nhưng một lần nữa, chúng ta không miễn việc trong một while loop
và phải cập nhật các biến bản thân chúng ta để đem lại cho chúng ta ngày càng gần hơn tới chấm
dứt vòng lặp. Nếu chúng ta quên tăng num, cái này xảy ra:
>>> num = 0
>>> while num < 5:
… print(num)
…
0
0
0
0
0
0
0
0
… forever
Nếu bạn chạy code này trên máy tính của bạn, màn hình của bạn sẽ đầy số 0,và bạn sẽ phải chấm dứt chương
trình của bạn. Bạn có thể làm cái đó bằng cách nhấn CTR – C hay bằng cách đóng cửa sổ Python.
Vấn đề là rằng num < 5 ở tại True mãi mãi, không gì trong vòng lặp làm nó False. Tình huống này,nơi loop
không bao giờ chấm dứt được gọi là vòng lặp vô hạn. Nó là dễ dàng đáng ngạc nhiên để sinh ra vòng lặp while
vô hạn. Nếu bạn thấy cùng các giá trị lặp lại hay chương trình của bạn có vẻ như không làm gì, nó có khả năng
rằng bạn bị tắc trong một vòng lặp vô hạn. Cẩn thận kiểm tra biểu thức Boolean của while loop và rằng khối loop
đang tiến tới chấm dứt.
Chúng ta có thể làm bất cứ cái gì chúng ta thích với biến num.Sau đây là một while loop cộng num với 3:
>>> num = 0
>>> while num < 10:
… print(num)
… num = num + 3
…
0
3
6
9
Và sau đây là một while loop đếm từ 4 xuống đến 0:
>>> num = 4
¶ >>> while num >= 0:
… print(num)
… num = num – 1
…
4
3
2
1
0
Nhận thấy rằng tôi đã sử dụng >= ở đây hơn là >. Theo cách này, while loop chạy khi num tham chiếu đến 0, như
mong muốn.
Concept check
Đầu ra code sau là gì?
n = 3
while n > 0:
if n == 5:
n = -100
print(n)
n = n + 1
A.
3
4
B.
3
4
5
C.
3
4
-100
D.
3
4
5
-100
Trả lời: C. Biểu thức Boolean của vòng lặp while chỉ được kiểm tra khi bắt đầu
mỗi lần lặp. Ngay cả khi nó trở thành False tại một thời điểm nào đó trong quá trình lặp,
phần còn lại của vòng lặp hoàn thành.
Khi 3 lớn hơn 0, vòng lặp sẽ được lặp lại. Khối câu lệnh if là
bị bỏ qua (vì biểu thức Boolean của nó là False), do đó phép lặp này xuất ra 3 và
đặt n thành 4. Vì 4 lớn hơn 0 nên chúng ta có một lần lặp khác của vòng lặp, lần này
xuất 4 và đặt n thành 5. Vì 5 lớn hơn 0 nên chúng ta có thêm một
sự lặp lại của vòng lặp. Lần này, khối câu lệnh if chạy, đặt n thành -100.
Tiếp theo, -100 là đầu ra và n được đặt thành -99. Và ở đây chúng ta dừng lại, vì n > 0 là
False.
Concept check
Đầu ra của code sau là gì?
x = 6
while x > 4:
x = x – 1
print(x)
A.
6
5
B.
6
5
4
C.
5
4
D.
5
4
3
E.
6
5
4
3
Trả lời: C. Nhiều vòng lặp while làm một việc gì đó rồi cập nhật biến vòng lặp,
nhưng không phải cái này. Cái này trước tiên giảm biến vòng lặp x và sau đó xuất ra
nó. Vì 6 lớn hơn 4 nên vòng lặp sẽ chạy, gán 5 cho x và
sau đó xuất ra 5. Tiếp theo, 5 lớn hơn 4, vì vậy chúng ta có một lần lặp khác, lần lặp này
gán 4 cho x và xuất ra 4. Vậy là: 4 không lớn hơn 4 nên vòng lặp kết thúc.