Location במחברת 4

הי! לא כל כך הבנתי את location שמסומן באפור בתמונה:


זה סתם שם שנתתם, או שיש חשיבות לזה שהוא נקרא ככה? כלומר, יכולתם לכתוב במקום זה treasure_location, למשל, או שלמילה הזאת יש חשיבות מיוחדת בפייתון (לדוגמה, אבל להבדיל - for, while, in הן מילים שיש להן משמעות בפייתון).
אני מנסה להבין כי זה גם קצת מבלבל (מיקום כי עסקינן במפה או כי זה מפנה למיקום במילון?), וגם כי כשניסיתי לכתוב פונקציה זהה עם מילון אחר, העסק לא רץ, ואני מנסה להבין למה.
תודה!

אין משמעות מיוחדת לשם :slight_smile: מה הקוד שניסית לכתוב ולא רץ?

ממליץ לחזור שוב על המחברת שעוסקת בלולאות for.

לייק 1

בדומה לקוד הזה שהופיע כדוגמה בערך באמצע המחברת:
treasure_maps = [
{‘x’: 36.671111, ‘y’: 65.808056},
{‘x’: 53.759748, ‘y’: -2.648121},
{‘x’: 52.333333, ‘y’: 1.183333},
{‘x’: 52.655278, ‘y’: -1.906667}
]

def print_treasure_location(x, y):
print(f"{x}°N, {y}°E")

for location in treasure_maps:
print_treasure_location(**location)

כתבתי את הקוד הזה:

הקוד

students = [
{‘name’: ‘Anne’, ‘evidences’: (‘derringer’, ‘Caesarea’)},
{‘name’: ‘Taotao’, ‘evidences’: (‘derringer’, ‘Petersen House’)},
{‘name’: ‘Pilpelet’, ‘evidences’: (‘Master Sword’, ‘Hyrule’)},
]

def check_evidences(weapon, location):
print(f"The killer is {name})

for location in students:
check_evidences(**location)

תודה על העצה!
לחזור למשהו ספציפי במחברת הזאת? כי באופן כללי אני מרגישה שהבנתי אותה

הרעיון של for x in y מוסבר שם לעומק, ויתכן שמעבר שוב יעזור לך לבנות את ההבנה של מה הוא אותו x ומאיפה הוא מגיע :slight_smile:

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

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

אם לא מצאת, אז תקראי:

שמות המשתנים שהפונקציה מקבלת אמורים להיות אותם שמות של ה-keys במילון.

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

תודה רבה!
השגיאה שמופיעה היא:
File “”, line 8
print(f"The killer is {name})
^
SyntaxError: EOL while scanning string literal
לצערי אני לא יודעת לקרוא את הדברים האלה. מה זה EOL? מה אני אמורה להבין ממה שכתוב פה? כמעט כל שגיאה שמופיעה לי היא תעלומה בעיניי, שלא מקדמת אותי להבנה מה הבעיה.
אגב, כside note לצוות, אשמח ללמוד איך להבין מה הבעיה דרך השגיאה שמתקבלת.

לגבי ההערה המדוברת, הכוונה היא למשתנים שאני מכניסה בקריאה לפונקציה? כי המילה location לבד (כלומר לא print_treasure_location או treasure_location) מופיעה בפעם הראשונה בתוך הפונקציה

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

לייק 1

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

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

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

לייק 1

כנראה שזה חלק ששכחתי ממנו… מתי למדנו לגגל את הדברים האלה?

ראי דוגמא בשבוע 3 על קבצים - encoding=utf8 כדוגמה לפיתרון בעיות.
קיימת עוד אחת לפחות ממה שזכור לי