מימוש פונקציית max ותרגיל סולל דרך

תגיות:

נתקלתי בבעיה מוזרה בהרצת הקוד של שני התרגילים האלה

בשניהם אני ניגשת לאיבר מתוך ה 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 )
לא עובד.

למה?

איך מוגדרת הפונקציה?

function (a, *b) …

אצטרך דוגמה קצת יותר מפורטת, אם כך :slight_smile:

תודה לים, מתברר שאם כותבים :

function(*c )

זה עובד יופי.

קצת יותר הסבר - אני הנחתי שפייתון ידע לעשות אנפק לבד, אבל בלי ה * מה שקורה (כפי שמסתבר) זה ש c מתקבל בתור מה שתואר לעיל כ a של הפונקציה. כדי שפייתון יפרוק אותו לפונקציה, הוא צריך לצפות למספר (לא ידוע?) של משתנים: *
או לפחות זה מה שאני מבינה עכשיו

לייק 1

תודה על התשובה. לא היה מדובר על tuple-ים מקוננים. זאת באמת היתה הודעת שגיאה בגלל שקראתי לפונקציה על משתנה - בלי * - כמו ששאלו בהמשך