העלאת תרגילים ותיקון הערות הבודק האוטומטי - פתרון לבעיות נפוצות

היי, בהגשת התרגיל סוגרים חשבון מופיעה השגיאה “collection failure”
ראיתי שאלות בפורום על שגיאה דומה בתרגילים אחרים אבל לא הבנתי מה מהות השגיאה

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

היי :slight_smile:
אשמח להבין למה אני מקבלת את השגיאה? סידרתי לפי הא"ב…

צריך להפריד לשני בלוקים - הראשון של ספריות מובנות של פייתון והשני של ספריות חיצוניות. אם אני לא טועה itertools ו-string הן הספריות היחידות המובנות מבין אלה שמוצגות פה

לייק 1

זו השאלה של סוגרים חשבון, אין שם בקשת קלט אלא רק הזנת נתונים לפונקציה

אולי זה עוזר? אמנם לא אותה שאלה אבל נראה שאותו סוג שגיאה.

זהו שאני לא בטוחה שזה המקרה בפתרון שלי, לכן שאלתי

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

@Noga_o

מה המטרה של ההתנסחות העוקצנית? בתאדם שעוסקת בזה והוכשרה לכך מטעמי נתנה לך הצעה לשיפור הקוד.
אנשים שלא יודעים לקבל ביקורת על קוד הם ה־The worst human material to work with, אל תהיה כזה. במקום לפקפק בביקורת נסה לחפש איפה להשתפר.
לצורך הסרת ספקות – ההערה שלה מדויקת והייתי נותן אותה הערה בדיוק.

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

אין פה עניין של להיות גרוע, יש פה עניין של שאיפה של הסגל שתכתוב קוד מצוין.
ההבדל הוא סמנטיקה והיכרות. הרבה יותר נעים לקרוא (x + y).z() מאשר x.z() + " " + y.z().
הבדיקות האנושיות בין היתר פותחות לך כלים נוספים לבצע את העבודה שלך טוב יותר, אם זה בצורה קצרה יותר, קריאה יותר או מהירה יותר.
תמיד טוב להכיר כלים שעושים בדיוק את מה שרצית ולא מסביב.

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

" ".join([item1.title(), item2.title()])
“{} {}”.format(item1.title(), item2.title())
item1.title() + " " + item2.title()

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

(item1 + " " + item2).title()

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

אפשר לשאול.
ובזמן שבחלק מהפעמים זה עניין של סגנון, יש יתרון לאנשים שדוברים את השפה כמה שנים וקראו כמה מיליוני שורות קוד בחייהם בשיפוט של אסתטיקה בנושאים הללו :slight_smile:
אפשר גם:
f"{item1} {item2}".title()

לייק 1

היי, בתרגיל סט הבודק הכניס אותי למלכוד חחח:
image
אחרי שמתקן:
image
וחוזר חלילה
https://solve.pythonic.guru/view/93941

פשוט list על ה־zip ישירות (וגם את זה לא צריך למען האמת; zip מחזירה generator, זה עדיף עבור הלולאה שבאה מיד אח"כ)

לייק 1

האמת שלא הבנתי על איזה שם משתנה הבודק האוטומטי טוען שלא הגדרתי.
אשמח לעזרה :blush:

אני מנחשת שcombinations - אולי לא ייבאת משהו?

2 לייקים

צדקת! תודה רבה (: :smiley: :smiley:

לייק 1

ב zip_with קיבלתי את ההודעה:

TypeError: unsupported operand type(s) for +: ‘int’ and ‘list’

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

את איפשהו בקוד מנסה לחבר בין מספר לרשימה