Bây giờ chúng ta đã đề cập đến các cấu trúc có điều kiện một cách chi tiết. Một kỹ thuật trung tâm khác trong lập trình là lặp lại hoặc lặp đi lặp lại. Những điều này cùng nhau tạo thành các cấu trúc điều khiển cơ bản mà bất kỳ lập trình viên nào cũng phải thành thạo. Chúng được gọi là cấu trúc điều khiển vì về cơ bản chúng cho phép bạn kiểm soát dòng mã nào được thực thi khi. Trong khi cấu trúc điều kiện cho phép bạn chọn giữa các phần mã, thì cấu trúc lặp lại cho phép bạn lặp lại các phần mã. Chúng thường được gọi là vòng lặp vì chúng cho phép chương trình "lặp lại" một số dòng đã được thực thi trước đó. Quá trình thực hiện một lần lặp của một vòng lặp còn được gọi là một lần lặp của vòng lặp
Phần này giới thiệu một vòng lặp
number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
3 đơn giản. Cấu trúc của nó tương tự như các câu lệnh điều kiện mà chúng ta đã đề cập. Trong phần tiếp theo, chúng ta sẽ đi sâu vào một số ví dụ phức tạp hơnHãy xem xét một chương trình yêu cầu người dùng nhập một số và sau đó in ra số bình phương. Điều này tiếp tục cho đến khi người dùng nhập -1
while True:
number = int[input["Please type in a number, -1 to quit: "]]
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
Chạy chương trình có thể trông như thế này
đầu ra mẫu
Vui lòng nhập một số, -1 để thoát. 2 4 Vui lòng nhập số, -1 để thoát. 4 16 Vui lòng nhập số, -1 để thoát. 10 100 Vui lòng nhập số, -1 để thoát. -1 Cảm ơn và tạm biệt
Như bạn có thể thấy ở trên, chương trình yêu cầu một vài số, nhờ vào câu lệnh
number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
3 trong chương trình. Khi người dùng nhập -1, lệnh number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
2 được thực thi, lệnh này thoát khỏi vòng lặp và việc thực thi tiếp tục từ dòng đầu tiên sau khối number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
3Với các vòng lặp, điều quan trọng là luôn có cách để thoát khỏi vòng lặp tại một số điểm trong mã, nếu không thì sự lặp lại có thể tiếp diễn mãi mãi. Để minh họa điều này, hãy thay đổi ví dụ trên một chút
number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
Trong phiên bản này, chương trình yêu cầu người dùng nhập một số ngoài vòng lặp. Nếu người dùng nhập bất kỳ số nào khác ngoài -1, vòng lặp sẽ không bao giờ thoát khỏi. Điều này tạo thành một vòng lặp vô hạn, có nghĩa là khối mã trong vòng lặp được lặp lại vô tận
đầu ra mẫu
Vui lòng nhập một số, -1 để thoát. 2 4 4 4 4 4 4 4 4 [tiếp tục đến vô tận. ]
Chương trình sau đây có cấu trúc tương tự như ví dụ ở trên về vòng lặp vô hạn, nhưng trải nghiệm người dùng thì hoàn toàn khác. Chương trình này chỉ cho phép người dùng tiếp tục nếu họ nhập đúng mã PIN 1234
while True:
code = input["Please type in your PIN: "]
if code == "1234":
break
print["Incorrect...try again"]
print["Correct PIN entered!"]
đầu ra mẫu
Vui lòng nhập mã PIN của bạn. 0000 Sai. thử lại Vui lòng nhập mã PIN của bạn. 9999 Không chính xác. thử lại Vui lòng nhập mã PIN của bạn. 1234 Đã nhập đúng mã PIN
Vòng lặp và biến trợ giúp
Hãy làm cho ví dụ kiểm tra mã PIN thực tế hơn một chút. Phiên bản này chỉ cung cấp cho người dùng ba lần nhập mã PIN
Chương trình sử dụng hai biến trợ giúp. Biến
number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
7 theo dõi số lần người dùng đã nhập mã PIN. Biến number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
8 được đặt thành number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
9 hoặc while True:
code = input["Please type in your PIN: "]
if code == "1234":
break
print["Incorrect...try again"]
print["Correct PIN entered!"]
0 dựa trên việc người dùng có đăng nhập thành công hay khôngwhile True:
number = int[input["Please type in a number, -1 to quit: "]]
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
1đầu ra mẫu
Vui lòng nhập mã PIN của bạn. 0000 Sai. thử lại Vui lòng nhập mã PIN của bạn. 1234 Đã nhập đúng mã PIN
đầu ra mẫu
Vui lòng nhập mã PIN của bạn. 0000 Sai. thử lại Vui lòng nhập mã PIN của bạn. 9999 Không chính xác. thử lại Vui lòng nhập mã PIN của bạn. 4321 Quá nhiều lần thử
Vòng lặp được thoát khi người dùng nhập đúng mã PIN hoặc nếu có quá nhiều lần thử. Câu lệnh
while True:
code = input["Please type in your PIN: "]
if code == "1234":
break
print["Incorrect...try again"]
print["Correct PIN entered!"]
1 sau vòng lặp kiểm tra giá trị của biến number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
8 và in ra thông báo tương ứngGỡ lỗi báo cáo in trong vòng lặp
Việc thêm các vòng lặp vào chương trình cũng làm tăng thêm các nguồn lỗi tiềm ẩn. Việc thành thạo việc sử dụng các câu lệnh in gỡ lỗi như đã giới thiệu trong phần đầu tiên của phần này càng trở nên quan trọng hơn.
Chúng ta hãy xem một chương trình gần giống với ví dụ trước, nhưng có một điểm khác biệt quan trọng
while True:
number = int[input["Please type in a number, -1 to quit: "]]
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
4Phiên bản này hoạt động lạ khi người dùng nhập đúng mã vào lần thử thứ ba
đầu ra mẫu
Vui lòng nhập mã PIN của bạn. 0000 Sai. thử lại Vui lòng nhập mã PIN của bạn. 9999 Không chính xác. thử lại Vui lòng nhập mã PIN của bạn. 1234 Quá nhiều lần thử
Vì vậy, hãy thử và tìm ra nguyên nhân bằng cách thêm một số câu lệnh in gỡ lỗi chiến lược bên trong vòng lặp
while True:
number = int[input["Please type in a number, -1 to quit: "]]
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
5đầu ra mẫu
bắt đầu khối while. Vui lòng nhập mã PIN của bạn. 2233 lần thử. 1 điều kiện1. mã sai. 2233 điều kiện2. Sai Không chính xác. thử lại bắt đầu khối while. Vui lòng nhập mã PIN của bạn. 4545 lần thử. 2 điều kiện1. mã sai. 4545 điều kiện2. Sai Không chính xác. thử lại bắt đầu khối while. Vui lòng nhập mã PIN của bạn. 1234 lần thử. 3 điều kiện1. Đúng Quá nhiều lần thử
Từ các bản in ở trên, chúng ta có thể thấy rằng trong lần lặp thứ ba của vòng lặp, điều kiện của câu lệnh
while True:
code = input["Please type in your PIN: "]
if code == "1234":
break
print["Incorrect...try again"]
print["Correct PIN entered!"]
1 đầu tiên là number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
9 và vòng lặp được thoát. Lần lặp này không bao giờ đến câu lệnh while True:
code = input["Please type in your PIN: "]
if code == "1234":
break
print["Incorrect...try again"]
print["Correct PIN entered!"]
1 thứ hai, câu lệnh này kiểm tra xem mã đã được nhập chính xác chưawhile True:
number = int[input["Please type in a number, -1 to quit: "]]
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
9Thứ tự của các câu lệnh có điều kiện hoặc của các nhánh khác nhau trong một câu lệnh có điều kiện là nguyên nhân phổ biến gây ra lỗi, đặc biệt là trong các vòng lặp. Gỡ lỗi các câu lệnh in thường là cách đơn giản nhất để tìm ra nguyên nhân của chúng
Nối chuỗi với toán tử +
Ví dụ trên với việc kiểm tra mã PIN đã sử dụng biến trợ giúp
number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
7 để theo dõi số lần người dùng đã cố gắng nhập mãnumber = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
1Biến được đặt thành 0 bên ngoài vòng lặp và mỗi lần lặp lại tăng giá trị của nó lên một
Một ý tưởng tăng dần tương tự cũng hoạt động với các biến chuỗi. Chẳng hạn, chương trình có thể theo dõi tất cả các mã PIN mà người dùng đã nhập vào
number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
2Biến trợ giúp được khởi tạo thành một chuỗi rỗng, nghĩa là một chuỗi không có ký tự nào trong đó
number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
3Với mỗi lần lặp lại, chuỗi sẽ dài hơn, vì mã mà người dùng đã nhập được thêm vào, cùng với dấu phẩy
number = int[input["Please type in a number, -1 to quit: "]]
while True:
if number == -1:
break
print[number ** 2]
print["Thanks and bye!"]
0Nếu người dùng nhập mã 1111 2222 1234, khi kết thúc thực thi chương trình, giá trị của
while True:
code = input["Please type in your PIN: "]
if code == "1234":
break
print["Incorrect...try again"]
print["Correct PIN entered!"]
7 sẽ là