Coding for KidsCoding for Kids
ระดับสร้างสรรค์ความท้าทายคู่มือครู
โหวตสำหรับฟีเจอร์
หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ

ตัวสร้าง
ส่งข้อมูลไปยัง Generator

เป้าหมาย

เก็บขนและปั่นให้เป็นด้ายโดยการส่งข้อมูลเข้า generator ผ่านก้านหมุน

แกะบางตัวมีขนอุดหนุนเกินไป ควรตัดขนและเก็บขนของพวกมันไว้ จากนั้นคุณสามารถนำขนที่ได้ผ่านก้านหมุนเพื่อผลิตด้าย ในการดำเนินการนี้เราจำเป็นต้องใช้ generator เนื่องจากปริมาณด้ายและขนที่ผ่านกระบวนการอาจแตกต่างกันอย่างมาก

เริ่มต้นด้วยการนิยาม generator ที่สามารถปั่นด้ายได้ โดยตั้งชื่อว่า spin() ซึ่ง generator นี้จำเป็นต้องถูกตั้งค่าให้ใช้ข้อมูลภายนอกเพื่อทำงาน โดยมันจะอ่านข้อมูลจาก yield และนำไปเก็บไว้ในตัวแปร แล้วปรับเปลี่ยนเนื้อหาของมันโดยการเพิ่มความยาวในแต่ละรอบ สุดท้ายจึงผลิตผลลัพธ์ออกมา

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

เนื่องจากนี่คือ generator คำสั่ง while() ภายในสามารถถูกหยุดชั่วคราวและปรับเปลี่ยนเพื่อผลิตเอาท์พุตที่เราต้องการ ระดับของการควบคุมนี้คือหัวใจของสิ่งที่ generator คือและมีประโยชน์อย่างไรในการประมวลผลข้อมูล

เพื่อแทรกข้อมูลเข้าไปใน generator ให้กำหนดมันและใช้ฟังก์ชัน send() เพื่อป้อนข้อมูลใด ๆ ที่คุณต้องการ ตัวอย่างเช่น:

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

เดินไปยังจุดที่มีแสง X ถูกทำเครื่องหมายด้วยพื้นพรมที่มีสี และเผชิญหน้ากับแกะ มีคอนสแตนท์ชนิด dictionary ชื่อ sheep ซึ่งเก็บค่าของขนที่คุณสามารถตัดได้จากแกะแต่ละตัว ใช้ฟังก์ชัน speak() พร้อมกับ dictionary และสีของพรมที่คุณยืนอยู่ เพื่อทำการตัดขนแกะและตรวจสอบจำนวนที่คุณเก็บได้ ตัวอย่างเช่น: player.speak(sheep["green"])

มีพรมสีทั้งหมดสี่ (4) สี ได้แก่ "green" , "red" , "blue" และ "orange" เมื่อคุณได้ตัดขนแกะแล้ว ให้เดินไปยังจุดที่มีเครื่องหมาย X สีเข้มในแต่ละพรมที่มีสีซึ่งมีการติดตั้งก้านหมุน ใช้ send() เพื่อส่งจำนวนปอนด์ของขนที่ถูกตัดจากแกะในแต่ละสีเข้าสู่ generator

ตัวอย่างเช่น ถ้าเมื่อทำการตัดขนแกะบนพรมสี "green" คุณตัดได้ 4 ปอนด์ของขน ให้ไปยังพรมสี "green" ที่ก้านหมุนและส่งข้อมูลนั้นเข้าไปใน generator ดังนี้:

next(spindle) spindle.send( 4)

ทำเช่นนี้สำหรับเครื่องหมาย X สีเข้มทั้งสี่ (4) บนพรมที่มีสีเพื่อให้ระดับนี้สมบูรณ์

หนังสือโค้ด