קורס פיתוח מתקדם בפייתון
פרק
>
רמה
פונקציות מתקדמות
פונקציות מקוננות
מטרה
אסוף, הפץ ושמור את הבד שיוצר המכונות באמצעות פונקציות מקוננות.
לפעמים תצטרך לשים פונקציות בתוך פונקציות אחרות כדי להרחיב את יכולת הפונקציה. אלו נקראות פונקציות מקוננות או פונקציות פנימיות, ויש להן שימושים שונים, החל מיצירת קוד פשוט לשימוש חוזר בתוך פונקציה ועד להגנה על הפונקציות שלך מפני מניפולציות חיצוניות.
בתוך הסדנה ישנן מספר מכונות לייצור בד, חלק מהן כוללות בד שמוכן לאחסון, אחרות דורשות חוט להשלמת ייצור הבד. לכל אחת יש לפניו או שטיח "red" או "green", אשר יסמן כיצד יש להשתמש בה. בעורך הקוד תיכתב פונקציה שתאפשר לנו להפעיל את המכונה ולאסוף או להניח חומרים מהמכונה.
def operate_machine(color):
def collect_cloth():
# Collect Code
player.speak("Cloth is ready for storage")
def place_thread():
# Place Code
player.speak("Machine needed more materials")
if color == "green":
collect_cloth()
if color == "red":
place_thread()
הפונקציה נקראת operate_machine ומקבלת ארגומנט בשם color. בהתאם לצבע השטיח שמול המכונה, הזנה של "red" או "green" כארגומנט תשנה את פעולת המכונה ותאפשר לך להניח או לאסוף פריטים.
בתוך הפונקציה תמצא שתי פונקציות מקוננות, בשם collect_cloth() ו- place_thread() המשמשות למטרות שמצוינות בשמן. חסרות להן השורות הדרושות לביצוע הפעולה שלהן, בפונקציה collect_cloth() הוסף את השורה player.collect("cloth") אשר באה בעקבותיה player.speak("Quilt is ready for storage") ובפונקציה place_thread() הוסף את השורה player.place("thread") אשר באה בעקבותיה player.speak("Machine needed more materials").
ברגע שהוספת את השורות החסרות לקוד לתוך הפונקציות המקוננות, עבור אל סימן ה-X הבהיר שמול הקופסה ואסוף "thread" שישמש במכונה, כך: player.collect("thread").
עבור אל סימני ה-X הכהים בתוך הסדנה והשתמש בפונקציה המותאמת אישית operate_machine כאשר אתה פונה למכונות. הוסף כארגומנט או "red" או "green", בהתאם לצבע השטיח שבו נמצא סימן ה-X, לדוגמה: operate_machine("red"). זה יאפשר לך להניח את החוט ולאסוף את הבד.
ברגע שאספת את כל הבד, עבור אל סימן ה-X הזהב שמול הקופסה מאחור והשתמש בפונקציה place() כדי לאחסן את הבד. צור משתנה בשם cloths, הוסף אליו את מספר הבדים שאספת ואחסן אותו בקופסה כדי להשלים את השלב, כך: player.place(cloths).