(Trăn) Vòng lặp. Vòng lặp với bộ đếm - cho


Vòng lặp

Hãy tưởng tượng một tình huống mà chúng ta cần hiển thị từ "Xin chào" 10 lần. Chúng ta nên làm gì?
Bạn có thể lấy và viết lệnh 10 lần print("Xin chào") in("Xin chào") in("Xin chào") in("Xin chào") in("Xin chào") in("Xin chào") in("Xin chào") in("Xin chào") in("Xin chào") in("Xin chào") in("Xin chào")
Nhưng nếu bạn không cần 10 lần mà là 20, 30, 40 lần thì sao? Và nếu 200 lần? Trong trường hợp này, việc sao chép sẽ mất rất nhiều thời gian. Và nếu cần, bản thân người dùng có thể chọn số lần anh ta cần hiển thị một số thông tin trên màn hình? 

Một cấu trúc đặc biệt sẽ giúp chúng tôi đối phó với nhiệm vụ này, được gọi là vòng lặp.
 
Một vòng lặp - là một cấu trúc thuật toán trong đó một chuỗi lệnh nhất định được lặp lại nhiều lần.< /div>
Trong hầu hết các ngôn ngữ lập trình, có hai loại vòng lặp: vòng lặp có biến (for) và vòng lặp có điều kiện (while)
Hãy bắt đầu làm quen với các chu kỳ từ loại đầu tiên.
 

Vòng lặp với một biến hoặc với một số bước đã biết (vòng lặp for)

Điều thường xảy ra là chúng ta biết số lần lặp lại của bất kỳ hành động nào hoặc chúng ta có thể tính toán số lần lặp lại bằng cách sử dụng dữ liệu mà chúng ta biết. Một số ngôn ngữ lập trình có lệnh được viết bằng tiếng Nga bằng lệnh
LẶP LẠI (số_lần_lặp lại).

Trong trường hợp này, chúng tôi có thể chỉ định số lần lặp lại cụ thể. 
Thật thú vị khi xem chu trình này hoạt động như thế nào ở cấp độ máy:
1. một ô nhớ nhất định được cấp phát trong bộ nhớ và số lần lặp lại được ghi vào ô đó,
2. khi chương trình thực hiện thân vòng lặp một lần, nội dung của ô này (bộ đếm) sẽ giảm đi một.
3. Quá trình thực hiện vòng lặp kết thúc khi ô này bằng 0.

Không có cấu trúc như vậy trong Python, nhưng có một for.
 
Cần ghi nhớ!
Dạng tổng quát của toán tử vòng lặp for như sau: cho <biến đếm> trong <giá trị của biến đếm>:     # nội dung vòng lặp
1. Tên của biến đếm có thể là bất cứ thứ gì (họ thường sử dụng chữ cái i)
2. Phần thân vòng lặp được viết với sự dịch chuyển sang phải, so với dòng có tiêu đề vòng lặp (đối với). Tiêu chuẩn PEP8 dịch chuyển theo 4 dấu cách.
 
Hãy xem các ví dụ về cách bạn có thể viết đầu ra của từ "Xin chào" 10 lần.
 
Ví dụ 1
cho tôi trong phạm vi (10): # cho biến i có thể thay đổi trong phạm vi (trong phạm vi)   # 0 đến 10 (10 không bao gồm) print("Xin chào") # in Xin chào Biến   là bộ đếm các lần lặp (bước) đã hoàn thành của vòng lặp. Trong trường hợp này, vòng lặp chạy với i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Chính xác là 10 lần.
Cùng một chương trình có thể được viết khác nhau.
 
Ví dụ 2
cho tôi trong [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]: in("Xin chào") Trong ví dụ 2, chúng ta liệt kê tất cả các giá trị của biến i mà chúng ta cần lặp. Với số lượng giá trị lớn, việc sử dụng hàm tích hợp sẵn range() sẽ thuận tiện hơn.
Chuỗi giá trị được tạo bởi hàm range() là hữu hạn. Vòng lặp sẽ luôn kết thúc. 

Các tính năng của vòng lặp for

Làm cách nào để thay đổi bước trong chuỗi giá trị và không bắt đầu lại từ đầu? Theo mặc định, hàm  range() tạo một chuỗi trong đó mỗi số tiếp theo lớn hơn 1 so với số trước đó. Bạn có thể sử dụng hàm range trong một mục khác.

Dạng tổng quát của mục nhập hàm như sau: phạm vi([bắt đầu], dừng[, bước])
  • start: số bắt đầu của dãy.
  • stop: tạo số tối đa nhưng không bao gồm số đã cho.
  • bước: sự khác biệt giữa mỗi số trong chuỗi (bước)

Bạn phải nhớ!
  • Tất cả các tham số phải là số nguyên:
  • Mỗi tham số có thể là dương hoặc âm.
  • range() (và Python nói chung) dựa trên chỉ mục 0. Điều này có nghĩa là danh sách chỉ mục bắt đầu từ 0, không phải 1.  Số nguyên cuối cùng được tạo bởi hàm  range() phụ thuộc vào stop nhưng sẽ không bao gồm nó. Ví dụ: range(0, 5) tạo các số nguyên 0, 1, 2, 3, 4, không bao gồm 5.


Ví dụ 1
cho tôi trong phạm vi (10, 0, -1): in(i*i) Chương trình hiển thị bình phương các số tự nhiên từ 10 đến 1 theo thứ tự giảm dần
  • 10: Số đầu tiên trong dãy.
  • 0: số cuối của dãy (không bao gồm số này).
  • -1: bước


Ví dụ 2
cho tôi trong phạm vi (0, 101, 5): in(i) Chương trình hiển thị tất cả các số từ 0 đến 100 với gia số 5
  • 0: Số đầu tiên trong dãy.
  • 101: số cuối của dãy (không bao gồm số này).
  • 5: bước

Lặp lại N lần

Tất cả các chương trình có vòng lặp for mà chúng tôi đã viết cho đến nay không thể được gọi là phổ quát. Bởi vì chính chúng ta đã đặt số lần lặp lại của thân vòng lặp. 
Nhưng nếu số lần lặp lại phụ thuộc vào một số giá trị khác thì sao? Ví dụ: bản thân người dùng muốn đặt số lần lặp lại chu kỳ.
Phải làm gì trong trường hợp này?
Mọi thứ đều rất đơn giản. Thay vì các giá trị bắt đầu và kết thúc bằng số, chúng ta có thể sử dụng bất kỳ biến nào mà người dùng có thể tính toán hoặc đặt.

Ví dụ: chúng ta cần hiển thị bình phương của các số từ 1 đến N, trong đó giá trị của biến N được nhập từ bàn phím bởi người dùng.
Chương trình sẽ trông như thế này: N = int(input()) # nhập N từ bàn phím for i in range(1, N+1): # vòng lặp: for all i from 1 to N  - biến i # sẽ tuần tự lấy các giá trị từ 1 đến N   print("square", i, "=", i*i)  # in bình phương của một số Khi vào vòng lặp, câu lệnh gán i = 1 được thực thi, sau đó biến i được tăng thêm một đơn vị theo từng bước (i += 1). Vòng lặp được thực thi khi điều kiện i <= N đúng. Trong phần thân của vòng lặp, câu lệnh xuất duy nhất sẽ in chính số đó và bình phương của nó ra màn hình theo định dạng đã chỉ định.
Để tính bình phương hoặc các số mũ thấp khác, tốt hơn là sử dụng phép nhân.

Chạy chương trình và xem kết quả công việc của nó với các giá trị khác nhau của biến N.