Thứ năm, 05/01/2017 | 00:00 GMT+7

Cách tạo vòng lặp While trong Python 3

Các chương trình máy tính rất tuyệt vời để sử dụng để tự động hóa và lặp lại các việc. Một cách để lặp lại các việc tương tự là sử dụng các vòng lặp . Ta sẽ trình bày về vòng lặp while của Python trong hướng dẫn này.

Một vòng lặp while thực hiện lặp đi lặp lại của mã dựa trên một định Boolean điều kiện. Mã nằm trong khối while sẽ thực thi miễn là câu lệnh while đánh giá là True.

Bạn có thể nghĩ đến while vòng lặp như một lặp lại tuyên bố có điều kiện . Sau một if tuyên bố, chương trình tiếp tục thực thi mã, nhưng trong một while vòng lặp, chương trình nhảy trở lại bắt đầu trong khi tuyên bố cho đến khi điều kiện là False.

Trái ngược với vòng lặp for thực thi một số lần nhất định, while các vòng lặp dựa trên điều kiện, vì vậy bạn không cần biết mã lặp lại bao nhiêu lần.

WHILE

Trong Python, while được xây dựng như sau:

while [a condition is True]:     [do something] 

Điều gì đó đang được thực hiện sẽ tiếp tục được thực hiện cho đến khi điều kiện đang được đánh giá không còn đúng nữa.

Hãy tạo ra một chương trình nhỏ mà thực hiện một while vòng lặp. Trong chương trình này, ta sẽ yêu cầu user nhập password . Trong khi đi qua vòng lặp này, có hai kết quả có thể xảy ra:

  • Nếu password chính xác, while vòng lặp sẽ thoát.
  • Nếu password không đúng, những while vòng lặp sẽ tiếp tục thực hiện.

Ta sẽ tạo một file có tên là password.py trong editor mà ta chọn và bắt đầu bằng cách khởi tạo password biến dưới dạng một chuỗi trống:

password.py
password = '' 

Các chuỗi rỗng sẽ được sử dụng để đưa vào đầu vào từ user trong while vòng lặp.

Bây giờ, ta sẽ xây dựng câu lệnh while cùng với điều kiện của nó:

password.py
password = ''  while password != 'password': 

Ở đây, dấu while được theo sau bởi password biến. Ta đang tìm cách xem liệu password biến có được đặt thành password chuỗi (dựa trên thông tin user nhập sau này) hay không, nhưng bạn có thể chọn bất kỳ chuỗi nào bạn muốn.

Điều này nghĩa là nếu user nhập password chuỗi, thì vòng lặp sẽ dừng và chương trình sẽ tiếp tục thực thi bất kỳ mã nào bên ngoài vòng lặp. Tuy nhiên, nếu chuỗi mà user nhập vào không bằng password chuỗi, vòng lặp sẽ tiếp tục.

Tiếp theo, ta sẽ thêm khối mã đó làm điều gì đó trong while vòng lặp:

password.py
password = ''  while password != 'password':     print('What is the password?')     password = input() 

Bên while vòng lặp, chương trình chạy một câu lệnh in nhắc nhập password . Sau đó, password biến được đặt thành đầu vào của user bằng hàm input() .

Chương trình sẽ kiểm tra xem nếu biến password được gán cho chuỗi password , và nếu nó là, while vòng lặp sẽ kết thúc. Hãy cung cấp cho chương trình một dòng mã khác khi điều đó xảy ra:

password.py
password = ''  while password != 'password':     print('What is the password?')     password = input()  print('Yes, the password is ' + password + '. You may enter.') 

The last print() tuyên bố là bên ngoài while vòng lặp, vì vậy khi user nhập password như password , họ sẽ thấy báo cáo kết quả in thức bên ngoài của vòng lặp.

Tuy nhiên, nếu user không bao giờ nhập password từ, họ sẽ không bao giờ đến câu print() cuối cùng và sẽ bị mắc kẹt trong một vòng lặp vô hạn.

Vòng lặp vô hạn xảy ra khi một chương trình tiếp tục thực hiện trong một vòng lặp, không bao giờ rời khỏi nó. Để thoát ra khỏi vòng lặp vô hạn trên dòng lệnh, hãy nhấn CTRL + C

Lưu chương trình và chạy nó:

  • python password.py

Bạn sẽ được yêu cầu nhập password và sau đó có thể kiểm tra password bằng nhiều đầu vào có thể có. Đây là kết quả mẫu từ chương trình:

Output
What is the password? hello What is the password? sammy What is the password? PASSWORD What is the password? password Yes, the password is password. You may enter. 

Lưu ý các chuỗi phân biệt chữ hoa chữ thường trừ khi bạn cũng sử dụng một hàm chuỗi để chuyển đổi chuỗi thành tất cả các chữ thường (ví dụ) trước khi kiểm tra.

Chương trình ví dụ với Vòng lặp WHILE

Bây giờ ta hiểu được những tiền đề chung của một while vòng lặp, ta hãy tạo ra một dòng lệnh trò chơi đoán có sử dụng một vòng lặp while  một cách hiệu quả. Để hiểu rõ nhất cách chương trình này hoạt động, bạn cũng nên đọc về cách sử dụng câu lệnh điều kiệnchuyển đổi kiểu dữ liệu .

Đầu tiên, ta sẽ tạo một file có tên là guess.py trong editor mà ta chọn. Ta muốn máy tính đưa ra các số ngẫu nhiên để user đoán, vì vậy ta sẽ nhập module random bằng câu lệnh import . Nếu chưa quen với gói này, bạn có thể tìm hiểu thêm về cách tạo số ngẫu nhiên từ tài liệu Python .

đoán
import random 

Tiếp theo, ta sẽ gán một số nguyên ngẫu nhiên vào biến number , và giữ nó trong repository ảng từ 1 đến 25 (bao gồm), với hy vọng rằng nó không làm cho trò chơi quá khó khăn.

đoán
import random  number = random.randint(1, 25) 

Đến đây, ta có thể nhận được vào ta while vòng lặp, đầu tiên khởi tạo một biến và sau đó tạo ra các vòng lặp.

đoán
import random  number = random.randint(1, 25)  number_of_guesses = 0  while number_of_guesses < 5:     print('Guess a number between 1 and 25:')      guess = input()     guess = int(guess)      number_of_guesses = number_of_guesses + 1      if guess == number:         break 

Ta đã khởi tạo biến number_of_guesses ở 0, do đó ta tăng nó lên với mỗi lần lặp lại của vòng lặp để ta không có vòng lặp vô hạn. Sau đó, ta thêm câu lệnh while để number_of_guesses được giới hạn tổng cộng là 5. Sau lần đoán thứ năm, user sẽ quay lại dòng lệnh và hiện tại, nếu user nhập thứ gì đó không phải là số nguyên, họ sẽ nhận được lỗi.

Trong vòng lặp, ta đã thêm một câu print() để nhắc user nhập một số mà ta đã nhập bằng hàm input() và đặt thành biến guess . Sau đó, ta chuyển đổi guess từ một chuỗi thành một số nguyên.

Trước khi vòng lặp kết thúc, ta cũng muốn tăng biến number_of_guesses lên 1 để ta có thể lặp lại vòng lặp 5 lần.

Cuối cùng, ta viết một câu lệnh if điều kiện để xem liệu guess mà user thực hiện có tương đương với number mà máy tính tạo ra hay không và nếu có thì ta sử dụng câu lệnh break để thoát khỏi vòng lặp.

Chương trình đang hoạt động đầy đủ và ta có thể chạy nó bằng lệnh sau:

  • python guess.py

Mặc dù nó hoạt động, nhưng ngay bây giờ user không bao giờ biết liệu dự đoán của họ có đúng hay không và họ có thể đoán đầy đủ 5 lần mà không bao giờ biết liệu họ có đúng hay không. Đầu ra mẫu của chương trình hiện tại trông giống như sau:

Output
Guess a number between 1 and 25: 11 Guess a number between 1 and 25: 19 Guess a number between 1 and 25: 22 Guess a number between 1 and 25: 3 Guess a number between 1 and 25: 8 

Hãy thêm một số câu lệnh điều kiện bên ngoài vòng lặp để user được cung cấp phản hồi về việc họ có đoán đúng số hay không. Chúng sẽ nằm ở cuối file hiện tại của ta .

đoán
import random  number = random.randint(1, 25)  number_of_guesses = 0  while number_of_guesses < 5:     print('Guess a number between 1 and 25:')     guess = input()     guess = int(guess)      number_of_guesses = number_of_guesses + 1      if guess == number:         break  if guess == number:     print('You guessed the number in ' + str(number_of_guesses) + ' tries!')  else:     print('You did not guess the number. The number was ' + str(number)) 

Đến đây, chương trình sẽ cho user biết họ nhận số đúng hay sai, điều này có thể không xảy ra cho đến khi kết thúc vòng lặp khi user không đoán được.

Để cung cấp cho user một chút giúp đỡ trên đường đi, ta hãy thêm một vài báo cáo có điều kiện hơn vào while vòng lặp. Những thứ này có thể cho user biết liệu số của họ quá thấp hay quá cao, để họ có nhiều khả năng đoán đúng hơn. Ta sẽ thêm những thứ này trước dòng if guess == number của ta

đoán
import random  number = random.randint(1, 25)  number_of_guesses = 0  while number_of_guesses < 5:     print('Guess a number between 1 and 25:')     guess = input()     guess = int(guess)      number_of_guesses = number_of_guesses + 1      if guess < number:         print('Your guess is too low')      if guess > number:         print('Your guess is too high')      if guess == number:         break  if guess == number:     print('You guessed the number in ' + str(number_of_guesses) + ' tries!')  else:     print('You did not guess the number. The number was ' + str(number)) 

Khi ta chạy lại chương trình với python guess.py , ta thấy rằng user được hỗ trợ hướng dẫn nhiều hơn trong việc đoán của họ. Vì vậy, nếu số được tạo ngẫu nhiên là 12 và user đoán là 18 , họ sẽ được thông báo rằng dự đoán của họ quá cao và họ có thể điều chỉnh lần đoán tiếp theo của bạn cho phù hợp.

Có hơn có thể được thực hiện để cải thiện mã, bao gồm xử lý cho khi user không nhập một số nguyên lỗi, nhưng trong ví dụ này ta thấy một while vòng lặp tại nơi làm việc trong một chương trình dòng lệnh ngắn.

Kết luận

Hướng dẫn này đã đi qua như thế nào while vòng làm việc bằng Python và làm thế nào để xây dựng chúng. Vòng lặp while tiếp tục lặp qua một khối mã với điều kiện điều kiện đặt trong câu lệnh while là Đúng.

Từ đây, bạn có thể tiếp tục tìm hiểu về vòng lặp bằng cách đọc hướng dẫn về vòng lặp forcác câu lệnh break, continue và pass .


Tags:

Các tin liên quan

Cách làm việc với dữ liệu ngôn ngữ trong Python 3 bằng Bộ công cụ ngôn ngữ tự nhiên (NLTK)
2017-01-03
Cách tạo Twitterbot bằng Python 3 và Thư viện Tweepy
2016-11-30
Cách tạo ứng dụng Twitter bằng Python
2016-11-23
Cách tạo ứng dụng Twitter bằng Python
2016-11-23
Hiểu Logic Boolean trong Python 3
2016-11-17
Cách tạo chương trình máy tính bằng Python 3
2016-11-16
Cách tạo chương trình máy tính bằng Python 3
2016-11-16
Cách sử dụng các phương thức danh sách trong Python 3
2016-11-11
Các hàm Python 3 tích hợp để làm việc với các số
2016-11-08
Cách vẽ dữ liệu trong Python 3 bằng matplotlib
2016-11-07