הצבעה + שאלות: סשן תכנות שלישי עם ים

מוזמנים להצטרף אלי לסשן שאלות, תשובות ותכנות.
למטה סקר על זמן הקיום של הסשן שיסגר ב־00:00 שבין שבת לראשון.

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

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

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

  • ראשון
  • שלישי
  • רביעי
  • חמישי

0 מצביעים

3 לייקים

נשמח לעזרה עם
mypy …
אם אפשר לעשות איזשהו walkthrough על פרויקט קטן זה יהיה נהדר.
תודה !!!

5 לייקים

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

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

תודה רבה מראש

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

2 לייקים
  • דוגמאות לשימוש ב-mypy, במיוחד בנוגע לimportים. אם אפשר, mypy דרך pycharm ולא דרך cmd.
  • נגיד אם היה לך תרגיל עם מוזיקה פשוטה, נגיד משהו כמו יונתן הקטן, שהיית צריך לתקן את המוזיקה שם שמזייפת. לא יודע למה חשבתי ספציפית על תרגיל כזה.
לייק 1

האם יש קווים מנחים לשימוש ב Type Annotations? האם צריך לשאוף לרמיזה על כל משתנה חדש שמופיע? או שאולי זה דווקא מעמיס וכדאי להגביל את זה רק להגדרה של פונקציות או למשתנים שייתכן ולא ברור מה הם אמורים לקבל?

לייק 1

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

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

דוגמא להליך דיבאגינג

שאלה שעלתה לי בעקבות הדוגמה הבאה ביום 4:

old_len = len
len = lambda x: 0
print(len("Hello"))
print(old_len("Hello"))  # not part of the original example

אם משנים את len כך שיצביע על פונקציה אחרת, ו old_len מצביע לאן ש len מצביע, למה בעצם old_len אכן מצליח לשמור את פונקציית len המקורית ושורה 4 אכן מדפיסה 5 כמצופה? כלומר למה הפונקציה old_len לא מתנהגת בדיוק כמו הפונקציה len החדשה?

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

אני לא בטוחה שאני צודקת אבל אני חושבת שזה קשור לתזמון/מיקום שבו הפונקציות מוגדרות, ונראה לי שההרצה הזאת מאששת את זה:
@ori81510 מקווה שההערות מובנות

old_len = len
len = lambda x: 0
print(len("Hello"))
print("Should be 5:", old_len("Hello"))  # old_len was defined when len was built-in function

old_len = len
print("Should be 0:", old_len("Hello"))  # old_len was defined when len is our new function

Output:

0
Should be 5: 5
Should be 0: 0
לייק 1

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

לייק 1

אם אני לא טועה זה מכיוון ש len הראשון הוא פונקציה built-in וה len השני זה שם משתנה שאנחנו הגדרנו (בגלל זה תראה שהשגיאה שIDE מעיר זה: Shadows built-in name ‘len’).
אז הold_len תמיד מצביע על הפונקציה של פייתון.

לייק 1

איך מתגברים על שגיאה של mypy שפייתון לא מוצא מודול שאנחנו מייבאים(מקובץ אחר)
error: Cannot find implementation or library stub for module named ‘XXXX’
ניסיתי לחפש ולא מצאתי פיתרון… תודה :slight_smile:

3 לייקים