Tin tức và phân tích của tất cả các thiết bị di động

Làm cách nào để mô phỏng các vòng lặp Do-While trong Python?

Trong hướng dẫn này, bạn sẽ học cách mô phỏng vòng lặp do while trong Python.

Trong bất kỳ ngôn ngữ lập trình nào, vòng lặp giúp bạn lặp lại một số hành động nhất định, tùy thuộc vào điều kiện của vòng lặp. Python hỗ trợ các cấu trúc vòng lặp while và for, nhưng không hỗ trợ vòng lặp do-while.

Tuy nhiên, bạn có thể mô phỏng một vòng lặp do-while bằng cách hiểu cách thức hoạt động của nó – bằng cách sử dụng các câu lệnh điều khiển vòng lặp và vòng lặp hiện có của Python.

Bạn sẽ học cách làm điều đó chỉ trong vài phút. Hãy bắt đầu!

Cấu trúc vòng lặp Do-While là gì?

Nếu bạn đã lập trình bằng các ngôn ngữ như C hay C++, chắc hẳn bạn đã bắt gặp cấu trúc vòng lặp do-while.

Trong vòng lặp do-while, tập hợp các câu lệnh trong phần thân của vòng lặp – trong một khối được phân cách bằng dấu ngoặc nhọn – được thực thi trước, sau đó điều kiện của vòng lặp được kiểm tra.

Bạn có thể chạy các ví dụ C sau đây trong trình biên dịch C trực tuyến wdzzwdz – ngay từ trình duyệt của bạn.

Hãy xem xét đoạn mã sau:

//do_while_example1

#include <stdio.h>

int main() {
    int count = 1;
    printf("Do-While loop: n");
    
    do{
        printf("Loop runs...");
        }while(count<0);

    return 0;
}

Đây là kết quả.

Output

Do-While loop: 
Loop runs...

Trong ví dụ trên:

  • Giá trị đếm là 1và điều kiện lặp là đếm
  • Điều này trái ngược với vòng lặp while, vòng lặp này chỉ thực hiện nếu điều kiện vòng lặp là True ngay từ đầu.
//while_example1

#include <stdio.h>

int main() {
    int count = 1;
    printf("While loop: n");
    
    while(count<0){
        printf("Loop runs...");
        }

    return 0;
}

Như đã đề cập, điều kiện vòng lặp, số

Output

While loop: 
//loop body does not run!

trong khi so với Do-While: tổng quan về sự khác biệt

Chúng ta hãy xem xét kỹ hơn sự khác biệt giữa vòng lặp while và do-while.

Hãy xem xét ví dụ này:

//do_while_example2

#include <stdio.h>

int main() {
    int count = 1;
    printf("Do-while loop: n");
    
    do{
       printf("%dn",count);
       count++;
    }while(count<5);

    return 0;
}

Trong ô mã ở trên:

  • Biến đếm được khởi tạo thành 1.
  • Chúng tôi sử dụng vòng lặp do-while.
  • số lượng được tăng lên bởi 1 trong mỗi vòng lặp và điều kiện vòng lặp được đặt thành đếm

Dưới đây là giải thích trực quan về cách thức thực hiện: cách hoạt động của vòng lặp do-while và kiểm tra điều kiện vòng lặp bốn lần.

Output

Do-while loop: 
1
2
3
4

Thay vào đó, nếu bạn sử dụng vòng lặp while, chúng tôi sẽ nhận được điều này.

//while_example2

#include <stdio.h>

int main() {
    int count = 1;
    printf("While loop: n");
    
    while(count<5){
       printf("%dn",count);
       count++;
    };

    return 0;
}

Hình bên dưới giải thích việc thực hiện vòng lặp while; trong ví dụ này, vòng lặp while kiểm tra điều kiện vòng lặp năm lần.

Output

While loop: 
1
2
3
4

Mặc dù đầu ra cho các vòng lặp while và do-while ở trên giống hệt nhau, nhưng vẫn có một số khác biệt nhỏ.

Trong vòng lặp while, điều kiện được kiểm tra trước, sau đó là phần thân của vòng lặp. Vì vậy, nếu bạn muốn vòng lặp thực hiện K lần, thì phải có chính xác K lần chạy trong đó điều kiện lặp là True. Trong lần lặp lại số K+1 điều kiện trở thành sai và điều khiển thoát ra khỏi vòng lặp.

Mặt khác, nếu bạn đang sử dụng vòng lặp do-while: điều kiện lặp được kiểm tra lần thứ K chỉ sau khi K đi qua vòng lặp.

Vậy tại sao cải tiến cận biên này lại hữu ích?🤔

Giả sử một điều kiện vòng lặp tốn kém về mặt tính toán: ví dụ: nó yêu cầu một lệnh gọi hàm đệ quy, một phép toán phức tạp, v.v.

Trong những trường hợp như vậy, đối với K lần lặp lại nội dung vòng lặp, tốt hơn là sử dụng vòng lặp do-while thay thế.

Tóm tắt kịp thời so với Do-While

Hãy liệt kê những điểm khác biệt chính mà chúng ta đã học được. 👩‍🏫

While LoopDo-While LoopKiểm tra điều kiện lặp: Trước khi thực hiện thân vòng lặp Kiểm tra điều kiện lặp: Sau khi thực hiện thân vòng lặp Nếu điều kiện ban đầu là Sai, thân vòng lặp sẽ không được thực hiện. được thực hiện chính xác một lần. Điều kiện vòng lặp được kiểm tra K lần để K đi qua vòng lặp. Điều kiện lặp được kiểm tra K-1 lần cho K đi qua vòng lặp. Khi nào sử dụng vòng lặp while?
– Vòng lặp sẽ chạy miễn là điều kiện còn đúng
– Đến một vòng lặp với đầu vào được kiểm soát
– Khi điều kiện lặp không tốn kém về mặt tính toán Khi nào sử dụng vòng lặp do-while?
– Vòng lặp phải được chạy ít nhất một lần trong trường hợp vòng lặp sai ban đầu
– Để lặp với đầu ra được kiểm soát
– Khi điều kiện lặp tốn kém về mặt tính toán

Mô phỏng hành vi của vòng lặp Do-While trong Python

Từ phần trước, chúng ta có hai điều kiện sau để mô phỏng vòng lặp do while:

  • Các câu lệnh trong thân vòng lặp phải được thực hiện ít nhất một lần, bất kể điều kiện vòng lặp là Đúng hay Sai.
  • Điều kiện cần được kiểm tra sau khi thực hiện câu lệnh trong phần thân của vòng lặp. Nếu điều kiện là Sai, điều khiển sẽ thoát ra khỏi vòng lặp: điều khiển thoát.

Câu lệnh vòng lặp và ngắt vô hạn trong Python

Bạn có thể xác định một vòng lặp vô hạn trong python như hình bên dưới.

while True:
    pass

# Instead of True, you can have any condition that is always True

while always-True-condition:
   pass

Câu lệnh break có thể được sử dụng để thoát ra khỏi thân vòng lặp và chuyển điều khiển sang câu lệnh đầu tiên bên ngoài thân vòng lặp.

while <condition>:
    if <some-condition>:
        break

Trong ví dụ đầu tiên về vòng lặp do-while trong C, điều kiện để vòng lặp tiếp tục là số = 0).

Đây là mô phỏng của vòng lặp do while trong Python:

count = 1
while True:
    print("Loop runs...")
    if(count >= 0):
        break

Ví dụ về vòng lặp Do-While trong Python

Chúng ta sẽ quay lại các ví dụ từ phần trước và viết lại chúng bằng Python, mô phỏng vòng lặp do while.

#1. Hãy quay trở lại ví dụ: in giá trị của số đếm khi số nhỏ hơn năm.

Chúng ta biết cách định nghĩa một vòng lặp vô hạn sao cho phần thân của vòng lặp thực hiện ít nhất một lần.

Vòng lặp sẽ tiếp tục miễn là số nhỏ hơn năm. Do đó, khi con số đạt đến năm, chúng ta nên thoát ra khỏi vòng lặp. Vậy số == 5 là một điều kiện kiểm soát đầu ra.

Kết hợp điều này, chúng tôi có:

count = 1
while True:
  print(f"Count is {count}")
  count += 1
  if count==5:
    break
Output

Count is 1
Count is 2
Count is 3
Count is 4

#2. Chúng ta cũng có thể viết lại trò chơi đoán số dưới dạng cấu trúc do-while trong Python.

Trong trò chơi đoán số, chúng tôi kiểm tra dự đoán của người dùng dựa trên một số bí mật được xác định trước. Người dùng nên đoán số bí mật trong một số lần thử được phép nhất định, chẳng hạn như max_guesses.

Mã sẽ nhắc người dùng nhập liệu dự đoán của họ là đúng hay sai. Chúng ta có thể làm điều này với vòng lặp while vô hạn.

Vậy khi nào chúng ta nên thoát ra khỏi vòng lặp?

Điều khiển sẽ thoát ra khỏi vòng lặp khi xảy ra một trong các trường hợp sau:

  • Khi người dùng đoán số
  • Khi người dùng chưa đoán số nhưng đã hết số lần đoán có sẵn. Số người dùng đoán sai = max_guesses.
  • Ô mã bên dưới cho biết cách chúng tôi có thể thực hiện việc này.

    import random
    
    low, high = 5,50
    
    secret_number = random.choice(range(low,high))
    
    max_guesses = 10
    
    num_guesses = 0
    
    while True:
        guess = int(input("nGuess a number:"))
        num_guesses += 1
        
        conditions = [num_guesses==max_guesses,guess==secret_number]
        
        if any(conditions):
            break

    Thay vì thoát ra khỏi vòng lặp, chúng ta có thể thêm các câu lệnh print() giải thích khi gặp phải từng điều kiện trên, rồi thoát ra khỏi vòng lặp.

    import random
    
    low, high = 5,50
    
    secret_number = random.choice(range(low,high))
    
    print(secret_number)
    
    max_guesses = 10
    
    num_guesses = 0
    
    while True:
        guess = int(input("nGuess a number:"))
        num_guesses += 1
        
        if guess==secret_number:
            print("Congrats, you guessed it right!")
            break
        if num_guesses==max_guesses:
            print("Sorry, you have no more guesses left!")
            break

    Hai đầu ra mẫu được hiển thị dưới đây.

    Trong kết quả mẫu này, câu lệnh ngắt sẽ thoát khỏi vòng lặp khi người dùng đoán đúng số bí mật.

    # Sample output when secret_number = 43 and user gets it right!
    
    Guess a number:4
    
    Guess a number:3
    
    Guess a number:43
    Congrats, you guessed it right!
    

    Đây là một kết quả mẫu khác khi người dùng đạt số lần đoán tối đa có sẵn nhưng không đoán đúng số bí mật.

    # Sample output when secret_number = 33 and user fails to guess it right!
    
    Guess a number:3
    
    Guess a number:15
    
    Guess a number:21
    
    Guess a number:50
    
    Guess a number:17
    
    Guess a number:6
    
    Guess a number:18
    
    Guess a number:5
    
    Guess a number:12
    
    Guess a number:43
    Sorry, you have no more guesses left!

    Đăng kí

    Tôi hy vọng hướng dẫn này đã giúp bạn hiểu cách mô phỏng vòng lặp do-while trong Python.

    Dưới đây là những kết luận quan trọng nhất:

    • Sử dụng vòng lặp vô hạn để đảm bảo rằng phần thân của vòng lặp chạy ít nhất một lần. Nó có thể là một vòng lặp vô hạn tầm thường như while True, hoặc có thể là while sao cho điều kiện luôn đúng.
    • Kiểm tra điều kiện thoát bên trong vòng lặp và sử dụng câu lệnh break để thoát ra khỏi vòng lặp với một điều kiện nhất định.

    Sau đó tìm hiểu cách sử dụng vòng lặp for và hàm enumerate() trong Python.