Coding for KidsCoding for Kids
Tahap KreatifCabaranPanduan Guru
Undi untuk ciri
Kursus Pembangunan Python Lanjutan
Bab
>
Tahap

Penjana
Menghantar data kepada penjana

Objektif

Kumpulkan bulu dan putarkan menjadi benang menggunakan spindle dengan menghantar data ke dalam generator.

Beberapa ekor biri menjadi terlalu berbulu, adalah lebih baik untuk mencukur mereka dan mengumpul bulu mereka. Anda kemudian boleh memasukkan bulu itu melalui spindle untuk menghasilkan benang. Untuk mencapai ini, kita perlu menggunakan generator kerana jumlah benang dan bulu yang diproses boleh berbeza-beza dengan ketara.

Pertama, definisikan sebuah generator yang mampu memintal benang, dengan menamakannya spin(). Generator ini perlu disediakan untuk menggunakan input luaran bagi beroperasi. Ia membaca data dari yield dan menyimpannya dalam sebuah pembolehubah, kemudian mengubah kandungannya dengan menambah panjangnya dengan setiap kitaran, akhirnya menghasilkan satu keputusan.

def spin(): cycle = 1 while True: cycle += 1 yarn = yield yarn = yarn * cycle yield player.speak("You've spun %d ft of yarn" % (yarn))

Oleh kerana ini adalah sebuah generator, pernyataan while() di dalamnya boleh dihentikan seketika dan diubah untuk menghasilkan output yang kita inginkan. Tahap kawalan inilah yang merupakan inti kepada apa itu generator dan bagaimana ia berguna ketika memproses data. Untuk memasukkan data ke dalam generator, definisikan ia dan gunakan fungsi send() untuk memberinya apa-apa data yang anda inginkan, contohnya:

spindle = spin() # Create an instance of the generator next(spindle) # Run the generator a single step spindle.send(6) # Insert data into the generator # In this case you're sending it the number 6

Berjalan ke arah cahaya di mana X menandakan di atas permaidani berwarna dan hadapi biri. Terdapat kamus tetap yang dinamakan sheep yang menyimpan nilai berapa banyak bulu yang boleh anda cukur pada setiap biri. Gunakan fungsi speak() bersama dengan kamus dan warna permaidani yang anda berdiri di atasnya, untuk mencukur bulu biri dan periksa berapa banyak yang telah anda kumpulkan. Contohnya: player.speak(sheep["green"]).

Terdapat empat (4) permaidani berwarna keseluruhannya: "green", "red", "blue" dan "orange". Setelah anda mencukur biri, berjalan ke arah X gelap yang menandakan di setiap permaidani berwarna di mana spindle berada. Gunakan send() untuk memasukkan nombor paun bulu yang dicukur dari setiap biri mengikut warna masing-masing ke dalam generator.

Contohnya, jika ketika mencukur biri di permaidani "green", anda mencukur 4 paun bulu, pergi ke permaidani "green" di mana spindle berada dan hantar data itu ke dalam generator, seperti berikut:

next(spindle) spindle.send( 4)

Lakukan ini untuk semua empat (4) X gelap di permaidani berwarna bagi melengkapkan tahap.

Buku Kod