ריצת 2000 - לא מצליח להבין את הטעות

תגיות:

אני יושב על התרגיל כבר שעתיים ולא מצליח להבין מה אני לא מבין
כשהשתמשתי ב args* שני הקודים הראשונים עובדים, כשהשתמשתי ב args** הקוד האחרון עבד, אבל אני לא מצליח להבין למה הקוד השני לא עובד אם הרי יש לי השמה של משתנים שאומרת x(y) אז בהתאם במקרה האחרון אני מצפה ממנה שתרשום

"hi {name}.format(name=“Bug”)

עברתי על כל מחברת 2 של שבוע 5 כבר 3 פעמים ואני לא מצליח להבין מה לא נקלט אצלי.
כשהשתמשתי ב args* קיבלתי התראה על הבדיקה האחרונה:

timer() got an unexpected keyword argument ‘name’

כשהשתמשתי ב args** אני מקבל את ההתראה:

timer() takes 1 positional argument but 2 were given

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

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

השגיאה שאתה מקבל היא בהתאם לתנאי הניסוי - כשהגדרת *args ושלחת *args היה טוב, אבל לא מתאים ל **kwargs, ולהיפך.
תסתכל טוב מה יש בדוגמא ולמה זה מתאים.
צריך למצוא מה התכונות המשותפות שלהם ומה ידע לטפל בכל אחד מהמקרים

לייק 1

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

לייק 1

זה הגיוני שזמני הריצה לרוב הם 0?

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

אך איך בערך צריך לטפל בכך?

להשתמש במודול הנכון ולא להיבהלעם עבורזמנים מסויימים חוזר 0 (:

שתי הערות לגבי זה:

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

10 ^ -8 (seconds)

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

@devorack
@aviadamar
@mbrodsky

תודה על העזרה, אבל זה בדיוק מה שאני לא מצליח להבין, אני עובר על כל מחברת 2 משבוע 5 ושום דבר לא נראה לי הגיוני.
אנחנו יודעים שזה לא יכול להיות args* או kwargs** כי זה הרי צריך להיות יכול להכיל את שתי האפשרויות, כנל format שעובדת כמו kwargs** ומקבלת ערכים בלתי מוגבלים לפי שם.
אחרי החלק הזה במחברת כבר עוברים לתרגול’ וגם שם יש שאלה שמתייחסת לעניין הזה אבל שם פשוט יש בקוד שימוש גם ב- args* וגם ב- kwargs**.

אשמח אם תכוונו אותי יותר כי באמת אני כבר מתחיל להרגיש כאילו מנסים לגרום לי לחשוב שאני טיפש.

אם אי אפשר להשתמש באף אחד מהם לבדו, למה לא להשתמש בשניהם גם יחד?
ואף אחד לא מנסה לגרום לך לחשוב שאתה טיפש. להפך, מנסים לרמוז ולא לגלות את התשובה כי אנחנו יודעים שאתה חכם ורוצים “להרוס” לך את המינימום ולא לגלות יותר מדי

לייק 1

כן!

לפחות ככה אני פתרתי…

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

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

לייק 1

@orpazf
@mbrodsky
אני לא מדבר עליכם, יש לי את כל הערכה שבעולם לחברה כמוכם שעוזרים לאחרים, אני גם לא יכול להגיד זאת על צוות הקורס, כי הם קורעים את התחת בחינם בשבילנו, אבל כן מתסכל שכל שבוע מחדש אני מתחיל מחברות בהרגשה של טוב נו מעניין איך אני אפתור את זה ושאני נתקע שעות על כל תרגיל כי אין לי שמץ איך בכלל לגשת אליו ובסוף מגלה שזה היה תשובה טיפשית וקלה.
ושוב אני אומר שאין לי תלונה אל צוות הקורס בכלל, כי עובדה שיש פה חלק לא קטן של אנשים שמצליחים לפתור את התרגילים בעזרת ההסברים שקיימים במחברת.

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

בשביל להריץ את הקוד עצמו השתמשתי ב map אם זה משנה משהו, במיוחד עם המחברת הזאת הרגיש לי הכי הגיוני להשתמש בפעולה הזאת, איך לגרום לה לעבוד זאת כבר שאלה אחרת…

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

אל תתייאש :muscle:

4 לייקים

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

3 לייקים

רק רוצה להגיד שאני כותב שדרוגון קטן למערכת בדיקת התרגילים. סיימתי לכתוב אותו אתמול ב־3 בבוקר, הלכתי לישון, ומאז שקמתי אני עדיין פותר באגים ובעיות קטנות (חלקן לקחו לי שעות, והיו להחליף מילה אחת במילה אחרת).
תכנות זה לא פשוט, גם אחרי 18 שנה. תתעודד :slight_smile:

7 לייקים

אתה כבר שם. למעשה, כמו שאביעד אמר, היית שם כבר בהתחלה.

תשמור, שים בצד, תחזור אחרי שתסיים את שאר תרגילי השבוע.

לייק 1

עכשיו הצלחתי לפתור את התרגיל ואם לפני זה חשבתי שאני מרגיש טיפש אז עכשיו אני ממש מרגיש את זה.
אבל יש משהו שלא הבנתי, איך אני יכול לכתוב את הפונקציה שתבקש גם את args* וגם את kwargs** ושבהדפסה אני לא אקבל התראה שחסר משתנה? הרי הפונקציה דורשת שלושה (ביחד עם הפונקציה הנדרשת) אבל בדוגמאות מקבלת שניים.

@devorack
@orpazf
@aviadamar

ממליצה להיזכר בהגדרות של *args ו-**kwargs :slight_smile: