Skip to main content

Vòng lặp lập trình - Python

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Phác thảo hoạt động

  • Khám phá này sẽ giới thiệu cho sinh viên cách lập trình các hành vi lặp lại bằng cách sử dụng vòng lặp lặp lại hoặc mãi mãi.

  • Học cách lập trình bằng vòng lặp lặp lại và mãi mãi cho phép học sinh tiết kiệm thời gian khi xây dựng một dự án sử dụng cùng một hành động lặp lại. Để biết thêm thông tin về các hướng dẫn được sử dụng trong một dự án văn bản, hãy truy cập thông tintrợ giúp.

Clawbot V5 đã sẵn sàng để di chuyển!

Cuộc thăm dò này sẽ cung cấp cho bạn các công cụ để có thể bắt đầu tạo một số dự án thú vị sử dụng các vòng lặp.

  • Hướng dẫn Python VEXcode V5 sẽ được sử dụng trong thăm dò này:
    • drivetrain.drive_for(CHUYỂN TIẾP, 300, MM)
    • drivetrain.turn_for(PHẢI, 90, ĐỘ)
    • claw_motor.spin_for(ĐẢO NGƯỢC, 70, ĐỘ)
    • arm_motor.spin_for(TIẾN, 360, ĐỘ)
    • bumper_b.pressing()
    • trong khi Đúng: 
    • đối với repeat_count trong phạm vi (4): 
    • chờ(5, GIÂY)

Bạn có thể sử dụng thông tin Trợ giúp bên trong VEXcode V5 để tìm hiểu về từng lệnhPython

Hình ảnh hiển thị VEXcode V5 Workspace với các ghi chú trợ giúp cho lệnh Drive đang mở

Biểu tượng Mẹo của Giáo viên Mẹo dành cho giáo viên

Nếu đây là lần đầu tiên học sinh sử dụng VEXcode V5, các em có thể đọc nhiều bài viết khác nhau trong Thư viện VEX

Hình ảnh phần VEXcode V5 của Thư viện VEX

Biểu tượng Mẹo của Giáo viên Mẹo dành cho giáo viên - Sử dụng tính năng Tự động hoàn thành

Tự động hoàn thành là một tính năng trong VEXcode V5 giúp dự đoán phần còn lại của lệnh bạn đang nhập. Khi học sinh làm việc với VEXcode V5, hãy khuyến khích các em sử dụng tính năng Tự động hoàn thành để hỗ trợ cú pháp Python. Bạn có thể nhận thấy chức năng tự động hoàn thành khi bạn bắt đầu nhập hướng dẫn. Sử dụng phím “Lên” và “Xuống” để chọn tên bạn muốn, sau đó nhấn “Tab'' hoặc (Enter/Return) trên bàn phím để thực hiện lựa chọn. Để biết thêm thông tin về cách sử dụng Tự động hoàn thành, hãy xem bài viết Python.

Hình ảnh về tính năng tự động hoàn thành trong một dự án Python

Đảm bảo bạn đã tải xuống phần cứng cần thiết, sổ ghi chép kỹ thuật và VEXcode V5 và sẵn sàng.

Vật liệu cần thiết:
Số lượng Vật liệu cần thiết
1

VEX V5 Classroom Starter Kit (với firmware cập nhật)

1

VEXcode V5 (phiên bản mới nhất, Windows, macOS)

1

Sổ tay kỹ thuật

1

Dự án mẫu Clawbot (Drivetrain 2 động cơ, Không có con quay hồi chuyển)

Bước 1: Hãy bắt đầu lập trình với vòng lặp

  • Trước khi bạn bắt đầu dự án của mình, hãy chọn dự án mẫu chính xác. Dự án mẫu Clawbot (Drivetrain 2 động cơ, No Gyro) bao gồm cấu hình động cơ của Clawbot. Nếu mẫu không được sử dụng, robot của bạn sẽ không chạy dự án một cách chính xác.
  • ChọnTệpVí dụ mở.

    Hình ảnh hiển thị menu Tệp mở trong VEXcode V5 hiển thị tùy chọn Mở Ví dụ

     

  • Cuộn qua các dự ánVí dụkhác nhau. Những dự án này thể hiện nhiều hành động mà Clawbot của bạn có thể thực hiện. Chọn và mở dự án mẫuClawbot Template (Hệ thống truyền động 2 động cơ, Không có con quay hồi chuyển).

    Hình ảnh hiển thị các dự án Ví dụ với một hộp màu đỏ xung quanh Dự án Mẫu Speedbot (Drivetrain 2 động cơ, Không có con quay hồi chuyển)

     

  • Đặt tên cho dự án RepeatingActions.

    Hình ảnh hiển thị Tên dự án Hành động lặp lại trong VEXcode V5

  • Nhập mã sau:

    # Nhập thư viện
    từ nhập vex *
    
    # Bắt đầu mã dự án
    # Chuyển tiếp 300mm quay 90 độ trong 4 lần lặp lại
    
    cho repeat_COUNT trong phạm vi(4
        ): drivetrain.drive_for (FORWARD, 300, MM
        ) drivetrain.turn_for (RIGHT, 90, DEGREES)
        wait(5, SECONDS)

Xem qua dự án và sau đó thực hiện những điều sau đây trong sổ ghi chép kỹ thuật của bạn.

  1. Dự đoán dự án sẽ có Clawbot làm gì. Giải thích nhiều hơn thực tế là dự án lặp lại.

    Nó đang lặp lại điều gì? Clawbot đang làm gì?

  2. Viết dự đoán của bạn, nhưng đừng chia dự án ngắn thành nhiều hơn hai phần.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Câu trả lời

  1. Dự án này sẽ yêu cầu robot: di chuyển về phía trước 300 mm, rẽ phải 90 độ, sau đó đợi 5 giây 4 lần để hoàn thành một hình vuông. Thay vì sử dụng cùng 3 lệnh 4 lần, lệnh lặp lại sẽ giảm số lần đó xuống chỉ còn 1 lần. Lệnh lặp lại sẽ lặp lại các hành động lái xe về phía trước rồi rẽ.

  2. Dự đoán có thể chỉ đơn giản là "Clawbot di chuyển theo hình vuông". Đây sẽ là một cách ngắn gọn để ghi lại những chuyển động lặp đi lặp lại của Clawbot mà không cần bất kỳ bối cảnh nào.

Sổ tay kỹ thuật của sinh viên có thể được lưu giữ và chấm điểmcho cá nhânhoặc theo nhóm. Các liên kết trước cung cấp tiêu chí đánh giá khác nhau cho từng cách tiếp cận. Bất cứ khi nào một tiêu chí đánh giá được đưa vào kế hoạch giáo dục, bạn nên giải thích tiêu chí đánh giá hoặc ít nhất là cung cấp bản sao cho học sinh trước khi hoạt động bắt đầu.

  • Lưu, tải xuống và chạydự án Hành động lặp lại.

    Ảnh chụp màn hình hiển thị tiêu đề dự án Hành động lặp lại trong VEXcode V5

  • Kiểm tra lời giải thích của bạn về dự án trong sổ ghi chép kỹ thuật của bạn và thêm ghi chú để sửa chúng khi cần thiết.

Bước 2: Chạy dự án và quan sát robot

So sánh hai đoạn mã Python cho robot VEX. Đoạn mã trên cùng sử dụng đầu vào cảm biến để xác định thời điểm rẽ, với một vòng lặp trong khi kiểm tra xem công tắc cản có được nhấn hay không; nếu nhấn, robot sẽ rẽ phải 90 độ, nếu không, nó sẽ lái về phía trước. Đoạn trích dưới cùng sử dụng một khoảng cách cố định để xác định thời điểm rẽ, với vòng lặp for đẩy robot về phía trước 300 mm, rẽ phải 90 độ và đợi trong 5 giây, lặp lại trình tự này bốn lần

Xem lại dự án Hành động lặp lại (dự án thứ hai). Dự án này sẽ lặp lại bước tiến và sau đó chuyển sang hành vi bốn lần. Cấu trúc vòng lặp "lặp lại" (sử dụng vòng lặpcho) được sử dụng khi bạn muốn sử dụng một tập hợp các hành vi với số lần nhất định.

Nếu cấu trúc lặp lại được thay thế bằng cấu trúc vòng lặp while , robot sẽ lặp lại các hành vi tiến về phía trước rồi rẽ "trong khi" điều kiện là đúng. Bạn cũng có thể đặt điều kiện thành "đúng" để vòng lặpwhile tiếp tục mãi mãi.

Trong dự án đầu tiên, đầu vào của cảm biến được sử dụng để xác định thời điểm bắt đầu quay. Dự án bên phải sử dụng khoảng cách truyền động cố định để xác định thời điểm bắt đầu rẽ.

Để liên tục kiểm tra đầu vào của cảm biến, câu lệnh if else được sử dụng cùng với vòng lặp while. Trong dự án bên trái, robot sẽ rẽ phải khi nhấn cảm biến "bumper_b", nếu không robot sẽ lái về phía trước mãi mãi nếu không nhấn cảm biến "bumper_b". Để liên tục kiểm tra giá trị của cảm biến bumper_b, câu lệnh if nằm trong vòng lặp while

Dự án đầu tiên là trường hợp sử dụng thực tế của một cấu trúc lặp lại mãi mãi – sử dụngwhilevòng lặp vàifcâu lệnh cùng nhau. Hãy tưởng tượng một người quét xe tự lái tiếp tục lái xe về phía trước cho đến khi nó va vào tường hoặc vật thể, sau đó quay lại trước khi tiếp tục lái xe.

Biểu tượng Mở rộng việc học của bạn Mở rộng việc học của bạn

Để khám phá thêm về cách sử dụng vòng lặp với điều kiện, hãy yêu cầu học sinh xây dựng dự án Floor Sweeper trong VEXcode V5.

  • Bắt đầu bằng cách yêu cầu học sinhvà nối các công tắc cản.
  • Yêu cầu học sinh mở dự án mẫuClawbot (Hệ thống truyền động 2 động cơ, Không có con quay hồi chuyển).

     

  • Yêu cầu học sinh cấu hình Công tắc cản 3 dây trong VEXcode V5, chọn Thiết bị 3 dây mà bạn đang sử dụng thành BUMPERvà chọn cổng thành B.Hình ảnh cấu hình thiết bị trong VEXcode V5 với tùy chọn Bumper được tô sángHình ảnh cấu hình thiết bị cho công tắc cản với cổng B được tô sáng
     
  • Yêu cầu học sinh đặt tên cho dự án là Người quét sàn.

  • Yêu cầu học sinh xây dựng dự án sau.

    # Thư viện nhập
    từ vex import *
    
    import random
    
    # Bắt đầu mã dự án
    while True:
        while (not bumper_b.pressing()):
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        
        drivetrain.stop()
    
        #Phương thức random.randomint() trả về một số nguyên ngẫu nhiên trong phạm vi đã chỉ định
        #Truyền các giá trị min và max của phạm vi cho các tham số
        drivetrain.turn_for(RIGHT, (90+random.randint(0, 90)),DEGREES)
        wait(5, MSEC)

Nếu học sinh cần trợ giúp với bất kỳ hướng dẫn nào, hãy giới thiệu cho họ thông tinTrợ giúp

Yêu cầu họctải xuống và chạy dự ánđể quan sát cách robot di chuyển. Sau đó, bắt đầu thảo luận trên lớp và yêu cầu học sinh giải thích lý do tại sao sử dụng cấu trúc mãi mãi thay vì cấu trúc lặp lại.

Học sinh cần lưu ý rằng cấu trúc mãi mãi được sử dụng vì dự án này liên tục kiểm tra xem công tắc cản có được nhấn hay không.

Bước 3: Thử thách Vòng lặp Bình phương!

Một sơ đồ thể hiện một con đường vuông màu xanh lá cây với các mũi tên cho biết hướng di chuyển xung quanh hình vuông. Các mũi tên màu cam bổ sung bên ngoài điểm vuông theo các hướng khác nhau, tương ứng với các lượt và chuyển động cần thiết để đi theo con đường

  • Cho Clawbot của bạn lái xe trong một hình vuông.
  • Trước mỗi lượt, phải mở và đóng móng vuốt, nâng và hạ cánh tay.
  • Clawbot không thể lái xe dọc theo một bên của quảng trường nhiều lần.
  • Bạn có thể sử dụng dự án RepeatingActions ở trên làm điểm khởi đầu nhưng hãy lưu nó dưới dạngSquaredLoopstrước khi thực hiện bất kỳ thay đổi nào.

Hình ảnh hiển thị tên dự án Squared Loops trên thanh công cụ trong VEXcode V5

Trong sổ ghi chép kỹ thuật của bạn, hãy lên kế hoạch như sau:

  • Lập kế hoạch giải pháp của bạn và dự đoán những gì mỗi hướng dẫn trong dự án của bạn sẽ có Clawbot làm.
  • Tải xuống và chạydự án của bạn để kiểm tra trước khi gửi.
  • Thực hiện các thay đổi đối với dự án khi cần thiết và ghi chú về những gì đã thay đổi trong quá trình thử nghiệm.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Giải pháp

Sau đây là giải pháp tiềm năng cho Thử thách Vòng lặp vuông:

# Thư viện nhập
từ vex import *

# Bắt đầu mã dự án
cho repeat_count trong phạm vi (4):
    drivetrain.drive_for(FORWARD, 300, MM)
    claw_motor.spin_for(REVERSE, 70, DEGREES)
    arm_motor.spin_for(FORWARD, 360, DEGREES)
    claw_motor.spin_for(FORWARD, 70, DEGREES)
    arm_motor.spin_for(REVERSE, 360, DEGREES)
    drivetrain.turn_for(RIGHT, 90, DEGREES)
    wait(5, MSEC)

Bạn có thể cung cấp cho sinh viên thang điểm lập trìnhđể chấm điểm các dự án của họ.
Sổ tay kỹ thuật của sinh viên có thể được lưu giữ và chấm điểmcá nhânhoặc theo nhóm.