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

ฟังก์ชันขั้นสูง
ฟังก์ชันอาร์กิวเมนต์แบบแปรผัน

วัตถุประสงค์

จับสิ่งของที่ใช้ได้ทั้งหมดภายในโกดังและบรรจุในภาชนะจัดเก็บโดยใช้ฟังก์ชันที่มีอาร์กิวเมนต์แปรผัน

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

มีสอง (2) วิธีในการเพิ่มจำนวนอาร์กิวเมนต์แปรผันให้กับฟังก์ชัน ขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ วิธีแรกคือการสร้างรายการอาร์กิวเมนต์ แทนที่จะใส่ชื่ออาร์กิวเมนต์หลาย ๆ ตัวให้ใส่เครื่องหมาย * ด้านหน้าชื่ออาร์กิวเมนต์ตัวเดียว ซึ่งจะสร้างรายการโดยอัตโนมัติ

def custom_function(message,*arguments): player.speak(message) return(arguments) value = custom_function("lalala","one","two","three") # The message "lalala" is printed on screen # Value now returns the list ("one","two","three")

วิธีที่สองคือการวางอาร์กิวเมนต์ภายในพจนานุกรมแทนการสร้างรายการ วิธีนี้ทำในลักษณะเดียวกับวิธีก่อนหน้าแต่แทนที่จะใส่เครื่องหมาย * ตัวเดียว ให้ใส่เครื่องหมาย ** สองตัว ซึ่งจะสร้างพจนานุกรมโดยอัตโนมัติแทนรายการ

def custom_function(message,**arguments): player.speak(message) return(arguments) value = custom_function("lalala", one = 1, two = 2, three = 3) # The message "lalala" is printed on screen # Value now returns the dictionary: # {'one': 1, 'three': 3, 'two': 2}

ในการบรรจุรายการทั้งหมดสำหรับการขนส่ง ให้สร้างฟังก์ชันที่กำหนดเองสองชุด คือชุดสำหรับบรรจุรายการเดี่ยวและชุดสำหรับบรรจุรายการหลาย ๆ รายการเข้าด้วยกัน ใช้อาร์กิวเมนต์แปรผันในการบรรจุรายการที่หลากหลายเข้าด้วยกันโดยไม่ต้องสร้างฟังก์ชันมากเกินไป

def pack_singles(name,*items): length = len(items) player.speak("There are %d types of %s, those being:" % (length, name) ) player.speak(items) player.place(items) def pack_multi(name,**items): length = len(items) player.speak("There are %d types of %s, those being:" % (length, name) ) player.speak(items) player.place(items)

มีรายการ 4 (4) ประเภทที่แตกต่างกันในสนาม: "jars" , "eggs" , "berries" และ "fruit". รวบรวมรายการทั้งหมดในโกดังแล้วเดินไปยังเครื่องหมาย X บนเส้นทางการขนส่ง เดินไปยังเครื่องหมาย X สีเข้มแล้วใช้ฟังก์ชัน pack_singles เพื่อบรรจุ "jars" และ "eggs"

สำหรับ "jars" มี 4 (4) ประเภทที่คุณรวบรวมและป้อนเป็นอาร์กิวเมนต์ ได้แก่ "white", "purple", "red" และ "brown". สิ่งเหล่านี้จะถูกบรรจุในภาชนะโดย green carpet. โค้ดจะถูกเขียนดังนี้: pack_singles("jars", "white", "purple", "red", "brown")

สำหรับ "eggs" มี 3 (3) ประเภทที่คุณรวบรวมและป้อนเป็นอาร์กิวเมนต์ ได้แก่ "white", "green", และ "blue". สิ่งเหล่านี้จะถูกบรรจุในภาชนะโดย orange carpet. ใช้รูปแบบเดียวกันกับการตั้งค่าก่อนหน้า

จากนั้นเดินไปยังเครื่องหมาย X สีอ่อนและใช้ฟังก์ชัน pack_multi เพื่อบรรจุ "berries" และ "fruit". สำหรับ "berries" มี 3 (3) ประเภทที่คุณรวบรวมและป้อนเป็นอาร์กิวเมนต์ ได้แก่ "red", "blue", และ "purple". สิ่งเหล่านี้จะถูกบรรจุในภาชนะโดย blue carpet. คุณต้องระบุปริมาณที่คุณรวบรวมของแต่ละรายการดังนี้: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )

สำหรับ "fruit" มี 4 (4) ประเภทที่คุณรวบรวมและป้อนเป็นอาร์กิวเมนต์ ได้แก่ "apple", "pear", "orange", และ "peach". สิ่งเหล่านี้จะถูกบรรจุในภาชนะโดย red carpet. ใช้รูปแบบเดียวกันกับการตั้งค่าก่อนหน้า ตรวจสอบให้แน่ใจว่ารายการทั้งหมดถูกรวบรวมและบรรจุเพื่อที่จะผ่านด่านนี้

หนังสือโค้ด