vòng lặp while trong Python. Cách thức hoạt động, ví dụ sử dụng

Vòng lặp là một trong những công cụ chính của bất kỳ ngôn ngữ nào. Có hai vòng lặp cơ bản trong Python, một trong số đó là while. Hãy xem xét nó, và cũng để hiểu rõ hơn về bức tranh, một cái nữa. Quả thực, so với những thứ tương tự, thì tài liệu nào dễ hiểu hơn nhiều, phải không?

Khái niệm về một chu kỳ

Một vòng lặp là cần thiết khi một hành động nào đó cần được thực hiện nhiều lần. Điều này rất đơn giản, bởi vì trong thực tế, phạm vi ứng dụng cho các chu trình rộng hơn nhiều. Có hai loại vòng lặp chính trong Python: for và while. Phổ biến nhất là cho.

Ngoài các hành động cụ thể, bạn có thể lặp lại các đoạn mã khác nhau cho đến một điểm nhất định. Điều này có thể là một số lần nhất định, hoặc miễn là một điều kiện cụ thể là đúng.

Trước khi bắt đầu hiểu các loại vòng lặp và đặc biệt là while, chúng ta vẫn cần hiểu lặp là gì. Đây là một lần lặp lại một hành động hoặc chuỗi hành động trong chu kỳ hiện tại trong quá trình chạy ứng dụng hiện tại.

Chu kỳ cho

Vòng lặp For của chúng tôi không phải là một bộ đếm, như trong nhiều ngôn ngữ khác. Nhiệm vụ của nó là liệt kê một chuỗi giá trị nhất định. Điều đó có nghĩa là gì? Giả sử chúng ta có một danh sách các phần tử. Đầu tiên, vòng lặp có vòng lặp thứ nhất, thứ hai, thứ ba, v.v.

Ưu điểm của vòng lặp này trong Python là bạn không cần xác định chỉ số của phần tử để biết khi nào thoát khỏi vòng lặp. Mọi thứ sẽ được thực hiện tự động.

>>> spisok = [10, 40, 20, 30]

>>> cho phần tử trong spisok:

… In (phần tử + 2)

...

12

42

22

32

Trong ví dụ của chúng tôi, chúng tôi đã sử dụng biến thành phần sau lệnh for. Nói chung, tên có thể là bất cứ điều gì. Ví dụ, một ký hiệu phổ biến là i. Và với mỗi lần lặp, biến này sẽ được gán một đối tượng cụ thể từ danh sách, mà chúng tôi gọi là từ thích hợp.

Trong trường hợp của chúng ta, danh sách là một dãy số 10,40,20,30. Tại mỗi lần lặp, giá trị tương ứng sẽ xuất hiện trong biến. Ví dụ: ngay sau khi vòng lặp bắt đầu, biến thành phần giá trị 10 được gán. Trong lần lặp tiếp theo, số mười chuyển thành số 40, lần thứ ba chuyển thành số 20 và cuối cùng, ở lần lặp cuối cùng của vòng lặp, nó biến thành 30.

Tín hiệu kết thúc chu kỳ là sự kết thúc của các phần tử trong danh sách.

Nếu bạn cần vòng lặp để thực hiện liệt kê giá trị cổ điển, như trong các ngôn ngữ lập trình khác, bạn nên tạo một danh sách với một chuỗi các số tự nhiên lên đến giá trị mà chúng ta cần.

>>> spisok = [1,2,3,4,5]

Hoặc sử dụng chức năng len (), để xác định độ dài của danh sách. Nhưng trong trường hợp này tốt hơn là sử dụng một vòng lặp trong khi, bởi vì không cần sử dụng một biến.

Nếu bạn cần thay đổi chuỗi giá trị trong danh sách, hãy lặp lại cho và đến đây để giải cứu. Để thực hiện điều này, tại mỗi lần lặp, mỗi phần tử của danh sách phải được gán một giá trị thích hợp.

Trong khi lặp lại

Không giống như chu kỳ cho, chỉ lặp lại các giá trị của chuỗi, vòng lặp trong khi có nhiều công dụng hơn. Tên của loại chu kỳ này được dịch là "chưa". Đó là, "cho đến khi".

Đây là một vòng lặp phổ biến được tìm thấy trong tất cả các ngôn ngữ lập trình. Và theo một số cách, nó giống với một toán tử điều kiện thủy tùng, thực hiện kiểm tra để xem liệu một điều kiện nhất định có được đáp ứng hay không. Chỉ trái ngược với toán tử điều kiện, trong khi thực hiện kiểm tra ở mỗi lần lặp, không chỉ một lần. Và chỉ khi điều kiện sai, vòng lặp kết thúc và lệnh theo sau nó được thực thi. Nói một cách dễ hiểu, nếu hoàn cảnh mà anh ta làm việc không còn giá trị.

Nếu chúng ta vẽ một chu kỳ trong khi một cách đơn giản, điều này được thực hiện bằng cách sử dụng một sơ đồ như vậy.vòng lặp while trong Python. Cách thức hoạt động, ví dụ sử dụng

Nhánh chính của chương trình (chạy bên ngoài vòng lặp) được mô tả trong hình này với các hình chữ nhật màu xanh lam. Màu ngọc lam tượng trưng cho cơ thể của chu kỳ. Ngược lại, một hình thoi là một điều kiện được kiểm tra ở mỗi lần lặp.

chu kỳ trong khi có thể dẫn đến hai trường hợp ngoại lệ:

  1. Nếu ở đầu vòng lặp, biểu thức logic không trả về true, thì nó chỉ đơn giản là không bắt đầu, đã hoàn thành trước khi thực thi. Nói chung, tình huống này là bình thường, bởi vì trong một số trường hợp nhất định, ứng dụng có thể không cung cấp sự hiện diện của các biểu thức trong thân vòng lặp.
  2. Nếu biểu thức luôn đúng, điều này có thể dẫn đến một vòng lặp. Đó là, để cuộn vô tận của chu kỳ. Do đó, trong các chương trình như vậy, luôn phải có một câu lệnh thoát khỏi vòng lặp hoặc chương trình. Tuy nhiên, tình huống này sẽ phát sinh nếu chương trình có thể xác định sự thật hay giả của một điều kiện cụ thể. Nếu cô ấy không làm được điều này, thì lỗi sẽ được trả về khi chương trình chấm dứt. Hoặc bạn có thể xử lý lỗi và sau đó, nếu nó xảy ra, một số mã nhất định sẽ được thực thi.

Có thể có một số lượng lớn các tùy chọn về cách xử lý lỗi. Ví dụ, chương trình có thể yêu cầu người dùng nhập dữ liệu một cách chính xác. Vì vậy, nếu một người chỉ ra một số âm trong đó nó chỉ có thể là số dương hoặc nhập các chữ cái chỉ nên có số, chương trình có thể cho biết về điều đó.

Ví dụ về Vòng lặp While

Đây là một ví dụ về mã xử lý lỗi trong trường hợp này.

n = input (“Nhập một số nguyên:“) 

trong khi kiểu (n)! = int:

    thử:

        n = int (n)

    ngoại trừ ValueError:

        print (“Mục nhập sai!”)

        n = input (“Nhập một số nguyên:“) 

nếu n% 2 == 0:

    print (“Even”)

khác:

    print (“Kỳ lạ”)

Hãy nhớ rằng Python sử dụng dấu hai chấm để khai báo các cấu trúc mã phức tạp.

Trong đoạn mã trên, chúng tôi đã xác định như một điều kiện mà chúng tôi nên kiểm tra xem số có phải là số nguyên hay không. Nếu có, thì trả về false. Nếu không, thì đúng.

Trong phần thứ hai của mã, nơi toán tử được sử dụng if, chúng tôi đã sử dụng toán tử% để tìm phần còn lại sau phép toán chia. Bước tiếp theo là kiểm tra xem số lượng có chẵn không. Nếu không, thì phần còn lại là một trong trường hợp này. Theo đó, con số là số lẻ. 

Nói một cách dễ hiểu, đoạn mã trên trước tiên sẽ kiểm tra xem chuỗi mà người dùng nhập có phải là một số hay không. Nếu có, sau đó kiểm tra thứ hai được thực hiện để xem có phần dư của phép chia cho hai hay không. Nhưng khối thứ hai sẽ không được thực thi cho đến khi giá trị được nhập bởi người dùng là số.

Tức là vòng lặp sẽ thường xuyên được thực hiện cho đến khi điều kiện xảy ra. Trong tình huống này, nó hoạt động như thế này. 

Có nghĩa là, bạn có thể đi từ ngược lại: lặp một hành động nhất định cho đến khi sự kiện đó trở thành sai.

Phân tích cú pháp mã

Bây giờ chúng ta hãy xem chi tiết hơn cách mã này hoạt động. Để làm điều này, chúng tôi sẽ phân tích nó từng bước.

  1. Đầu tiên, người dùng nhập một chuỗi, được chấp nhận bởi biến n. 
  2. Sử dụng một vòng lặp trong khi loại của biến này được kiểm tra. Trong lần nhập đầu tiên, nó không bằng int. Do đó, theo kết quả của cuộc kiểm tra, người ta thấy rằng điều kiện này là đúng. Do đó, phần thân của vòng lặp được nhập vào.
  3. Với sự giúp đỡ của một nhà điều hành thử chúng tôi đang cố gắng chuyển đổi một chuỗi thành một số. Nếu điều này được thực hiện, sau đó không có lỗi xảy ra. Theo đó, không cần phải xử lý nó. Do đó, trình thông dịch quay trở lại phần đầu của vòng lặp, và theo kết quả của việc kiểm tra, nó đã trở thành một số nguyên. Vì vậy, chúng ta hãy chuyển sang bước 7
  4. Nếu chuyển đổi không thành công, thì một ValueError sẽ xuất hiện. Trong trường hợp này, luồng chương trình được gửi đến trình xử lý ngoại trừ.
  5. Người dùng nhập một giá trị mới, giá trị này được gán cho biến n.
  6. Trình thông dịch quay lại bước 2 và kiểm tra lại. Nếu đó là giá trị số nguyên, hãy chuyển sang bước 7. Nếu không, quá trình chuyển đổi được thử lại theo bước 3.
  7. Với sự giúp đỡ của một nhà điều hành if Xác định xem có dư sau khi chia một số cho 2 hay không. 
  8. Nếu không, văn bản "thậm chí" được trả về.
  9. Nếu không, văn bản "lẻ" được trả về.

Bây giờ hãy xem xét một ví dụ như vậy. Hãy thử xác định xem chu kỳ này sẽ trải qua bao nhiêu lần?

tổng = 100 

i = 0

trong khi tôi < 5:

    n = int (input ())

    tổng = tổng - n

    tôi = tôi + 1 

print ("Còn lại", tổng cộng)

Câu trả lời đúng là 5. Ban đầu, giá trị của biến i - số không. Trình thông dịch kiểm tra xem biến có bằng nhau không i 4 hoặc ít hơn. Nếu có, thì giá trị được trả về. đúng, và vòng lặp được thực thi tương ứng. Giá trị được tăng lên một.

Sau lần lặp đầu tiên, giá trị của biến trở thành 1. Kiểm tra được thực hiện và chương trình hiểu rằng số này lại nhỏ hơn 5. Theo đó, phần thân của biến được thực hiện lần thứ hai. Vì các bước tương tự nhau, giá trị cũng tăng lên một và biến hiện bằng 2.

Giá trị này cũng nhỏ hơn năm. Sau đó, vòng lặp được thực hiện lần thứ ba, được thêm vào biến i 1 và nó được gán giá trị 3. Giá trị này lại nhỏ hơn năm. Và do đó, nói đến lần lặp thứ sáu của vòng lặp, tại đó giá trị của biến i bằng 5 (xét cho cùng, ban đầu nó bằng XNUMX, theo như chúng tôi nhớ). Theo đó, điều kiện này không vượt qua bài kiểm tra và vòng lặp sẽ tự động kết thúc và quá trình chuyển đổi sang bước tiếp theo, nằm ngoài nó (hoặc kết thúc chương trình, nếu các bước sau không được cung cấp), được thực hiện.

Chu kỳ cũng có thể xảy ra theo hướng ngược lại. Đây là một ví dụ về mã trong đó, với mỗi lần lặp tiếp theo, một mã sẽ bị trừ khỏi giá trị hiện tại của biến. 

tổng = 100 

trong khi tổng số> 0:

    n = int (input ())

    tổng = tổng - n 

print (“Tài nguyên đã cạn kiệt”)

Hãy thử đoán xem chương trình này làm gì! Hãy tưởng tượng rằng trong một biến Tổng số thông tin về tài nguyên chương trình được lưu trữ. Mỗi lần thông dịch viên sẽ kiểm tra xem tài nguyên có tồn tại hay không. Nếu không, thì dòng chữ “Tài nguyên đã cạn kiệt” sẽ hiển thị và chương trình sẽ đóng lại. Và với mỗi lần lặp lại của vòng lặp, tài nguyên sẽ giảm theo số mà người dùng chỉ định.

Và bây giờ là bài tập về nhà. Hãy thử thay đổi đoạn mã trên để biến không thể trở nên âm. 

4 Comments

  1. mã si ahaan usoo gudbi

Bình luận