Coding for KidsCoding for Kids
Cấp Độ Sáng TạoThử TháchHướng Dẫn Giáo Viên
Bình chọn tính năng
Khóa học Phát triển Python Nâng cao
Chương
>
Cấp độ

Các Hàm Nâng Cao
Hàm đóng

Mục tiêu

Điều chỉnh nguồn cung cấp nước trong trang trại bằng cách thiết lập và sử dụng closures.

Có bốn bồn chứa nước được thiết kế để tưới tiêu cho các cánh đồng xung quanh, đã đến lúc chúng được thay đổi để đảm bảo lượng nước đúng được phân phối đến đúng nơi. Để làm được điều này, chúng ta có thể làm cho công việc trở nên dễ dàng hơn bằng cách sử dụng Closures.

Closures là các hàm lồng nhau được thiết kế để đóng gói dữ liệu, điều này giảm số lượng biến bạn cần sử dụng và ẩn dữ liệu bên trong hàm để không thể bị thao tác từ bên ngoài, nói cách khác, đóng gói hàm lại.

Để điều tiết nước trong các bồn chứa, chúng ta sẽ tạo một hàm lồng nhau hoạt động như một bộ nhân. Hàm này hoạt động theo cùng một cách như một vòng lặp, hàm bên ngoài có tên là multiplier_of() có một đối số được nhân với đối số của hàm bên trong của nó có tên là multiplier().

# Nested Function def multiplier_of(n): def multiplier(number): return number*n return multiplier

Sau khi thiết lập, chúng ta cần đóng gói hàm bằng cách thiết lập closures, điều này ngăn cản truy cập vào các giá trị của chúng và củng cố việc sử dụng chúng.

# Set up Closure that multiplies any number by 2 multiply_by_2 = multiplier_of(2) # Uses closure to display a number on screen player.speak( multiply_by_2(4) ) # The number displayed is 8, the formula is [2 x 4 = 8]

Closure ở trên được gọi là multiply_by_2() và sử dụng hàm lồng mà chúng ta đã tạo với một đối số cố định, đó là 2, là số mà closure được thiết lập để nhân với. Kết quả là bất kỳ số nào chúng ta thêm vào dưới dạng đối số sẽ được nhân với hai (2) và thuộc tính này không thể thay đổi do đã được đóng gói.

Chuyển sang việc điều tiết các bồn chứa nước, hãy thiết lập ba (3) closures: multiply_by_2, multiply_by_3multiply_by_5. Thiết lập từng cái một bằng cách sử dụng cùng một định dạng đã cung cấp trong ví dụ trước, như sau: multiply_by_2 = multiplier_of(2).

Có một hằng số từ điển trong cấp độ này có tên tanks, dưới dạng chỉ mục nó chứa sáu (6) màu: "red", "blue", "orange", "purple", "yellow""green". Mỗi chỉ mục chứa một số đại diện cho lượng nước chảy qua bên của bồn chứa, số này sẽ được sử dụng để điều chỉnh bồn chứa bằng cách sử dụng các closure "multiply_by" đã bàn ở trên.

Để hỗ trợ việc này, một hàm sẽ được thiết lập trong trình chỉnh sửa có tên regulate_water(), nó nhận hai đối số: màu sắc đại diện cho các chỉ mục đã nêu ở trên và bộ nhân đại diện cho closure nhân được sử dụng. Một ví dụ về việc sử dụng hàm như sau: regulate_water("red" , multiply_by_2).

Hãy di chuyển tới các dấu X tối trên thảm màu ở phía trên và đối mặt với các bồn chứa, sử dụng hàm regulate_water() và đặt màu của thảm làm đối số đầu tiên cùng với closure nhân thích hợp làm đối số thứ hai. Các bộ nhân được sử dụng cho mỗi thảm màu như sau:

multiply_by_2 - "red""green" multiply_by_3 - "blue""purple" multiply_by_5 - "orange""yellow"

Điều chỉnh lượng nước trên mỗi bên của bồn chứa để hoàn thành cấp độ.

Sách Mã