دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
الدوال المتقدمة
دوال الوسائط المتغيرة
الهدف
التقط جميع المواد الاستهلاكية داخل المخزن وقم بتعبئتها في حاويات التخزين باستخدام دوال الوسائط المتغيرة.
هناك العديد من المواد الغذائية الموجودة داخل المخزن التي يجب تعبئتها من أجل شحنها للبيع. للقيام بذلك بكفاءة، يمكنك إنشاء دوال مخصصة بعدد متغير من المعاملات. هذه الدوال لا تملك عددًا محددًا من المعاملات وتتيح لك تحديد العدد الذي تحتاجه لتنفيذ إجراءات الدالة.
هناك طريقتان (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) أنواع مختلفة من العناصر في الميدان: "jars" , "eggs" , "berries" و "fruit". اجمع كل العناصر في المخزن وتوجه نحو علامات X في ممر الشحن. توجه إلى علامات X الداكنة واستخدم دوال pack_singles لتعبئة "jars" و "eggs".
بالنسبة لـ "jars" هناك أربعة (4) أنواع تقوم بجمعها ويتم إدخالها كمعاملات، وهي: "white", "purple", "red" و "brown". يجب تخزينها في الحاوية الموجودة بجوار السجادة الخضراء. يتم كتابة الكود على النحو التالي: pack_singles("jars", "white", "purple", "red", "brown")
بالنسبة لـ "eggs" هناك ثلاثة (3) أنواع تقوم بجمعها ويتم إدخالها كمعاملات، وهي: "white", "green" و "blue". يجب تخزينها في الحاوية الموجودة بجوار السجادة البرتقالية. يتم استخدام نفس التنسيق كما في الإعداد السابق.
بعد ذلك، توجه إلى علامات X الفاتحة واستخدم دالة pack_multi لتعبئة "berries" و "fruit". بالنسبة لـ "berries" هناك ثلاثة (3) أنواع تقوم بجمعها ويتم إدخالها كمعاملات، وهي: "red", "blue" و "purple". يجب تخزينها في الحاوية الموجودة بجوار السجادة الزرقاء. تحتاج إلى إضافة الكميات التي تجمعها من كل منها، مثل هذا: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )
بالنسبة لـ "fruit" هناك أربعة (4) أنواع تقوم بجمعها ويتم إدخالها كمعاملات، وهي: "apple", "pear", "orange" و "peach". يجب تخزينها في الحاوية الموجودة بجوار السجادة الحمراء. استخدم نفس التنسيق كما في الإدخال السابق، وتأكد من جمع وتخزين جميع العناصر لاستكمال المستوى.