Kursus Pengembangan Python Lanjutan
Tujuan
Menggunakan generator dalam urutan manual untuk menyusun dan memproduksi bahan untuk membuat roti.
Di depan ada fasilitas di mana Anda bisa menggabungkan beberapa adonan roti menggunakan mesin pengepress. Biasanya Anda akan menggunakan fungsi combine() untuk menggabungkan bahan-bahan tetapi tidak untuk kasus ini, bahan-bahan perlu diperhalus terlebih dahulu sebelum bisa digabungkan.
Untuk tugas ini, kita dapat menggunakan generator karena bisa disesuaikan untuk mengeluarkan berbagai jenis file serta urutannya bisa dipanggil sesuai perintah daripada secara otomatis seperti yang dilakukan oleh fungsi dan loop. Berikut adalah contohnya:
def bread():
yield 5
yield "grain"
Kode di atas memiliki generator dengan dua pernyataan yield, salah satunya menghasilkan bilangan riil dan lainnya string. Kita dapat menghasilkan nilai dari generator sesuai permintaan menggunakan fungsi next(). Seperti ini:
recipe = bread() # Menyiapkan Generator player.place(next(recipe)) # Nilai pertama dipanggil player.collect(next(recipe)) # Nilai kedua dipanggil
Dalam contoh di atas, generator disiapkan dan fungsi next() digunakan dengan generator untuk memanggil nilai yield pertama untuk digunakan dalam fungsi place(). Ini diulang dengan nilai kedua tetapi digunakan dalam fungsi collect(). Ini membuatnya mudah untuk memanggil nilai-nilai dari berbagai jenis dalam urutan tanpa harus menggunakan banyak daftar atau variabel.
Sebuah generator bernama bread() akan didefinisikan di dalam editor kode tetapi akan memerlukan angka jumlah untuk setiap bahan agar Anda dapat memperhalus adonan roti. Angka-angka ini ditulis pada tanda di sebelah fasilitas. Siapkan generator untuk digunakan dengan mereferensikannya, seperti ini: recipe = bread()
Pertama berjalanlah ke tanda X terang di sebelah tangki susu dan collect() sisa susu dalam tangki menggunakan fungsi next() generator, seperti ini: player.collect(next(recipe)). Lalu berjalanlah ke tanda X emas di sebelah tanda dan gunakan fungsi speak() untuk mendapatkan angka jumlah yang dibutuhkan untuk generator menghasilkan roti dan tuliskan dalam generator. Data ini disimpan dalam konstanta bernama "sign" dan akan dipanggil seperti ini: player.speak(sign).
Setelah semua nilai dimasukkan ke dalam generator, masuklah ke fasilitas dan gunakan player.place(next(recipe)) pada tanda X gelap dan player.collect(next(recipe)) pada tanda X terang untuk menyelesaikan level.