נתקלתי בבעיה מוזרה בהרצת הקוד של שני התרגילים האלה
בשניהם אני ניגשת לאיבר מתוך ה tuple
בתרגיל של מימוש max אני רוצה להשוות אותו למשתנה עזר התחלתי ולשמור את הערך הגדול מביניהם,
בתרגיל סולל דרך אני רוצה לחבר את המחרוזת למחרוזת נוספת,
בשני המקרים אני מקבלת הודעות שגיאה שכאילו לא מתייחסות ל type של האיבר עצמו אלא לכל ה tuple
אחרי המון נסיונות להבין מה קורה השוותי את תרגיל מימוש פונקציית ה max עם תלמידה נוספת והיא פתרה באותו אופן כמוני ואצלה זה רץ בסדר
בתרגיל מימוש max הודעת השגיאה היתה:
not supported between instances of ‘tuple’ and 'int
ובסולל דרך
can only concatenate tuple (not “str”) to tuple
אני מדגישה שניסיתי לעשות פעולות על איבר מתוך ה tuple
עקבי אחרי הקוד ב־pytutor.
נשמע שחלק מ־tuple־ים שלך הם int/str, וחלק הם tuple־ים מקוננים.
max עובדת רק על “השכבה החיצונית”, והיא לא יכולה להשוות tuple ל־int
יש לי שאלה שנראית לי ממש באותו נושא:
Unpacking a Tuple
נניח ש c בדוגמא הבאה הוא tuple (בעיקר כי זה מה שפייתון טוענת בהודעת השגיאה שאני מקבלת)
אם אני כותבת :
a, *b =c
function (a, *b)
הכל עובד יופי.
אבל אם אני כותבת
function(c )
לא עובד.
קצת יותר הסבר - אני הנחתי שפייתון ידע לעשות אנפק לבד, אבל בלי ה * מה שקורה (כפי שמסתבר) זה ש c מתקבל בתור מה שתואר לעיל כ a של הפונקציה. כדי שפייתון יפרוק אותו לפונקציה, הוא צריך לצפות למספר (לא ידוע?) של משתנים: *
או לפחות זה מה שאני מבינה עכשיו