Kursus Pembangunan Python Lanjutan
Bab
>
Tahap
Fungsi Lanjutan
Fungsi Argumen Bervariasi
Objektif
Ambil semua barangan yang boleh dimakan di dalam gudang dan susunlah mereka dalam kontena penyimpanan menggunakan fungsi argumen variasi.
Terdapat beberapa item makanan yang terletak di dalam gudang yang perlu dibungkus bagi menghantarnya untuk dijual. Supaya dapat melakukannya dengan cekap, anda boleh mencipta fungsi tersuai dengan bilangan argumen yang berubah-ubah. Ini adalah fungsi yang tiada bilangan argumen yang ditetapkan dan membenarkan anda menetapkan seberapa banyak argumen yang diperlukan untuk melaksanakan tindakan fungsi tersebut.
Terdapat dua (2) cara untuk menambah bilangan argumen yang berubah kepada fungsi, bergantung kepada apa yang anda ingin capai. Kaedah pertama adalah dengan mencipta senarai argumen; daripada meletakkan pelbagai nama argumen, letakkan satu tanda asterisk di hadapan satu argumen. Ini secara automatik mencipta senarai.
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")
Kaedah kedua adalah dengan meletakkan argumen di dalam kamus (dictionary) daripada senarai; ini dilakukan dengan cara yang sama seperti kaedah sebelumnya tetapi daripada meletakkan satu asterisk, anda meletakkan dua. Ini secara automatik mencipta kamus menggantikan senarai.
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}
Bagi membungkus semua item untuk penghantaran, cipta dua set fungsi tersuai, satu untuk membungkus item tunggal dan satu untuk membungkus beberapa item bersama-sama. Gunakan argumen berubah untuk membungkus bersama-sama pelbagai item 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) jenis item yang berbeza di lapangan: "jars" , "eggs" , "berries" dan "fruit". Kumpulkan semua item di dalam gudang dan berjalan ke arah tanda X pada lorong penghantaran. Berjalan ke arah tanda X yang gelap dan gunakan fungsi pack_singles untuk membungkus "jars" dan "eggs".
Bagi "jars", terdapat empat (4) jenis yang anda kumpulkan dan dimasukkan sebagai argumen, iaitu "white", "purple", "red" dan "brown". Ini untuk disimpan dalam kontena berhampiran green carpet. Kod ditulis seperti ini: pack_singles("jars", "white", "purple", "red", "brown")
Bagi "eggs", terdapat tiga (3) jenis yang anda kumpulkan dan dimasukkan sebagai argumen, iaitu "white", "green", dan "blue". Ini untuk disimpan dalam kontena berhampiran orange carpet. Format yang sama digunakan seperti dalam penyediaan sebelumnya.
Seterusnya, berjalan ke arah tanda X yang cerah dan gunakan fungsi pack_multi untuk membungkus "berries" dan "fruit". Bagi "berries", terdapat tiga (3) jenis yang anda kumpulkan dan dimasukkan sebagai argumen, iaitu "red", "blue", dan "purple". Ini untuk disimpan dalam kontena berhampiran blue carpet. Anda perlu menambah kuantiti yang anda kumpulkan bagi setiap jenis, seperti berikut: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )
Bagi "fruit", terdapat empat (4) jenis yang anda kumpulkan dan dimasukkan sebagai argumen, iaitu "apple", "pear", "orange", dan "peach". Ini untuk disimpan dalam kontena berhampiran red carpet. Gunakan format yang sama seperti entri sebelumnya, pastikan semua item dikumpulkan dan disimpan untuk melengkapkan tahap.