קורס פיתוח מתקדם בפייתון
פרק
>
רמה
מחלקות מתקדמות
העמסת אופרטורים
מטרה
חשבו כמה יין עובר תהליך הבהרה על ידי שימוש בווקטורים ובעומס מפעילים.
לאחר הלחיצה של היין, יש לסנן ולהבהיר אותו. מספר חביות עוברות סינון וכל החביות צריכות להישטף. חשוב לספור כמה יין מיוצר כדי שניתן יהיה לאטום את החביות ולהביא אותן לתהליך ההתבגרות.
כדי לעשות זאת, עליכם ליצור וקטורים ולהוסיף אותם יחד. וקטורים דומים לרשימות אך אינן גמישות באותה מידה ובעלות יעילות זיכרון גבוהה יותר. הם משמשים בדרך כלל לטיפול בקואורדינטות, ובמקרה זה נשתמש בהם כמשתנים שמחזיקים יותר מערך אחד. הוספת הווקטורים מתבצעת באמצעות עומס מפעילים, שמרחיב את הפונקציונליות של אובייקטי המחלקה כדי לאפשר שימוש במפעילים איתם כאילו היו ערכים רגילים.
כדי להתחיל, צאו ואספו את פחי המתכת למים השוכנים בחלק העליון של החדר. הם ישמשו לעזור לשטוף את היין שעובר סינון בחביות. לאחר איסופם, לכו לסמל ה-X הכהה שעל השטיח האדום, פני את החבית והתחילו ליצור וקטור מהתכולה של כל חבית.
סמלי ה-X מסודרים בקבוצות של שלושה (3) עבור כל שטיח צבעוני: X זהב, X בהיר ו-X כהה. על כל סמלי ה-X הכהים והבהירים השתמשו בפונקציה water() כדי לסייע בשטיפת החביות. כמו כן, על כל סמלי ה-X הכהים והבהירים, השתמשו בפונקציה read() כדי לזהות כמה יין מעובד בעמודת החביות הזו. על סמל ה-X הזהב יש להשתמש בפונקציה write() כדי לרשום את סכום הספירה הכולל.
בעורך הקוד קיימת מחלקה בשם vector, המשמשת לא רק ליצירת וקטור אלא גם לחיבורו. צרו אובייקטי vector לאחסון הנתונים שזוהו על סמלי ה-X הבהירים והכהים. לדוגמה, בשטיח האדום, מעובד יין אדום:
# Create object using data from dark X mark red_wine_dark = vector(345, 272) # Create object using data from light X mark red_wine_light = vector(248, 432) # Add together vectors for totals red_wine_total = red_wine_dark + red_wine_light
בווקטור, המיקום הראשון נקרא x והשני y, והנוסחה היא כזו: object_name = vector(x,y). זה רלוונטי לאכלוס הווקטורים במידע שנאסף באמצעות הפונקציה read().
על סמלי ה-X הזהב, השתמשו בפונקציה write() כדי לרשום את הסך הכולל עבור כל קבוצת וקטורים. לדוגמה, במקרה של סמלי ה-X על השטיח האדום זה נכתב כך:
await player.write( "There is a total of %s pounds on the left barrels and %s pounds on the right barrels" % (red_wine_total.x, red_wine_total.y)
זכרו להוסיף .x ו-.y בסוף הסך כדי לזהות את הערכים של כל וקטור.
לכל קבוצת שטיחים צבעוניים יש סוג שונה של יין שעובר סינון. על השטיח האדום, מעובד red_wine; על השטיחים הצהובים, מעובד sparkling_wine; על השטיחים הירוקים, מעובד white_wine; ועל השטיחים הכתומים, מעובד orange_wine.
לאחר שכל סמלי ה-X הבהירים והכהים נשטפו בעזרת הפונקציה water() וכל הסמנים על סמלי ה-X הזהב רשמו את הסכומים הכוללים, תסיימו את השלב.