Kursus Pengembangan Python Lanjutan
Bab
>
Tingkat
Fungsi Lanjutan
Fungsi Argumen Variabel
Tujuan
Ambil semua barang habis pakai di dalam gudang dan kemas mereka di dalam wadah penyimpanan menggunakan fungsi argumen variabel.
Ada beberapa item makanan yang terletak di dalam gudang yang perlu dikemas agar bisa dikirim untuk dijual. Untuk melakukannya dengan efisien, kamu dapat membuat fungsi khusus dengan jumlah argumen yang bervariasi. Fungsi-fungsi ini tidak memiliki jumlah argumen yang tetap dan memungkinkan kamu untuk menentukan sebanyak mungkin argumen yang dibutuhkan untuk menjalankan aksi fungsi tersebut.
Ada dua (2) cara untuk menambahkan jumlah argumen yang bervariasi ke dalam sebuah fungsi, tergantung pada apa yang ingin kamu capai. Metode pertama adalah dengan membuat daftar argumen, alih-alih menuliskan berbagai nama argumen, letakkan tanda asterisk di depan sebuah argumen. Ini secara otomatis membuat sebuah daftar.
def custom_function(message,*arguments):
player.speak(message)
return(arguments)
value = custom_function("lalala","one","two","three")
# The message "lalala" is printed on screen
# Value now returns the list ("one","two","three")
Metode kedua adalah dengan menempatkan argumen-argumen di dalam sebuah dictionary alih-alih daftar, caranya sama seperti metode sebelumnya namun alih-alih menggunakan satu asterisk, kamu menggunakan dua asterisk. Ini secara otomatis membuat sebuah dictionary alih-alih daftar.
def custom_function(message,**arguments):
player.speak(message)
return(arguments)
value = custom_function("lalala", one = 1, two = 2, three = 3)
# The message "lalala" is printed on screen
# Value now returns the dictionary:
# {'one': 1, 'three': 3, 'two': 2}
Untuk mengemas semua item untuk pengiriman, buatlah dua set fungsi kustom, satu untuk mengemas item tunggal dan satu untuk mengemas beberapa item bersama-sama. Gunakan argumen variabel untuk mengemas berbagai item bersama-sama tanpa perlu membuat terlalu banyak fungsi.
def pack_singles(name,*items):
length = len(items)
player.speak("There are %d types of %s, those being:"
% (length, name) )
player.speak(items)
player.place(items)
def pack_multi(name,**items):
length = len(items)
player.speak("There are %d types of %s, those being:"
% (length, name) )
player.speak(items)
player.place(items)
Terdapat empat (4) tipe item di lapangan: "jars", "eggs", "berries" dan "fruit". Kumpulkan semua item di dalam gudang dan berjalanlah menuju tanda X pada jalur pengiriman. Berjalanlah ke tanda X yang gelap dan gunakan fungsi pack_singles untuk mengemas "jars" dan "eggs".
Untuk "jars" ada empat (4) tipe yang kamu kumpulkan dan dimasukkan sebagai argumen, yaitu "white", "purple", "red" dan "brown". Item-item tersebut disimpan di dalam wadah yang berada di sebelah green carpet. Kode ditulis seperti ini: pack_singles("jars", "white", "purple", "red", "brown")
Untuk "eggs" ada tiga (3) tipe yang kamu kumpulkan dan dimasukkan sebagai argumen, yaitu "white", "green", dan "blue". Item-item tersebut disimpan di dalam wadah yang berada di sebelah orange carpet. Format yang sama digunakan seperti pada pengaturan sebelumnya.
Setelah itu, berjalanlah ke tanda X yang terang dan gunakan fungsi pack_multi untuk mengemas "berries" dan "fruit". Untuk "berries" ada tiga (3) tipe yang kamu kumpulkan dan dimasukkan sebagai argumen, yaitu "red", "blue", dan "purple". Item-item tersebut disimpan di dalam wadah yang berada di sebelah blue carpet. Kamu perlu menambahkan jumlah yang kamu kumpulkan untuk masing-masing, seperti ini: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )
Untuk "fruit" ada empat (4) tipe yang kamu kumpulkan dan dimasukkan sebagai argumen, yaitu "apple", "pear", "orange", dan "peach". Item-item tersebut disimpan di dalam wadah yang berada di sebelah red carpet. Gunakan format yang sama seperti pada entri sebelumnya, pastikan semua item dikumpulkan dan disimpan agar level dapat diselesaikan.