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

ההעלאה עצמה:

  1. ראשית ודאו שהשורה הראשונה בתא היא # Upload XX כאשר XX מוחלף במספר שנמצא במערכת הגשת התרגילים ליד שם התרגיל. חייב להיות רווח בין ה-# למילה ובין המילה למספר. המערכת גמישה מספיק כדי לקבל u במקום U. זו חייבת להיות השורה הראשונה - לפני הערות, לפני import ולפני כל דבר אחר.

  2. אם אתם מנסים להעלות פעם נוספת תרגיל אך לא מצליחים לדרוס את הקודם - אל תשנו דבר בתא מלבד להוסיף בשורה האחרונה בתא # Reupload XX כאשר XX מוחלף גם פה במספר התרגיל. אל תשנו את השורה הראשונה שכוללת את ה-Upload, היא צריכה להישאר כפי שהיא. לאחר מכן שמרו את המחברת והעלו את התרגיל שוב למערכת.

  3. לפעמים, בעיקר כשמריצים דברים עם המון הדפסות, המחברת נהיית מאוד כבדה. במקרה כזה לחצו על המקלדת פה תמונה ולחצו על clear all cells output. כמובן לא לשכוח לשמור אחרי. אם זה עדיין לא עובד - נסו להעתיק את התא הרלוונטי למחברת חדשה ולהעלות אותה.

  4. אם כבר הגשתם את הכול ואתם רוצים לתקן משהו, זה הקישור דרכו ניתן להגיש מחדש https://solve.pythonic.guru/send.

הערות הבודק האוטומטי על איך הקוד נראה:

שימו לב שמשבוע 5 חובה לתקן את כל ההערות, אחרת התרגיל לא ייבדק.

יש כמובן הרבה הערות אפשריות, אבל הנפוצות מביניהן עד כה:

  1. הערות ריווח למיניהן:
    חשוב לשים לב שיש רווח אחרי פסיקים ושיש רווח אחרי נקודתיים במילון (ההערה עצמה יכולה להיות על אחד מהם ולהתכוון לשני) - ושאין רווח לפני הפסיק או לפני הנקודתיים.
    נהוג להפריד פונקציה בשתי שורות ריקות לפניה ואחריה. כמו כן, אם יש לכם תווים לבנים בשורה ריקה או בשורה כלשהי אחרי התו האחרון בה - אתם תקבלו הערה גם על זה.
    אם כותבים הערות שמתחילות ב-# - צריך שיהיה רווח בודד אחריה, ואם זו ההערה שאינה מתחילה בתחילת השורה צריך להיות רווח כפול בין התו האחרון בשורה לבינה.
    גם לפני ואחרי אופרטורים כדוגמת +, -, =, == וכו’ יש לשים רווח. יוצא הדופן הוא כשמדובר בפרמטר דיפולטי ואז אין לשים רווח לפני ואחרי ה-=.
    למי שמעוניין להרחיב את ידיעותיו בתחום של איך לעצב קוד נכון, יש מסמך שלם בנושא ממש כאן https://www.python.org/dev/peps/pep-0008/.
  2. המשתנה לא הוגדר לפני השימוש - ייתכן שהגדרתם משתנה או ייבאתם מודול בתא אחר במחברת ולכן התא רץ לכם כמו שצריך - אבל כשאתם מעלים תא בודד הוא לא יכול לרוץ כי המשתנה/המודול אינם מוכרים בו. המחברת זוכרת שהגדרתם למעלה, הבודק לא. אפשר לבדוק בכמה דרכים לפני ההגשה - להעתיק למחברת חדשה ולבדוק אם זה עובד, או פשוט לעשות restart kernel ולהריץ את התא הזה בלבד.
  3. הגדרתם משתנה אך לא השתמשתם בו בלולאה. בלולאת for אנו רוצים לעיתים לרוץ x פעמים ומשתמשים לשם כך ב-for i in range(x), שזה טוב ויפה. אבל לפעמים אנו לא משתמשים בכלל ב-i, וזה נחשב לא מנומס להשאיר אותו מבלי שימוש. אם זה המקרה - החליפו את i בקו תחתון (_), זו הדרך שלכם לסמן שאין טעם לתת למשתנה הזה שם.
  4. האם אפשר לבדוק שערך שווה ל-True/False בצורה קצרה יותר - מוסבר במחברת של תנאים (מחברת 2.1).
  5. אם אתם מעוניינים להשוות משהו ל-None, אל תעשו זאת עם == אלא עם is, למרות ש(עוד?) לא למדנו מה זה בדיוק אומר.
  6. כל השורות של ה-import אמורות להופיע לפני כל השורות של ה-from … import. כל אחד מהנ"ל אמור להיות מסודר לפי סדר הא"ב. כל זה מופרד לשני בלוקים שונים - הראשון של ספריות מובנות בפייתון והשני של ספריות חיצוניות.

הבדיקה האוטומטית על איך הקוד עובד:

  1. אם יש AssertionError ואחריה x == y זה אומר שניסו להשוות את הערך שהפונקציה שלכם מחזירה, לרוב מדובר במה שמצד שמאל של האופרטור ==, כלומר x, עם מה שהיה אמור לצאת וההשוואה החזירה False. בדקו את עצמכם - האם הערך המוחזר הוא הערך הנכון? האם הדפסתם במקום להחזיר? האם פספסתם מקרה קצה? שימו לב שכתוב לכם גם מה אמור לחזור - אחלה דרך לבדוק מה השתבש.
  2. אם כתוב missing 1 required positional argument - הפונקציה שלכם מצפה לקבל ארגומנט אחד יותר ממה שהיא מקבלת בפועל (כלומר ממה שהבודק מצפה שהיא תקבל ומנסה לשלוח לה). בדקו האם קיבלתם את הארגומנטים שהתבקשתם או שהוספתם עוד רק למען הנוחות שלכם, וחשבו על איך לשנות את זה - למשל לעטוף בפונקציה חיצונית שמקבלת את מספר הארגומנטים שצריך.
  3. באופן כללי אבל גם מופיע לפעמים בהערות של הבודק: “None type not callable” או “None type not iterable” מעידים על זה שיש לכם None במקום שלא ציפיתם לו. נסו לחקור מי ה-None הסורר ולאן הוא חמק מבלי שהבחנתם לב :slight_smile:
29 לייקים

תבורכי :slight_smile:

2 לייקים

יוזמה מבורכת! (הצעה - שאלות נפוצות)

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

2 לייקים

האם יש לך דוגמא למשהו מהנ"ל? כי לא זכור לי שנתקלתי בהערות כאלה :slight_smile:

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

נכון טעות שלי הבנתי את מה דבורה רשמה לא נכון.
עדין מברך על היזומה ! שלא תתבלבלי :heart:

מה שכן, יש הערות על רווחים בהערות שלא מופיע ואולי זה הכוונה.
נגים אם לא עושים רווח כפול בין הערה לשורת קוד,
או לא עושים רווח אחרי # של הערה בכללי (גם היא בשורה נפרדת וגם אם אחרי שורת קוד)

2 לייקים

image

הכנסתי תרגיל חדש עם הטעות, רק בשביל זה :crazy_face:

2 לייקים

תודה! אוסיף ברגע שהוא יאפשר לי לערוך (הגעתי למספר עריכות מקסימלי להיום מסתבר :face_with_hand_over_mouth:)

לייק 1

הי :slight_smile:

העלאתי תרגילים אבל רוצה לתקן אותם.
לא הבנתי מה הכוונה: "אם אתם מנסים להעלות פעם נוספת תרגיל אך לא מצליחים לדרוס את הקודם " - איך אפשר לדרוס את הקודם?
האם רק רישום #Reupload במחברת ושמירה מעלה מחדש? (נראה שלא…)
איפה לרשום Reupload?

ראשית נסי להעלות את התרגיל בדיוק כמו שהעלית בפעם הקודמת. אם זה עובד ועודכנה גרסא חדשה - נהדר.
אם זה לא עובד, הוסיפי בשורה האחרונה של התא # Reupload XX, שמרי את המחברת ונסי להעלות שוב לאתר.

לייק 1

כשמכניסים DICTIONARY בלי רווח

@jacov.g
מופיע :slight_smile:

לייק 1

עדיין, הערה היא על “פסיק” ולא על “נקודותיים”, פעם חשבתי שבגלל רווח או אי רווח אחרי ה - ‘,’ כששברתי את המילון בין כמה שורות.

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

קיבלתי הערה כזאת
image
כי רציתי להציג את המספר ללא נקודה עשרונית. (שאלה ממחברת 2) איך כדאי לתקן? (בלי random התוצאות לא יצאו כמו בהנחייה לתרגיל)

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

לייק 1

אפשר רמז? (איך להדפיס x.y ככה: x.y ו - x.0 ככה: xׂ)

ממליצה לחזור על אופרטורים חשבוניים שלמיטב זכרוני הופיעו במחברות השבוע הראשון

לגבי נקודה 4.
אני שובר את הראש כבר כמה ימים… לא יודע איך לקצר את ההשוואה לערך של TRUE ולא רוצה לשתף בקוד שלי כדי לבדוק מה יכול להתייעל בו.
במחברות 6 - 7 של שבוע ראשון לא מצאתי משהו שיעזור לי.
איך אני אמור לעשות את זה? אני פשוט לא רואה דרך קצרה יותר ממה שרשמתי…