Kursus Pengembangan Python Lanjutan
Bab
>
Tingkat
Daftar Lanjutan
Pemetaan, Penyaringan, Reduksi
Tujuan
Selesaikan pencampuran dan produksi es krim dengan menggunakan Maps, Filter dan Reduce.
Beberapa rasa es krim hampir habis atau kosong, tetapi kita memiliki cukup bahan untuk mengimbanginya dan menyusun es krim lebih banyak. Untuk melakukan ini, Anda harus menggunakan Map, sebuah alat yang kuat yang memungkinkan Anda meminimalkan jumlah kode yang harus ditulis dengan merangkum loop dan kode bercabang. Fungsi Filter dan Reduce melengkapi fungsi Map dan menyediakan fleksibilitas yang sangat diperlukan dalam pemrograman Anda.
Untuk memulai, Anda perlu mengimpor Reduce dari pustaka functools agar dapat menggunakan fungsi tersebut dengan menambahkan kode ini di awal program Anda: from functools import reduce. Fungsi Map dan Filter sudah terintegrasi dalam Python dan tidak perlu diimpor.
Pertama, Anda perlu mengambil beberapa bahan dari freezer walk in, berjalan ke tanda X berwarna emas, menghadap ke pintu dan membukanya menggunakan fungsi open(). Ambil semua toples dari "cream" di dalam freezer, kemudian berjalan ke tanda X bercahaya di atas karpet hijau.
Ada tiga (3) konstanta daftar di lapangan yang bernama: vanilla, strawberry dan chocolate. Setiap konstanta memiliki kombinasi bahan yang membentuk rasa es krim. Di tanda X berwarna hijau, verifikasi isi dari konstanta daftar strawberry. Pertama, gunakan fungsi place() untuk menyetor "cream" yang sebelumnya Anda ambil dan gunakan fungsi speak() untuk memverifikasi isi dari konstanta daftar strawberry.
Setelah diverifikasi, saatnya menggunakan fungsi Map dengan konstanta daftar strawberry, di mana semua isinya adalah angka desimal. Dengan menggunakan fungsi map(), Anda dapat membulatkan semua elemen dalam daftar, sehingga tidak perlu mengiterasi setiap elemen dalam loop untuk membulatkannya satu per satu. Untuk melakukan ini, buat sebuah daftar bernama map1 dan gunakan fungsi map() bersamaan dengan daftar strawberry dan fungsi round(), seperti ini: map1 = list(map(round, strawberry)). Setelah selesai, gunakan fungsi speak() dengan map1 untuk memverifikasi hasilnya.
Setelah itu selesai, kita beralih ke Filter, yang bekerja dengan cara yang sama seperti Map tetapi membutuhkan fungsi untuk digunakan bersamaan. Di bagian atas editor, Anda akan memiliki fungsi preset bernama main_ingredients yang digunakan untuk menentukan apakah sebuah angka lebih besar daripada angka 25.
def main_ingredients(value):
return value > 25
Alih-alih melalui loop, Anda dapat menggunakan fungsi ini bersamaan dengan fungsi filter() untuk menyusun daftar baru dengan item-item yang melebihi 25, yang merupakan bahan utama. Buat daftar baru bernama filter1 dan terapkan fungsi filter() dengan main_ingredients dan map1 untuk menentukan semua bahan utama yang ditemukan dalam daftar Map yang telah Anda buat, seperti ini: filter1 = list(filter(main_ingredients, value)). Setelah selesai, gunakan fungsi speak() dengan filter1 untuk memverifikasi hasilnya.
Sekarang kita beralih ke Reduce, yang digunakan dengan cara yang sama seperti Filter, tetapi digunakan untuk menggabungkan atau mereduksi daftar menjadi satu kesatuan. Seperti Filter, ia menggunakan fungsi kustom, kali ini bernama custom_sum yang secara dinamis menambahkan dua angka bersama-sama.
def custom_sum(first, second):
return first + second
Buat sebuah variabel bernama reduce1 dan gunakan fungsi reduce() bersamaan dengan fungsi custom_sum dan filter1 untuk mengkonsolidasikan semua item menjadi satu kesatuan, seperti ini: reduce1 = reduce(custom_sum, filter1). Setelah selesai, gunakan fungsi speak() dengan reduce1 untuk memverifikasi hasilnya.
Sekarang setelah Anda menyelesaikan siklus Map, Filter, Reduce, ulangi siklus yang sama pada tanda X bercahaya di karpet merah dan biru. Pada karpet merah, gunakan konstanta daftar vanilla, dan buat map2, filter2 dan reduce2. Pada karpet biru, gunakan konstanta daftar chocolate, dan buat map3, filter3 dan reduce3.
Berjalanlah ke tanda X bercahaya terakhir yang berada di atas karpet ungu, tambahkan reduce1, reduce2 dan reduce3 untuk menggabungkan bahan utama vanilla, strawberry, dan chocolate. Buat sebuah variabel bernama neapolitan dan jumlahkan semua hasil Reduce, seperti ini: neapolitan = reduce1+reduce2+reduce3. Gunakan fungsi speak() dengan kombinasi tersebut untuk memverifikasinya dan gunakan fungsi place() dengannya untuk membuat es krim Neapolitan dan menyelesaikan level.