קורס פיתוח מתקדם בפייתון
פרק
>
רמה
אסינכרוני/להמתין
הגדרת שאלה
מטרה
אסוף חומרים שונים מהמטבח והכן אותם לבישול על ידי הגדרת “שאלות”.
קיימים חומרים שונים מהמטבח ומהאוכל שיש להגדיר ולהכין לשימוש ולצריכה בהמשך. כדי להקל על כך תוכל להגדיר פונקציה question(), שהיא פונקציה אסינכרונית בדומה ל-write(), אך במקום להציג הודעה סטטית, תוכל להציג שאלה עם אפשרויות “כן” ו**“לא”**.
כדי להגדיר את פונקציית question() עליך גם להגדיר פונקציה מותאמת אישית לטיפול בתנאים. פונקציה זו חייבת להתחיל במילה async כדי להכריז עליה כפונקציה אסינכרונית. בתוך הפונקציה, פונקציית question() מאוחסנת בתוך משתנה והפונקציה כוללת את המילה await לפני, כמו הפונקציות האסינכרוניות האחרות. כארגומנט, פונקציית question() מקבלת מחרוזת עם השאלה שברצונך לשאול.
async def question_function():
answer = await player.question("Question you would like to ask")
if answer:
# Actions to take if answer is Yes
else:
# Actions to take if answer is No
בתוך הפונקציה תהיה הצהרת if שמחליטה איזו פעולה לבצע אם התשובה היא true או false. הפונקציות המותאמות אישית לשאלות יוגדרו בעורך הקוד ויאפשרו לך לאסוף ו/או למקם פריטים רבים ממקור יחיד.
הפריטים שעליך להכין במטבח הם: "water", "ice", "meat" ו-"potato". פריטים אלו צריכים להיות נאספים וממוקמים באזורים שונים במטבח. את "ice" יש למקם בתוך מקפיא, את "water" יש לשים בתוך הסיר, ואת "meat" ו-"potato" שניהם יש למקם בתוך תנורים שונים.
ראשית, לך לסימן ה-X הזהוב בחדר הימני והשתמש בפונקציה המותאמת אישית await dispencer() כפי שמפורט בעורך הקוד. פנה אל תיבת הקרח והשתמש בפונקציה פעמיים (2). היא תציג שאלה ויש לענות Yes כדי ל-collect() את "ice" ו-No כדי ל-collect() את "water".
לאחר שאספת את שני הפריטים הללו, לך לסימן ה-X הכהה שנמצא לידך, מול המקפיא, והשתמש בפונקציה place() כדי להפקיד את "ice" בתוך המקפיא. כך: player.place("ice"). לאחר מכן, לך לסימן ה-X הבהיר מול שק ובצע את פעולת collect() כדי לאסוף את "potato", כך: player.collect("potato").
לאחר מכן, לך לסימן ה-X הכהה ליד הסיר המרכזי והשתמש ב-place() להפקיד את "water" שאספת, כך: player.place("water"). כשתסיים, לך לסימן ה-X הבהיר מעליו, מול המקרר, ואסוף את "meat" באופן הבא: player.collect("meat").
כעת, לאחר שאספת את "meat" ו-"potato", לך לשני סימני ה-X הזהובים בחדר השמאלי והשתמש בפונקציה המותאמת אישית await oven() כפי שכתובה בעורך הקוד. עבור השאלה, בתנור הימני עליך לבחור בתשובה לאפיית "potato" ועבור התנור השמאלי עליך לבחור בתשובה לגריל את "meat" כדי להשלים את הרמה.