หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ
ฟังก์ชันขั้นสูง
ฟังก์ชันพหุรูป
ในบทนี้เราจะสำรวจฟังก์ชันแบบใหม่ ๆ การใช้งานที่หลากหลายสำหรับฟังก์ชันเหล่านี้ และวิธีการใช้งานให้เกิดประโยชน์สูงสุดเมื่อเขียนโค้ดด้วย Python.
ในเลเวลนี้ เราจะเริ่มต้นด้วยฟังก์ชัน polymorphic ซึ่งเป็นฟังก์ชันที่สามารถใช้กับข้อมูลชนิดต่างๆ ได้หลายแบบ นั่นคือการใช้ฟังก์ชันเดียวกันเพื่อทำสิ่งต่างๆ กัน ซึ่งเป็นฟังก์ชันแบบสากล

วัตถุประสงค์
ตรวจสอบสถานะของพืชผลและลูกหมู และยืนยันการจัดส่งอุปทานโดยใช้ฟังก์ชันพหุรูป
ในไม่ช้า ควรจะมีพืชผลบางส่วนที่ต้องเก็บเกี่ยวเพื่อที่จะได้ส่งออกเพื่อขาย ลูกหมูก็ต้องได้รับการส่งอาหารด้วย จึงเป็นความคิดที่ดีที่จะพิจารณาว่าต้องสั่งอาหารมากน้อยเพียงใด
ในการทำงานเหล่านี้ คุณสามารถใช้ฟังก์ชันพหุรูปได้ ในกรณีนี้เราจะใช้ฟังก์ชัน len()
ฟังก์ชันพหุรูปคือฟังก์ชันที่สามารถใช้งานร่วมกับข้อมูลชนิดต่าง ๆ ได้ ตัวอย่างเช่น ฟังก์ชัน len() ใช้สำหรับคำนวณความยาวของวัตถุ ซึ่งวัตถุเหล่านี้สามารถเป็นข้อมูลชนิดต่าง ๆ เช่น list, dictionary และแม้แต่ string
เริ่มต้นโดยการนับจำนวนที่เครื่องหมาย X สีเข้มด้านล่างในทุ่ง ก่อนที่จะไปที่เครื่องหมาย X สีอ่อนในโรงเรือน
ภายในสนามที่อยู่ติดถนนมีลูกหมูหลายตัว ชื่อของพวกมันคือ "Peggle", "Peter", "Piper", "Pedro" ให้นำชื่อของพวกมันใส่ใน list เพื่อที่คุณจะได้นับจำนวน เช่นนี้: piglets = ["Peggle", "Peter", "Piper", "Pedro"]
สร้างตัวแปรชื่อ number เพื่อเก็บความยาวของ list โดยใช้ฟังก์ชัน len() เช่นนี้: number = len(piglets)
เมื่อคุณตั้งค่า list และตัวแปรเรียบร้อยแล้ว ให้ออกเดินไปที่เครื่องหมาย X สีเข้มด้านหน้าสนามลูกหมู หันหน้าเข้าหาสนามและใช้ฟังก์ชัน speak เพื่อ นับจำนวนลูกหมูโดยใช้ฟังก์ชัน speak() ใช้ตัวแปร number เพื่อแสดงผล เช่นนี้: player.speak("There are d% Piglets" % (number) )
หลังจากที่คุณตรวจสอบลูกหมูเสร็จแล้ว ให้ออกเดินไปที่เครื่องหมาย X สีอ่อนด้านทุ่ง หันหน้าเข้าหาพืชผลและนับพืชผลเหล่านั้น
มีพืชผล 3 ประเภท ได้แก่ "Tomatoes", "Pumpkins", "Eggplant". นับจำนวนพืชผลที่เติบโตของแต่ละชนิดและเก็บไว้ใน dictionary เช่นนี้:
crops = {} crops["Tomato"] = number of tomato crops crops["Pumpkin"] = number of Pumpkin crops crops["Eggplant"] = number of Eggplant crops
เมื่อคุณได้เติม dictionary ด้วยค่าที่ถูกต้องแล้ว ให้ใช้ฟังก์ชัน speak() ควบคู่กับฟังก์ชัน len() เพื่อคำนวณจำนวนประเภทของพืชผลที่มีอยู่ เช่นนี้: player.speak("There are d% types of crops" % ( len(crops) ) )
เมื่อคุณได้นับลูกหมูและพืชผลแล้ว ให้ออกเดินไปที่เครื่องหมาย X สีเข้มบนพรมสีม่วงเพื่อดูคำสั่งซื้อพืชผลที่จะส่งออก
มีค่าคงที่ตัวแปรชื่อ order ซึ่งเก็บ string ที่ประกอบด้วยคำสั่งซื้อพืชผลที่จะส่งออก
เราจำเป็นต้องตรวจสอบคำสั่งซื้อคืออะไรและมีคำสั่งซื้อทั้งหมดจำนวนเท่าใด โดยสามารถทำสิ่งนี้ได้โดยใช้ฟังก์ชัน speak() และการแยก string รวมถึงการใช้ฟังก์ชัน len()
player.speak( [*order] ) player.speak("There are d% orders of crops going out" % ( len(order) ) )
โดยการใส่ตัวแปร string ลงในวงเล็บและมี * เราสามารถใช้ตัวดำเนินการแยก string ได้ ตัวอย่างเช่น: [*string] สิ่งที่ทำคือการนำ string แยกออกเป็นตัวอักษรแต่ละตัวและนำมารวมอยู่ใน list โดยตัวอย่าง [*string] จะได้ผลลัพธ์เป็น list ['s', 't', 'r', 'i', 'n', 'g']. ในกรณีที่ใช้ len() กับ string มันจะนับจำนวนอักขระใน string นั้น
เพื่อสรุปแบบฝึกหัด ให้ออกเดินไปที่เครื่องหมาย X สีทองด้านขวาของโรงเรือน และตรวจสอบว่าต้องส่งมอบอาหารให้ลูกหมูกี่ปอนด์
สร้างตัวแปรชื่อ food โดยใช้ค่าจากตัวแปร number ที่คุณสร้างไว้ก่อนหน้านี้คูณกับ 35 เพื่อคำนวณจำนวนปอนด์ เช่นนี้: food = number * 35
ขณะที่หันหน้าเข้าหาโรงเรือน ให้ใช้ฟังก์ชัน speak() ควบคู่กับตัวแปร food เพื่อแสดงจำนวนอาหารที่จัดส่งเข้ามา เช่นนี้: player.speak("There are d% pounds of food coming in" % (food) )