פעולות קסם - אין לזה צורה

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

עכשיו כדי לקבוע את אורך ההיקף זה פשוט sum של הtuple שמתקבל מהחיסור. אבל השטח זה המכפלה של האיברים… במקרה זה, מדובר בשני איברים ולכן ניתן לכתוב במפורש - להחזיר את מכפלת האיבר הראשון בשני.
מדובר בכתיבה מסורבלת, אשר לא מקצרת את הדרך במיוחד, (וזה הרי מטרת ההגדרה מחדש של פעולת הקסם).
אז השאלה הקטנה היא - האם יש פונקציה מובנית כדי לקבל את מכפלת האיברים בטופל? בחיפוש זריז מאוד לא מצאתי.
והגדולה היא: איך אפשר לייפות את הקוד יותר? ההגדרה מחדש של פעולת הקסם רק הוסיפה שורות בפועל - 1. פונקציית החיסור עצמה שהוגדרה מחדש. 2. משתנה שמקבל את ערכי החיסור, בתוך get_surface וget_perimeter, וגם במילא צריך להחזיר את מכפלת / סכום האיברים, בכל אחת מהפונקציות.

  1. טיפ לקבלת יותר תשובות – הפרד את השאלות ל־bullets ממוקדים היטב, קשה למדריך שצריך לעבור על 20 פוסטים לחלץ מידע מבלוק גדול של מלל :slight_smile:
  2. בבקשה לא לפרסם פה פתרונות.

בכ"מ אהבתי את הסקרנות ואת הרצון להרחיב, אז לעניין.

אפשר עם functools.reduce, אבל לא נשמע לי שזה מה שאתה מחפש. תוכל לממש מבנה נתונים שיחליף את ה־tuple, אבל גם זה קצת מסורבל ו־overheadי.

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

תודה!
(וסליחה על הפתרון, סתם הנחתי שמדובר בחלק שולי מאוד מהקוד, פעם הבאה אחסוך זאת…)
אני מבין את מה שכתבת בנוגע לייפוי הקוד, שוב תודה:)

לייק 1