התרגול השבוע כרוך בהשקעת מאמץ ניכר, ומטרתו לחזור ולחזק את היסודות שנלמדו בשבועות קודמים.
השבוע ניצב בפניכם אתגר חדש: חזקו את יכולות החיפוש שלכם באינטרנט ובתיעוד של פייתון, ונסו למצוא מודולים שיסייעו לכם בפתרון הבעיות.
זוהי יכולת חשובה מאוד עבור מתכנתים, וזהו בהחלט חלק נכבד מהאתגר בתרגילים שמופיעים לפניכם במחברת הזו.
פתרו את התרגיל "מלחמה וזהו" משבוע 4, הפעם עם הידע החדש שרכשתם.
כתבו פונקציה בשם interleave
שמקבלת פרמטר iterable אחד או יותר, ומחזירה רשימה של האיברים שזורים זה בזה.
לדוגמה, עבור הקריאה interleave('abc', [1, 2, 3], ('!', '@', '#'))
יוחזר הערך: ['a', 1, '!', 'b', 2, '@', 'c', 3, '#'].
ממשו גרסה של generator ל־interleave.
בחנות של אדון קשטן ישנו מילון המכיל את כל המוצרים בחנות, ואת המלאי של כל מוצר.
רשמו פונקציה שמקבלת את המוצרים שהתקבלו במשלוח האחרון, ומעדכנת את המלאי של אדון קשטן בהתאם לכך.
לדוגמה:
add_inventory({'cheese': 2, 'milk': 1}, cheese=3, chocolate=5)
add_inventory({'refrigerator': 7, 'goat': 1}, honey=2)
הספרן שהיה בדרכו להביא לי את העותק הנחשק של "הארי פוטר והשיטה הרציונלית" מעד.
הספרים התעופפו ופרקי הספרים התפזרו לכל עבר.
בתיקייה resources מצורף קובץ מכווץ ובו כל פרקי הסיפור, אך למרבה הצער שם הקבצים אינו תואם לתוכן שלהם.
שנו את שמו של כל קובץ כך ששמו החדש יהיה מספר תלתַ־ספרתי שמתאר את מספר הפרק, ואחריו את שם הפרק.
לדוגמה: עבור הפרק הראשון, שם הקובץ צריך להיות 001 A Day of Very Low Probability.
במהלך התרגיל ייתכן שתצטרכו לשלב עבודה עם כמה ספריות, ובהן כאלו שלא למדנו.
טיפ: גבו את הקבצים לפני שתתחילו לעבוד עליהם.
רמז: אפשר לפתוח קובצי html ידנית, כקובצי טקסט.
רמז 2: כיצד משנים שמות של קבצים באמצעות פייתון?
מוצגת להלן אחת מהגרסאות של פרדוקס יום ההולדת:
מה הסיכוי שבכיתה שבה 23 תלמידים (חחחחח) יציינו שני תלמידים יום הולדת באותו תאריך?
הנחות המוצא שלנו בפתירת הבעיה הן כדלהלן:
הפתרון של ה"פרדוקס" מפתיע את רוב האנשים ששומעים עליו לראשונה.
כתבו תוכנה שמגרילה תאריכי יום הולדת עבור 10,000 כיתות, שבכל אחת מהן לומדים 23 תלמידים.
מהו אחוז הכיתות שבהן ציינו 2 ימי הולדת באותו תאריך? השוו עם הפתרון המוצג בוויקיפדיה.
דאגו שהפתרון שלכם יתחשב בכך שקיימות שנים מעוברות.
השתמשו בתוכנה שכתבתם כדי לחשב את הסיכויים עבור כיתות שבהן תלמיד אחד, ועד כיתות ישראליות ממוצעות שבהן 366 תלמידים.