Trong các bài học trước chúng ta đã giải quyết các chương trình tuần tự và các điều kiện. Thường thì chương trình cần lặp lại một số khối nhiều lần. Đó là nơi các vòng lặp có ích. Có các toán tử vòng lặp
for character in 'hello': print[character]4 và
for character in 'hello': print[character]5 trong Python, trong bài học này chúng ta sẽ đề cập đến
for character in 'hello': print[character]4
for character in 'hello': print[character]4 vòng lặp lặp lại trên bất kỳ chuỗi nào. Chẳng hạn, bất kỳ chuỗi nào trong Python là một chuỗi các ký tự của nó, vì vậy chúng ta có thể lặp lại chúng bằng cách sử dụng
for character in 'hello': print[character]4
None
for character in 'hello': print[character]
Một trường hợp sử dụng khác cho vòng lặp for là lặp lại một số biến số nguyên theo thứ tự tăng hoặc giảm. Một dãy số nguyên như vậy có thể được tạo bằng hàm
for character in 'hello': print[character]9
None
for i in range[5, 8]: print[i, i ** 2] print['end of loop'] # 5 25 # 6 36 # 7 49 # end of loop
Hàm
for character in 'hello': print[character]9 tạo ra một chuỗi có các số
None1,
None2,. ,
None3. Số cuối cùng không được bao gồm
Có một dạng rút gọn của phạm vi [] -
None4, trong trường hợp đó, giá trị tối thiểu được đặt hoàn toàn bằng 0
None
for i in range[3]: print[i] # 0 # 1 # 2
Bằng cách này, chúng ta có thể lặp lại một số hành động nhiều lần
None
for i in range[2 ** 2]: print['Hello, world!']
Tương tự như với if-else, thụt đầu dòng là thứ xác định hướng dẫn nào được kiểm soát bởi
for character in 'hello': print[character]4 và hướng dẫn nào không
Phạm vi [] có thể xác định một chuỗi trống, như
None6 hoặc
None7. Trong trường hợp này, khối for sẽ không được thực thi
None
for i in range[-5]: print['Hello, world!']
Hãy có ví dụ phức tạp hơn và tính tổng các số nguyên từ 1 đến n
None
for character in 'hello': print[character]1
Hãy chú ý rằng giá trị lớn nhất trong phạm vi[] là
None8 để làm cho
None9 bằng n ở bước cuối cùng
Để lặp lại một chuỗi giảm dần, chúng ta có thể sử dụng dạng mở rộng của phạm vi [] với ba đối số -
for i in range[5, 8]: print[i, i ** 2] print['end of loop'] # 5 25 # 6 36 # 7 49 # end of loop0. Khi bị bỏ qua, bước này hoàn toàn bằng 1. Tuy nhiên, có thể là bất kỳ giá trị khác không. Vòng lặp luôn bao gồm start_value và loại trừ end_value trong quá trình lặp
Vòng lặp
i = 1 while i 0: n //= 10 # this is equivalent to n = n // 10 length += 1 print[length] # 45, nó sẽ ngay lập tức dừng thực thi vòng lặp và thoát khỏi vòng lặp đó. Trong trường hợp này, nhánh
n = int[input[]] length = 0 while n > 0: n //= 10 # this is equivalent to n = n // 10 length += 1 print[length] # 43 không được thực thi. Vì vậy,
n = int[input[]] length = 0 while n > 0: n //= 10 # this is equivalent to n = n // 10 length += 1 print[length] # 45 được sử dụng để hủy bỏ việc thực hiện vòng lặp ở giữa bất kỳ lần lặp nào
Đây là một ví dụ giống như Black Jack. một chương trình đọc các số và tính tổng cho đến khi tổng lớn hơn hoặc bằng 21. Dãy nhập kết thúc bằng 0 để chương trình có thể dừng ngay cả khi tổng của tất cả các số nhỏ hơn 21
Hãy xem nó hoạt động như thế nào trên các đầu vào khác nhau
Phiên bản 1. Vòng lặp được thoát bình thường sau khi kiểm tra điều kiện, vì vậy nhánh "else" được thực hiện
2 4 7 0
total_sum = 0 a = int[input[]] while a != 0: total_sum += a if total_sum >= 21: print['Total sum is', total_sum] break a = int[input[]] else: print['Total sum is less than 21 and is equal to', total_sum, '.']
Phiên bản 2. Vòng lặp bị hủy bỏ bởi
n = int[input[]] length = 0 while n > 0: n //= 10 # this is equivalent to n = n // 10 length += 1 print[length] # 45, vì vậy nhánh "else" bị bỏ qua
9 9 5 4 0
total_sum = 0 a = int[input[]] while a != 0: total_sum += a if total_sum >= 21: print['Total sum is', total_sum] break a = int[input[]] else: print['Total sum is less than 21 and is equal to', total_sum, '.']
Nhánh "Else" cũng có thể được sử dụng với vòng lặp "for". Hãy xem ví dụ khi chương trình đọc 5 số nguyên nhưng dừng ngay khi gặp số nguyên âm đầu tiên
Phiên bản 1. Vòng lặp được thoát bình thường, vì vậy nhánh "else" được thực thi
1 4 9 16 25 36 49 64 81 1001____36_______2
Phiên bản 2. Vòng lặp bị hủy bỏ, vì vậy nhánh "else" không được thực thi
1 4 9 16 25 36 49 64 81 1003_______36_______2
Quảng cáo của Google, có thể dựa trên sở thích của bạn
Một hướng dẫn khác được sử dụng để kiểm soát việc thực hiện vòng lặp là
None0. Nếu trình thông dịch Python đáp ứng
None0 ở đâu đó giữa vòng lặp, nó sẽ bỏ qua tất cả các hướng dẫn còn lại và chuyển sang bước lặp tiếp theo
None
1 4 9 16 25 36 49 64 81 1006
Nếu
n = int[input[]] length = 0 while n > 0: n //= 10 # this is equivalent to n = n // 10 length += 1 print[length] # 45 và
None0 được đặt bên trong một số vòng lặp lồng nhau, thì chúng chỉ ảnh hưởng đến việc thực hiện vòng lặp trong cùng. Hãy xem ví dụ khá ngớ ngẩn để chứng minh điều đó
None
1 4 9 16 25 36 49 64 81 1008
Các hướng dẫn
n = int[input[]] length = 0 while n > 0: n //= 10 # this is equivalent to n = n // 10 length += 1 print[length] # 45 và
None0 không được khuyến khích, nếu bạn có thể thực hiện ý tưởng của mình mà không cần sử dụng chúng. Đây là một ví dụ điển hình về việc sử dụng sai
n = int[input[]] length = 0 while n > 0: n //= 10 # this is equivalent to n = n // 10 length += 1 print[length] # 45. mã này đếm số chữ số trong một số nguyên
1 4 9 16 25 36 49 64 81 1009
i = 1 while i