Bài 4: Hành vi lặp lại
Trong Bài học trước, bạn đã quan sát cách sử dụng các câu lệnh nếu để Robot VR kiểm tra các điều kiện. Tuy nhiên, do luồng của dự án, các điều kiện trong câu lệnh if chỉ được kiểm tra một lần. Trong Bài học này, bạn sẽ được giới thiệu về vòng lặp vô hạn và cách sử dụng nó để giải Thử thách mê cung đĩa.

Kết quả học tập
- Xác định rằng vòng lặp vô hạn while lặp lại các hành vi bên trong vòng lặp mãi mãi.
- Mô tả lý do tại sao vòng lặp vô hạn whileđược sử dụng trong một dự án.
- Mô tả luồng dự án trong một dự án có nhiều câu lệnh if bên trong vòng lặp vô hạn while.
- Giải thích tại sao các câu lệnh if được sử dụng với vòng lặp vô hạn while .
Kiểm tra điều kiện nhiều lần
Như đã lưu ý trong Bài học trước, câu lệnh if chỉ kiểm tra điều kiện một lần. Để các điều kiện chứa trong các câu lệnh nếu được kiểm tra nhiều lần, dự án cần phải lặp lại từ đầu nhiều lần. Để thực hiện điều này, cần có vòng lặp vô hạn while.
trong khi Đúng:
chờ (5, MSEC)Vòng lặp vô hạn while sử dụng điều kiện luôn trả về giá trị True. While vòng lặp thực thi phần thân của vòng lặp khi điều kiện là Đúng, do đó các lệnh bên trong vòng lặp lặp lại vô hạn.
Vòng lặp vô hạn whilevà Bài toán mê cung đĩa
Để VR Robot hoạt động theo ý muốn và điều hướng thành công trong Mê cung đĩa, các điều kiện được đặt ra bởi các câu lệnhifphải được kiểm tra nhiều lần khi VR Robot di chuyển quanh Sân chơi. Việc thêm vòng lặp vô hạnwhilevào toàn bộ dự án sẽ cho phép điều này xảy ra vì tất cả các câu lệnh if có trong vòng lặp vô hạn while trong dự án bên dưới sẽ được kiểm tra nhiều lần cho đến khi dự án dừng lại.
Lưu ý phần thụt lề ở đây. Tất cả các câu lệnh if đều được thụt lề để nằm trong vòng lặp vô hạn while. Sự kết thúc của vòng lặp vô hạn while được ghi chú bằng lệnh wait.
def main():
while True:
# Nếu mắt trước phát hiện màu xanh lá cây thì rẽ phải
if front_eye.detect(GREEN):
drivetrain.turn_for(RIGHT, 90, DEGREES)
# Nếu mắt trước phát hiện màu xanh lam thì rẽ trái
if front_eye.detect(BLUE):
drivetrain.turn_for(LEFT, 90, DEGREES)
# Nếu mắt trước phát hiện màu đỏ thì dừng lại
if front_eye.detect(RED):
drivetrain.stop()
# Nếu mắt trước không phát hiện màu nào thì lái về phía trước
if front_eye.detect(NONE):
drivetrain.drive(FORWARD)
wait(5, MSEC)Trong dự án ở Bài học trước, các điều kiện trong câu lệnh if chỉ được kiểm tra một lần. Vì các điều kiện trong câu lệnh if chỉ được kiểm tra một lần nên VR Robot sẽ tiến về phía trước mãi mãi vì điều kiện không phát hiện màu nào được báo cáo là Đúng khi bắt đầu dự án.
Bây giờ vòng lặp vô hạn while đã được thêm vào, mỗi điều kiện của các câu lệnh if sẽ được kiểm tra nhiều lần.
- Điều kiện của vòng lặp vô hạnwhile luôn là Đúng, do đó mã bên trong vòng lặp vô hạnwhile sẽ luôn được thực thi. Điều này sẽ liên tục kiểm tra các điều kiện của các câu lệnh if trong khi dự án đang chạy.
- Hãy nhớ rằng 'bên trong' của vòng lặp while được biểu thị bằng dấu thụt lề.
- Trong quá trình thực hiện dự án, nếu điều kiện của câu lệnh if là Đúng, các lệnh bên trong câu lệnh if sẽ được thực thi. Nếu điều kiện của câu lệnh if là False, các lệnh bên trong câu lệnh if sẽ không được thực thi và luồng của dự án sẽ tiếp tục đến lệnh tiếp theo. Tính năng này cho phép VR Robot thực hiện các hành vi riêng biệt như rẽ hoặc dừng lại khi phát hiện ra một màu nhất định.
- Nếu câu lệnh được sử dụng với vòng lặp vô hạn whileđể đảm bảo các điều kiện được kiểm tra liên tục, về cơ bản là kết hợp luồng dự án của ifcâu lệnh trong vòng lặp.
Chọn nút Tiếp theo để tiếp tục phần còn lại của Bài học này.