Bài 2: Câu lệnh If Else
Trong Bài học này, bạn sẽ tạo một dự án trong đó Robot VR đánh đổ ít nhất hai lâu đài trên Sân chơi Dynamic Castle Crasher. Sẽ cần một thuật toán để giải quyết thử thách bằng cách sử dụng vòng lặp và phản hồi cảm biến vì bố cục Sân chơi thay đổi sau mỗi lần đặt lại.
Ví dụ về Bố cục Sân chơi Dynamic Castle Crasher:

Kết quả học tập
- Xác định rằng câu lệnh if elsechạy các lệnh bên trong nhánh 'if' hoặc 'else' dựa trên giá trị Boolean được báo cáo.
- Xác định rằng câu lệnh if else thường được sử dụng với vòng lặp for hoặc vòng lặp whilevô hạn để kiểm tra điều kiện nhiều lần.
- Xác định và mô tả lý do tại sao câu lệnh if elseđược sử dụng với vòng lặp.
- Mô tả nguyên nhân khiến nhánh 'if' hoặc nhánh 'else' được chạy trong một dự án có câu lệnh if else.
Tại sao nên sử dụng câu lệnh If Else?
Thử thách Dynamic Castle Crasher khác với thử thách Castle Crasher trong Đơn vị 2. Thử thách Đơn vị 2 sử dụng trình tự đơn giản và các lệnh Truyền động để đánh đổ các lâu đài trên sân chơi tĩnh.
def main():
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 1550, MM)
drivetrain.turn_for(RIGHT, 180, DEGREES)
drivetrain.drive_for(FORWARD, 700, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)Tuy nhiên, do cách bố trí của Sân chơi Dynamic Castle Crasher thay đổi nên chỉ sử dụng lệnh Truyền độngsẽ không đủ để Robot VR có thể phá hủy hai hoặc nhiều lâu đài. Một tập hợp các lệnh Drivetrain có thể hoạt động ở một Playground nhưng không hoạt động ở Playground khác. Sẽ cần một thuật toán sử dụng cảm biến và lựa chọn theo từng lần lặp. Câu lệnh if elsesẽ được sử dụng để tạo thuật toán bằng cách thêm lựa chọn có câu lệnh có điều kiện vào dự án này.

Câu lệnh If Else
Câu lệnh if else là câu lệnh chấp nhận các điều kiện Boolean. Câu lệnh if elselà câu lệnh có điều kiện kiểm soát luồng của một dự án. Câu lệnh if elsesẽ thực thi một chuỗi lệnh cụ thểif điều kiện được đáp ứng, else(khi điều kiện là không phải được đáp ứng) một tập lệnh khác được thực thi – do đó 'phân nhánh' luồng dự án. Chỉ có một nhánh trong nếu khácsẽ được thực thi tại một thời điểm.
nếu điều kiện:
vượt qua
nếu không:
vượt qua- Nếu điều kiện được báo cáo là Đúng, các lệnh bên trong nhánh 'if' sẽ được chạy.
- Nếu điều kiện được báo cáo là Sai, các lệnh bên trong nhánh 'else' sẽ được chạy.
- Khi tất cả các lệnh bên trong một nhánh được chạy, dự án sẽ chuyển sang lệnh tiếp theo bên ngoài câu lệnhif else.
Bạn có thể thường xuyên sử dụng logicif elsetrong các hành động hàng ngày của mình. Ví dụ, khi quyết định những gì bạn cần mang theo khi ra khỏi nhà dựa trên thời tiết bên ngoài, bạn có thể sử dụng logicnếu khác. Nếutrời mưa, hãy mang theo ô; nếu không thìhãy mang theo kính râm.
Nhánh 'Nếu' -
- Trong trường hợp này, điều kiện 'mưa' được đáp ứng, do đó nhánh 'nếu'sẽ được thực thi và bạn sẽ mang theo một chiếc ô.

Nhánh 'Else' -
- Trong trường hợp này, điều kiện của 'mưa' là chứ không phải , do đó nhánh 'else' sẽ được thực thi và bạn sẽ lấy kính râm.

Câu lệnh If Else và bài toán Dynamic Castle Crasher
Có hai bước chính để Robot VR có thể phá hủy thành công các lâu đài trên Sân chơi Dynamic Castle Crasher. Về cơ bản, Robot VR phải có khả năng xác định vị trí và phát hiện các lâu đài trên sân chơi, sau đó lái xe để đánh đổ chúng. Theo câu lệnhif else, điều này có thể được diễn đạt như sau:
- Nếu Robot VR phát hiện ra một lâu đài, hãy lái về phía trước để đánh đổ lâu đài.

- Nếu không,(khi Robot VR không phát hiện ra lâu đài), hãy quay lại và kiểm tra xem có lâu đài nào ở vị trí khác trên Sân chơi không.

Cảm biến khoảng cách trên Robot VR có thể được sử dụng để phát hiện lâu đài trên Sân chơi này.Không giống như mọi Sân chơi khác, Sân chơi Castle Crasher không có tường. Vì lâu đài là vật thể duy nhất trên Sân chơiDynamic Castle Crasher , nên khi Cảm biến khoảng cách phát hiện vật thể, vật thể đó sẽ là một lâu đài. VR Robot sẽ cần phải kiểm tra tình trạng của Cảm biến khoảng cách nhiều lần, do đó, khi hai bước cơ bảnnày hoàn tất, VR Robot có thể quay lại và sử dụng Cảm biến khoảng cách để tìm lâu đài tiếp theo để đánh đổ.
Lên kế hoạch cho một dự án với câu lệnh If Else
- Bắt đầu một dự án mới và chọn Dynamic Castle Crasher Playgroundkhi được nhắc.

- Đặt tên cho dự án Unit9Lesson2.

-
Thêm các bình luận vào không gian làm việc để nêu rõ mục đích của dự án, dựa trên các bước đã xác định ở trên. Bình luận đầu tiên giải thích điều kiện của câu lệnh if elsevà hai bình luận tiếp theo giải thích hành động của từng nhánh trong câu lệnh if else. Hãy nhớ rằng chú thích Python bắt đầu bằng ký hiệu # (pound). Dự án của bạn sẽ trông như thế này:
def main(): # Cảm biến khoảng cách có phát hiện được lâu đài không? # Lâu đài sụp đổ được phát hiện bởi Cảm biến khoảng cách # Quay lại để tìm lâu đài bằng Cảm biến khoảng cách -
Có thể sử dụng câu lệnh if else để kích hoạt từng hành động được nêu ở trên. Mỗi hành động phụ thuộc vào việc điều kiện Boolean trong câu lệnh if elseđược báo cáo là Đúng hay Sai. Thêm câu lệnh if elsesau phần bình luận. Dự án của bạn bây giờ sẽ trông như thế này:
def main(): # Cảm biến khoảng cách có phát hiện được lâu đài không? # Lâu đài sụp đổ được phát hiện bởi Cảm biến khoảng cách # Quay lại để tìm lâu đài bằng Cảm biến khoảng cách nếu điều kiện: vượt qua nếu không: vượt qua -
Mỗi nhánh của câu lệnhif else có thể được định nghĩa bằng cách sử dụng các chú thích. NếuCảm biến khoảng cách phát hiện ra một lâu đài, Robot VR sẽ di chuyển để đánh đổ lâu đài; nếu không thìnó sẽ quay lại để phát hiện ra một lâu đài. Di chuyển các nhánh if và else của dự án để căn chỉnh với các bình luận mô tả các hành động liên quan. Dự án của bạn bây giờ sẽ trông như thế này:
def main(): # Cảm biến khoảng cách có phát hiện được lâu đài không? nếu điều kiện: # Lâu đài sụp đổ được phát hiện bằng Cảm biến khoảng cách vượt qua khác: # Quay lại để tìm lâu đài bằng cách sử dụng Cảm biến khoảng cách lần vượt qua
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.