Kursus Pembangunan Python Lanjutan
Bab
>
Tahap
Senarai Lanjutan
Pemetaan, Penapisan, Pengurangan
Objektif
Selesaikan pencampuran dan pengeluaran aiskrim dengan menggunakan Maps, Filter dan Reduce.
Beberapa perisa aiskrim adalah rendah atau kosong tetapi kita mempunyai bahan yang cukup untuk menampung dan menghasilkan lebih banyak aiskrim. Untuk melakukan ini, anda mesti menggunakan Map, satu alat yang kuat yang membolehkan anda mengurangkan jumlah kod yang perlu ditulis dengan memadatkan gelung dan kod percabangan. Fungsi Filter dan Reduce adalah pelengkap kepada fungsi Map dan menyediakan kepelbagaian yang sangat diperlukan kepada pengekodan anda.
Untuk memulakan, anda perlu mengimport Reduce dari perpustakaan functools bagi menggunakan fungsi tersebut dengan menambah kod ini pada permulaan program anda: from functools import reduce. Fungsi Map dan Filter dibina ke dalam Python dan tidak perlu diimport.
Pertama, anda perlu mendapatkan beberapa bahan dari freezer berjalan, berjalan ke tanda X emas, berhadapan dengan pintu dan membukanya menggunakan fungsi open(). Ambil semua balang "cream" dalam freezer kemudian berjalan ke tanda X cahaya di atas permaidani hijau.
Terdapat tiga (3) senarai tetap dalam medan yang dinamakan: vanilla, strawberry dan chocolate. Setiap tetap mempunyai kombinasi bahan yang membentuk perisa aiskrim. Di tanda X hijau, sahkan kandungan senarai tetap strawberry. Pertama, gunakan fungsi place() untuk menghantar "cream" yang telah anda ambil sebelum ini dan gunakan fungsi speak() untuk mengesahkan kandungan senarai tetap strawberry.
Setelah disahkan, tiba masanya untuk menggunakan fungsi Map dengan senarai tetap strawberry, di mana semua kandungan senarai adalah nombor perpuluhan. Menggunakan fungsi map(), anda boleh membundarkan semua elemen dalam senarai, menggantikan keperluan untuk mengiterasi setiap elemen dalam gelung bagi membundarkannya satu persatu. Untuk melakukan ini, cipta satu senarai bernama map1 dan gunakan fungsi map() bersama dengan senarai strawberry dan fungsi round(), seperti ini: map1 = list(map(round, strawberry)). Setelah selesai, gunakan fungsi speak() dengan map1 untuk mengesahkan hasilnya.
Setelah itu, kita beralih ke Filter, yang berfungsi dengan cara yang sama seperti Map tetapi sebagai gantinya ia memerlukan fungsi untuk digunakan bersama. Di bahagian atas editor, anda akan mempunyai satu fungsi pratetap bernama main_ingredients yang digunakan untuk menentukan sama ada nombor lebih besar daripada nombor 25.
def main_ingredients(value):
return value > 25
Daripada melalui gelung, anda boleh menggunakan fungsi ini bersama-sama dengan fungsi filter() untuk menghasilkan senarai baru dengan item yang melebihi 25, iaitu bahan utama. Cipta satu senarai baru bernama filter1 dan gunakannya fungsi filter() dengan main_ingredients dan map1 untuk menentukan semua bahan utama yang terdapat dalam senarai Map yang telah anda cipta, seperti ini: filter1 = list(filter(main_ingredients, value)). Setelah selesai, gunakan fungsi speak() dengan filter1 untuk mengesahkan hasilnya.
Sekarang kita beralih kepada Reduce, yang digunakan dengan cara yang sama seperti Filter, tetapi ia boleh digunakan untuk meruntuhkan atau mengurangkan senarai kepada satu unit tunggal. Sama seperti Filter, ia menggunakan fungsi tersuai, kali ini dinamakan custom_sum yang secara dinamik menambah dua nombor bersama-sama.
def custom_sum(first, second):
return first + second
Cipta satu pembolehubah bernama reduce1 dan gunakan fungsi reduce() bersama fungsi custom_sum dan filter1 untuk menyatukan semua item menjadi satu unit tunggal, seperti ini: reduce1 = reduce(custom_sum, filter1). Setelah selesai, gunakan fungsi speak() dengan reduce1 untuk mengesahkan hasilnya.
Setelah anda menyelesaikan kitaran Map, Filter, Reduce, ulangi kitaran yang sama pada tanda X cahaya pada permaidani merah dan biru. Pada permaidani merah, gunakan senarai tetap vanilla, dan cipta map2, filter2 dan reduce2. Pada permaidani biru, gunakan senarai tetap chocolate, dan cipta map3, filter3 dan reduce3.
Berjalan ke tanda X cahaya terakhir yang berada di atas permaidani ungu, tambahkan reduce1, reduce2 dan reduce3 yang menggabungkan bahan utama vanilla, strawberry dan chocolate. Cipta satu pembolehubah bernama neapolitan dan tambahkan semua hasil Reduce, seperti ini: neapolitan = reduce1+reduce2+reduce3. Gunakan fungsi speak() dengan gabungan tersebut untuk mengesahkannya dan gunakan fungsi place() dengannya untuk menghasilkan aiskrim Neapolitan dan menyelesaikan tahap tersebut.