Kursus Pembangunan Python Lanjutan
Bab
>
Tahap
Fungsi Lanjutan
Fungsi Separa
Objektif
Bungkus dan letakkan bahan binaan yang dihantar ke dok dengan menggunakan fungsi separa.
Beberapa bekalan baru sahaja dihantar ke dok, mereka perlu dibungkus dan disimpan supaya boleh digunakan sebagai bahan binaan. Bahan-bahan tersebut perlu dibalut dengan kain dan diikat dengan benang. Adalah penting untuk menimbang semua item ketika anda membungkusnya supaya mereka boleh diangkut dengan berkesan kemudian. Bagi memudahkan proses ini kita boleh mengoptimumkannya dengan menggunakan Fungsi Separa.
Fungsi Separa adalah fungsi tersuai yang diperpendek dengan tidak perlu menambah nilai hujah yang sebahagian besarnya adalah konsisten. Ini membolehkan anda menggunakan fungsi yang mengambil pelbagai hujah dan melaksanakannya dengan hanya satu hujah atau berapa banyak yang anda pilih.
from functools import partial
Untuk memulakan, anda mesti import partial dari modul yang dikenali sebagai functools, ini akan membolehkan anda mencipta Fungsi Separa. Kod import sentiasa diletakkan di bahagian atas editor kod.
Sediakan fungsi bernama weight dan jadikannya mengambil tiga (3) hujah: thread, cloth dan material. Fungsi ini akan membolehkan anda mengira berat bahan binaan yang dibungkus, kita boleh mengoptimumkan proses ini lagi dengan menyalurkannya melalui fungsi separa.
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
Cipta Fungsi Separa bernama package, ia disediakan dalam proses yang serupa dengan fungsi lambda. Guna partial() untuk mengisi fungsi dan tambah nama fungsi serta nilai tetap untuk hujah yang ingin anda tetapkan.
Mana-mana hujah dari fungsi asal yang tidak anda tetapkan akan menjadi hujah yang perlu ditetapkan oleh Fungsi Separa. Dalam kes Fungsi Separa package(), ia adalah hujah material.
Berjalan ke tanda X gelap di hadapan peti untuk mengambil bahan pembungkusan. Di atas karpet kuning tanda X, guna fungsi collect() untuk mendapatkan "thread" dan berjalan ke tanda X karpet ungu dan guna fungsi collect() untuk mendapatkan "cloth". Item-item ini akan digunakan untuk membungkus bahan binaan.
Berjalan melintasi dok dan ambil semua bahan binaan, antaranya: bricks, planks, red_bricks dan wood. Setelah anda mengumpulkannya, tambahkan nombor yang telah anda kumpulkan untuk setiap satu ke dalam pembolehubah yang dinamakan sama dengan bahan tersebut, sebagai contoh: bricks = 3.
Selepas itu, berjalan ke tanda X yang cerah di hadapan peti dan kira berat setiap bahan binaan sebelum menyimpannya. Guna fungsi speak() bersama dengan Fungsi Separa package() untuk mengira berat. Gunakan pembolehubah bahan sebagai hujah untuk fungsi package(), sebagai contoh:
player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))
Teruskan dengan menggunakan fungsi place() untuk menyimpan bahan tersebut di dalam peti, lakukan ini dengan menggunakan fungsi package() juga, seperti dalam contoh di atas.
Pada tanda X yang cerah bersama karpet red timbang dan simpan bricks. Pada tanda X yang cerah bersama karpet blue timbang dan simpan planks. Pada tanda X yang cerah bersama karpet orange timbang dan simpan red_bricks. Pada tanda X yang cerah bersama karpet green timbang dan simpan wood. Simpan dan timbang keempat-empat (4) bahan tersebut dalam peti yang betul untuk menyelesaikan level.