בודק אוטומטי זיפ

 TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

הי מישהו יכול לעזור לי לפרש מה עשיתי לא נכון??
בגדול לא שמתי * ב (func(*i
כי זה תקע לי כמה פונקציות.

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

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

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

אתה צריך להגיע למצב שכל פונקציה שאתה מכניס לzip_with עם איטרבול שנכונים לפונקציה שאתה מכניס אמורים לעבור יפה את הפונקציה שלך. ואז הכוכבית אמורה רק לעזור לך לא לשגע לך את המערכת :slight_smile:

לייק 1

לא הבנתי.
יש לי את הפונקציה ולפונקציות כמו SUM\MAX היא עובדת, אבל לround לצורך העניין אם אני רוצה שהיא תעבוד אני צריך להכניס כוכבית.

עריכה, ראיתי לSUM בכלל לא היה בדוגמאות ועל ROUND ו MAX זה עובד אז אגיש עם כוכבית וזהו

לייק 1

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

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

ומקסימום לחזור למחברת Functions_Part_2 (מחברת 2 שבוע 5) לרענן קצת את הנושא.

הגשתי עם הכוכבית ועכשיו זה עובד.
בכ"מ הוספתי פונקצייה ADD זה בול שנייה.
תודה על העזרה :slight_smile:

2 לייקים

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

הכוכבית בכניסה לפונקציה מטפלת במספר האיטרבלים אשר נכנסים - היא יוצרת tuple שכל ערך בו הוא אחד מהמשתני iterable שנכנסו. ( מחברת 2 שבוע 5)

עכשיו בעצם יש לך בתור הפונקציה משתנה tuple ובתוכו יכולים להיות לך בעצם כל סוגי ה iters למשל רשימות, מילונים, סטים וכו…

הפונקציה שלך אמורה לקחת מכל אחת במקום ה n (נניח הראשון) את הערך ואז להעביר את הכל לפונקציה אותה הזין המשתמש. בקריאה לפונקציה שלך.

ההערה הזו חוזרת במקרים בהם הפונקציה לא יודעת לטפל בטיפוס שהיא “מייצרת” מכל הiters . כלומר זו הנקודה הבעייתית שמקפיצה את ההודעה. (לכן הכוכבית בתחילת הפונקציה היא הכרחית אבל היא לא מקור הבעיה)
לכן זו הנקודה שבה צריך לחשוב בדיוק על מבני הנתונים שנכנסים, מה אנחנו עושים איתם ואיך אנחנו ממשיכים לטפל בהם הלאה בקוד.

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

נסי אולי את זה:

print(zip_with(max, {10:4, 20:2}, {100:4, 5:2}))

כמו כן תוודאי שאת לא משתמשת ב add בשום צורה היא לא רלוונטית לתרגיל שזה לא יעכב אותך.

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

חחח כן כי זה בלי רווח אחרי הנקודתיים כתבתי את זה מהר מדי.

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

בוודאי, אבל לשלוח על הפורום אני מניחה, איך ?

תלחצי על התמונה שלי יש שם כפתור הודעה

תבדקי אם הקוד עובד עבור:

print(zip_with(pow, [1, 3], [2, 1]))

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

לייק 1