קורס פיתוח מתקדם בפייתון
פרק
>
רמה

טיפול בחריגות
התאמה אישית של מחלקות חריגה

מטרה

ודא שמי הגשם שנאספו מעובדים ומועברים בצורה נכונה על ידי התאמה אישית של מחלקות החריגה.

בקצה הרחוק של קומפלקס הגגות נמצא מיכל למי גשם שנאספו, כאשר מים אלו מסוננים ומועברים ברחבי הבניין למטרות שונות. כמה שסתומים על הקיר העליון שולטות בלחץ המים הזורם, ובינתיים, חדר האחסון האחרון מכיל מספר מחממי מים. הפעלת המכונות יכולה להיות מסובכת, אך ניתן לייעל את פעולתן בצורה נכונה על ידי פירוט קודי השגיאה והגדרת אמצעי מניעה יעילים. זאת מושגת על ידי התאמה אישית של מחלקות החריגה אשר אתה יוצר לחריגות מותאמות אישית.

ישנן שתי מחלקות חריגה מותאמות שמוגדרות בעורך הקוד; היכולת שלך להשתמש בהן תהיה חיונית בפתרון בעיות במכשירים שתיתקל בהם. הראשונה היא חריגה לטיפול בבעיות לחץ המים. היא מיועדת לשימוש עם השסתומים כדי להבטיח שהמים זורמים כראוי אל תוך הקומפלקס או כדי להתאים את הלחץ במידת הצורך. תלוי אם הלחץ מתחת ל־100 או מעל 300, ננקטת פעולה שונה על ידי החריגה; לחץ המים הוא ארגומנט שהמשתמש חייב לספק. כאשר מופעלת, מוצגת התראה מותאמת עם קוד שגיאה והודעה.

class PressureError(Exception): def __init__(self, pressure, message="Water pressure is offset, pressure is: ", error_code=404): self.pressure = pressure self.message = message self.error_code = error_code super().__init__(self.message) async def eval(self): await player.display("[Error: %s {%s %s}]" % (self.error_code , self.message, self.pressure)) if self.pressure < 100: return ("Valve has been closed") if self.pressure > 360: return ("Valve has been opened")

המחלקה השנייה של חריגה מותאמת מיועדת לוויסות הטמפרטורה במחממי המים. אם הטמפרטורה נמוכה מדי או גבוהה מדי, עליך להזין טמפרטורה חדשה כארגומנט כדי לתקן את השגיאה כאשר היא מתרחשת.

class TemperatureError(Exception): def __init__(self, temp, message="Temperature is not appropiate, enter new temperature: ", error_code=808): self.temp = temp self.message = message self.error_code = error_code super().__init__(self.message) async def eval(self): await player.display("[Error: %s {%s %s}]" % (self.error_code , self.message, self.temp)) return ("Temperature Corrected")

בתחילה, גש לסימן X הקל מעל השטיח הירוק ופנה אל הטנק עם השסתום. קיימים ארבעה (4) שסתומים המווסתים את לחץ המים הנשאב מהמיכל. קיימים ארבעה קבועי משתנים: green_pressure, red_pressure, blue_pressure ו-orange_pressure, השומרים את לחץ כל אחד מהטנקים עבור השטיחים בצבעים התואמים.

על כל סימני X הקלים, השתמש ברצפי הקוד try/except ו-else כדי לוודא שהלחץ בכל טנק הוא נאות. אם הלחץ נמוך מ־100 או מעל 300, יש להפעיל את החריגה המותאמת PressureError ולהעביר את הלחץ כארגומנט. כאשר היא מופעלת, תציג הודעת שגיאה עם קוד השגיאה והנחיות לתיקון, אחרת תופעל סעיף ה-else המאשר שהלחץ בטנק הוא מתאים. לדוגמה:

try: if green_pressure < 100 or green_pressure > 360: raise PressureError(green_pressure) except PressureError as x: error = await x.eval() player.speak(error) else: player.speak( "Pressure is appropriate" )

יש לבצע זאת על כל סימני X הקלים, תוך שימוש בקבועי המשתנים התואמים לכל אחד מהשטיחים הצבעוניים ולאמת או לכוון את שסתומי הלחץ בהתאם לצורך.

ברגע שתסיים, גש לסימן ה-X הזהוב והשתמש בפונקציה open() כדי לגשת לחדר האחסון עם מחמם המים. בתוך החדר, גש לסימן ה-X הזהוב הנמצא בו והשתמש בפונקציה read() כדי לקרוא את הפתק שעל הדלפק. פתק זה יספק לך מידע אודות הטמפרטורה האידיאלית לכל אחד ממחממי המים.

ברגע שיש בידך את המידע לגבי כל הטמפרטורות, גש לסימן ה-X הכהה שעל השטיח הסגול. כאן נשתמש ברצף הקוד try/except ו-else כדי לוודא שמחממי המים מופעלים בטמפרטורה הנכונה. קיימים ארבעה (4) קבועי משתנים נוספים הקשורים לשטיחים הצבעוניים: purple_temperature, yellow_temperature, pink_temperature ו-white_temperature.

ברצף נבדוק אם הטמפרטורה נמוכה מ־100; במקרה שכן, נפעיל את חריגת TemperatureError. כחריגה מותאמת אישית, היא מקבלת ארגומנט, ובמקרה זה עליך להזין את הטמפרטורה שנקראה בפתק על מנת להפעיל את אמצעי התיקון של החריגה כהלכה. לדוגמה:

try: if purple_temperature < 100: raise TemperatureError(120) except TemperatureError as x: error = await x.eval() player.speak(error) else: player.speak( "Temperature is ok" )

יש לבצע זאת עבור כל מחמם מים. בכל סימן X, כאשר אתה פונה למחממים, הפעל את הרצף תוך שימוש בקבועי המשתנים התואמים לשטיחים הצבעוניים המתאימים כדי להשלים את השלב.

ספר קוד