diff --git a/week1/1_Strings_and_Output.ipynb b/week1/1_Strings_and_Output.ipynb index 66ea93f..6462051 100644 --- a/week1/1_Strings_and_Output.ipynb +++ b/week1/1_Strings_and_Output.ipynb @@ -4,22 +4,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

ברוכים הבאים למחברת הפייתון הראשונה שלכם!

" + "#

ברוכים הבאים למחברת הפייתון הראשונה שלכם!

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

\n", - "ממש בקרוב נצלול לעולם התכנות, שבו תוכלו להריץ דוגמאות קוד מעניינות.
\n", + "

\n", + "ממש בקרוב נצלול לעולם התכנות, שבו תוכלו להריץ דוגמאות קוד מעניינות.
\n", "המחברת שלפניכם היא מחברת אינטראקטיבית שמאפשרת לנו להריץ קוד ולראות את התוצאות שלו בקלות.\n", "

" ] @@ -28,8 +28,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

כדי להריץ את התוכן של תא מסוים, לחצו עליו כך שתופיע סביבו מסגרת, והקישו בו־זמנית על המקשים CTRL + ENTER במקלדת.
\n", - "לאחר שתעשו זאת, פייתון תעבד את הביטוי המופיע במשבצת ותציג לכם תשובה בהתאם.
\n", + "

כדי להריץ את התוכן של תא מסוים, לחצו עליו כך שתופיע סביבו מסגרת, והקישו בו־זמנית על המקשים CTRL + ENTER במקלדת.
\n", + "לאחר שתעשו זאת, פייתון תעבד את הביטוי המופיע במשבצת ותציג לכם תשובה בהתאם.
\n", "נסו את זה על המשבצת הבאה!

" ] }, @@ -46,22 +46,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

" + "

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

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
\n", - " \"טיפ!\" \n", - "
\n", - "
\n", - "

\n", + "

\n", + "
\n", + "\"טיפ!\"\n", + "
\n", + "
\n", + "

\n", " תוכלו להמנע משימוש בעכבר ולעבוד מהר יותר רק עם המקלדת. עברו בין התאים בעזרת המקשים או במקלדת שלכם.\n", "

\n", - "
\n", + "
\n", "
" ] }, @@ -69,15 +69,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

הדפסה

" + "##

הדפסה

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

\n", - "אבל רגע, יגידו הסקרנים ביניכם, מה הרצתי שם למעלה?
\n", + "

\n", + "אבל רגע, יגידו הסקרנים ביניכם, מה הרצתי שם למעלה?
\n", "

\n" ] }, @@ -85,7 +85,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

\n", + "

\n", "כמו שוודאי ניחשתם, הקוד שהרצתם מדפיס \"שלום עולם\". הוא מורכב משני חלקים יחסית פשוטים: מחרוזת ופקודת הדפסה.\n", "

" ] @@ -94,16 +94,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

print

" + "###

print

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

\n", - "אחד הדברים שנעשה לא מעט בשבועות הקרובים זה להדפיס למסך.
\n", - "כדי לעשות את זה, נצטרך פשוט לכתוב print, לפתוח סוגריים, לכתוב ביטוי חוקי כלשהו ולסגור את הסוגריים.
\n", + "

\n", + "אחד הדברים שנעשה לא מעט בשבועות הקרובים זה להדפיס למסך.
\n", + "כדי לעשות את זה, נצטרך פשוט לכתוב print, לפתוח סוגריים, לכתוב ביטוי חוקי כלשהו ולסגור את הסוגריים.
\n", "בואו נסתכל על כמה דוגמאות:\n", "

" ] @@ -148,35 +148,36 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
\n", - " \"אזהרה!\" \n", - "
\n", - "
\n", - "

\n", - " נהוג לרשום את הסוגריים סמוך למילה print, בלי רווחים לפני או אחרי הסוגריים.
\n", - " אם תשכחו סוגריים, או אם תפתחו סוגריים ותשכחו לסגור אותם, פייתון תתריע על שגיאה.
\n", + "

\n", + "
\n", + "\"אזהרה!\"\n", + "
\n", + "
\n", + "

\n", + " נהוג לרשום את הסוגריים סמוך למילה print, בלי רווחים לפני או אחרי הסוגריים.
\n", + " אם תשכחו סוגריים, או אם תפתחו סוגריים ותשכחו לסגור אותם, פייתון תתריע על שגיאה.
\n", " זה לא באמת מפחיד אותנו, אבל כדאי לזכור שזו אחת הסיבות שאתם עלולים להיתקל בהודעות שגיאה.\n", "

\n", - "
\n" + "
\n", + "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מחרוזת" + "### מחרוזת" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

\n", - "למרות השם הרשמי, מחרוזת היא בסך הכול רצף של תווים. מחרוזת יכולה להיות \"שלום עולם\", התוכן של הספר הארי פוטר ואפילו האות \"ש\" לבדה.
\n", - "במקרה שלנו, המחרוזת היא \"Hello World\".
\n", - "כדי שפייתון תזהה שמדובר במחרוזת, נהיה חייבים להקיף את המחרוזת בגרש (צ'וקו) או בגרשיים (צ'וקיים).
\n", - "פייתון נחמדה אלינו ולא באמת אכפת לה במה תשתמשו, כל עוד תתחילו בגרש ותסיימו בגרש, או תתחילו בגרשיים ותסיימו בגרשיים.
\n", + "

\n", + "למרות השם הרשמי, מחרוזת היא בסך הכול רצף של תווים. מחרוזת יכולה להיות \"שלום עולם\", התוכן של הספר הארי פוטר ואפילו האות \"ש\" לבדה.
\n", + "במקרה שלנו, המחרוזת היא \"Hello World\".
\n", + "כדי שפייתון תזהה שמדובר במחרוזת, נהיה חייבים להקיף את המחרוזת בגרש (צ'וקו) או בגרשיים (צ'וקיים).
\n", + "פייתון נחמדה אלינו ולא באמת אכפת לה במה תשתמשו, כל עוד תתחילו בגרש ותסיימו בגרש, או תתחילו בגרשיים ותסיימו בגרשיים.
\n", "בואו נסתכל על כמה דוגמאות:\n", "

" ] @@ -221,16 +222,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "
\n", - " \"אזהרה!\" \n", - "
\n", - "
\n", - "

\n", - " טעות נפוצה בקרב אנשים שמצטרפים לעולם התכנות, היא לשכוח את הגרש או את הגרשיים בסיום ו/או בתחילת המחרוזת.
\n", + "

\n", + "
\n", + "\"אזהרה!\"\n", + "
\n", + "
\n", + "

\n", + " טעות נפוצה בקרב אנשים שמצטרפים לעולם התכנות, היא לשכוח את הגרש או את הגרשיים בסיום ו/או בתחילת המחרוזת.
\n", " אם תשכחו אותם, פייתון עלולה להתריע על שגיאה. זה לא באמת מפחיד אותנו, אבל כדאי לזכור שזו אחת הסיבות שאתם עלולים להיתקל בהודעות שגיאה.\n", "

\n", - "
\n", + "
\n", "
" ] }, @@ -238,7 +239,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "הנה דוגמה לטעות שכזו, שתגרום לפייתון להתריע על שגיאה:" + "הנה דוגמה לטעות שכזו, שתגרום לפייתון להתריע על שגיאה:" ] }, { @@ -254,23 +255,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגול" + "## תרגול" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

מה מחרוזת ומה לא?

" + "###

מה מחרוזת ומה לא?

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

\n", + "לפניכם כמה ביטויים בפייתון. מה לדעתכם מחרוזת תקינה ומה לא?
\n", + "רשמו בצד את התשובות שלכם, ורק אז עברו לתא שאחרי התרגיל כדי לבדוק אם עניתם נכונה על השאלות.
\n", "זהירות! הטמנו שם כמה מוקשים ;)\n", "

" ] @@ -279,7 +280,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", + "
      \n", "
    1. \"Hello World\"
    2. \n", "
    3. 'Hello World'
    4. \n", "
    5. 1234
    6. \n", @@ -289,9 +290,9 @@ "
    7. 'Israel'
    8. \n", "
    9. Moshe
    10. \n", "
    11. \".\"
    12. \n", - "
    13. \"_)(*&^%\"
    14. \n", - "
    15. \"_)('*&^%\"
    16. \n", - "
    17. \"_)(\"*&^%\"
    18. \n", + "
    19. \"_)(*&^%\"
    20. \n", + "
    21. \"_)('*&^%\"
    22. \n", + "
    23. \"_)(\"*&^%\"
    24. \n", "
    " ] }, @@ -299,12 +300,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

    \n", - " סמנו בעזרת העכבר את הריבוע השחור (המחרוזות התקינות הן: 1, 2, 4, 7, 9, 10, 11) כדי לראות אילו מן הסעיפים הוא מחרוזת תקינה.\n", + "

    \n", + " סמנו בעזרת העכבר את הריבוע השחור (המחרוזות התקינות הן: 1, 2, 4, 7, 9, 10, 11) כדי לראות אילו מן הסעיפים הוא מחרוזת תקינה.\n", "

    \n", - "
    \n", - "

    \n", - " \n", + "
    \n", + "

    \n", "

    " ] }, @@ -312,18 +312,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

    חוברים למחברת

    " + "###

    חוברים למחברת

    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

    \n", - "הוסיפו למחברת תא שבו ניתן לכתוב קוד.
    \n", - "ניתן לעשות זאת בלחיצה על המשבצת הזו, ואז בלחיצה על b במקלדת.
    \n", - "הלחיצה על b משמעה \"הוסף אזור קוד מתחת (below) למשבצת שסימנתי\".
    \n", - "כתבו במשבצת קוד לבחירתכם. ודאו שהתא שמכיל את הקוד מסומן, ואז לחצו CTRL יחד עם ENTER כדי להריץ אותו.
    \n", + "

    \n", + "הוסיפו למחברת תא שבו ניתן לכתוב קוד.
    \n", + "ניתן לעשות זאת בלחיצה על המשבצת הזו, ואז בלחיצה על b במקלדת.
    \n", + "הלחיצה על b משמעה \"הוסף אזור קוד מתחת (below) למשבצת שסימנתי\".
    \n", + "כתבו במשבצת קוד לבחירתכם. ודאו שהתא שמכיל את הקוד מסומן, ואז לחצו CTRL יחד עם ENTER כדי להריץ אותו.
    \n", "

    " ] }, @@ -331,17 +331,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

    שרה שרה שיר שמח

    " + "###

    שרה שרה שיר שמח

    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

    \n", - "הדפיסו את הפזמון מהשיר האהוב עליכם!
    \n", - "אם צריך, היעזרו בדוגמת ההדפסה שמופיעה בתחילת המחברת.
    \n", - "שימו לב שניתן להדפיס יותר משורה אחת על ידי חזרה על print בכמה שורות נפרדות.
    \n", + "

    \n", + "הדפיסו את הפזמון מהשיר האהוב עליכם!
    \n", + "אם צריך, היעזרו בדוגמת ההדפסה שמופיעה בתחילת המחברת.
    \n", + "שימו לב שניתן להדפיס יותר משורה אחת על ידי חזרה על print בכמה שורות נפרדות.
    \n", "הוסיפו אזור קוד שבו תוכלו לכתוב את פתרון התרגיל.\n", "

    " ] @@ -350,15 +350,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

    נגמר הדיו

    " + "###

    נגמר הדיו

    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

    \n", - " בהרצה של קטע הקוד הבא, פייתון תתריע על שגיאה:
    \n", + "

    \n", + " בהרצה של קטע הקוד הבא, פייתון תתריע על שגיאה:
    \n", "

    " ] }, @@ -378,8 +378,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

    \n", - "הריצו את הקוד, צפו בשגיאה ותקנו את הקוד בהתאם.
    \n", + "

    \n", + "הריצו את הקוד, צפו בשגיאה ותקנו את הקוד בהתאם.
    \n", "חזרו על הפעולה עד שהקוד ירוץ במלואו.\n", "

    " ] diff --git a/week1/2_Arithmetics.ipynb b/week1/2_Arithmetics.ipynb index b6ce225..f7dfe27 100644 --- a/week1/2_Arithmetics.ipynb +++ b/week1/2_Arithmetics.ipynb @@ -4,23 +4,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הערות" + "## הערות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

    \n", - "לפעמים נרצה לצרף דברי הסבר לקוד שכתבנו.
    \n", - "כדי להוסיף הסברים לצד הקוד נשתמש בתו סולמית, ומייד אחריה נכתוב את ההסברים שרצינו לצרף.
    \n", + "

    \n", + "לפעמים נרצה לצרף דברי הסבר לקוד שכתבנו.
    \n", + "כדי להוסיף הסברים לצד הקוד נשתמש בתו סולמית, ומייד אחריה נכתוב את ההסברים שרצינו לצרף.
    \n", "החלקים האלו בקוד נקראים הערות, ופייתון מתעלמת מקיומם כשהיא מריצה את הקוד.\n", "

    " ] @@ -29,7 +29,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

    \n", + "

    \n", "לדוגמה:\n", "

    " ] @@ -48,7 +48,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

    או אפילו באותה שורה:

    " + "

    או אפילו באותה שורה:

    " ] }, { @@ -64,9 +64,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

    \n", - " הערות נועדו להסביר את הקוד שלכם למתכנתים אחרים שיקראו אותו בעתיד.
    \n", - " בינתיים, אנחנו נשתמש בהערות כדי להבהיר ולהדגיש דוגמאות במחברת הקורס.
    \n", + "

    \n", + " הערות נועדו להסביר את הקוד שלכם למתכנתים אחרים שיקראו אותו בעתיד.
    \n", + " בינתיים, אנחנו נשתמש בהערות כדי להבהיר ולהדגיש דוגמאות במחברת הקורס.
    \n", " נהוג לכתוב הערות באנגלית, אבל רק לצורך הקורס שלנו, שמתקיים בעברית, נכופף קצת את החוקים.\n", "

    " ] @@ -75,15 +75,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# אריתמטיקה" + "# אריתמטיקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

    \n", - " אין צורך לפחד מהמונח המאיים, מדובר פשוט בפעולות חשבון בסיסיות. בואו נראה מה פייתון יודעת לעשות.
    \n", + "

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

    " ] @@ -218,21 +218,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## חלוקת שלמים ושארית" + "## חלוקת שלמים ושארית" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### חלוקת שלמים\n", - "

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

    \n", - "\n", - "

    כאשר אנחנו עושים חלוקת שלמים מהצורה A // B, אנחנו למעשה מתכוונים לשאול:

    \n", - "\n", - "

    אם יש לי A משולשי פיצה, וחילקתי את כל משלושי הפיצה באופן שווה ל־B ילדים (תזהרו מלחתוך לי את המשולשים!), כמה משולשי פיצה יקבל כל ילד?

    \n", - "\n", - "

    לדוגמה: הביטוי 4 // 9, אומר שיש לנו 9 משולשי פיצה ו־4 ילדים רעבים.
    אם נחלק את משולשי הפיצה בין הילדים, נגלה שכל ילד יקבל 2 משולשים, ושנשאר משולש אחד שלא ניתן לחלק.

    " + "### חלוקת שלמים\n", + "

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

    \n", + "

    כאשר אנחנו עושים חלוקת שלמים מהצורה A // B, אנחנו למעשה מתכוונים לשאול:

    \n", + "

    אם יש לי A משולשי פיצה, וחילקתי את כל משלושי הפיצה באופן שווה ל־B ילדים (תזהרו מלחתוך לי את המשולשים!), כמה משולשי פיצה יקבל כל ילד?

    \n", + "

    לדוגמה: הביטוי 4 // 9, אומר שיש לנו 9 משולשי פיצה ו־4 ילדים רעבים.
    אם נחלק את משולשי הפיצה בין הילדים, נגלה שכל ילד יקבל 2 משולשים, ושנשאר משולש אחד שלא ניתן לחלק.

    " ] }, { @@ -248,8 +245,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###
    שארית
    \n", - "

    למשולשי הפיצה שלא הצלחנו לחלק לילדים אנחנו קוראים שארית, וזו התוצאה שנקבל כשנכתוב את הסימן % במקום //.
    לדוגמה, אם היינו כותבים 4 % 9, היינו מקבלים 1, הרי הוא משולש הפיצה שנשאר מהדוגמה שלמעלה.

    " + "###
    שארית
    \n", + "

    למשולשי הפיצה שלא הצלחנו לחלק לילדים אנחנו קוראים שארית, וזו התוצאה שנקבל כשנכתוב את הסימן % במקום //.
    לדוגמה, אם היינו כותבים 4 % 9, היינו מקבלים 1, הרי הוא משולש הפיצה שנשאר מהדוגמה שלמעלה.

    " ] }, { @@ -265,20 +262,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    \n", - "
    \n", - " \"טיפ!\" \n", - "
    \n", - "
    \n", + "
    \n", + "
    \n", + "\"טיפ!\"\n", + "
    \n", + "
    \n", " עבור מספרים חיוביים, תוכלו להמיר את החלוקה ה\"רגילה\" מהצורה\n", - "
    $\\normalsize{\\frac{9}{4}}$
    \n", + "
    $\\normalsize{\\frac{9}{4}}$
    \n", " לשבר מעורב מהצורה\n", - "
    $\\normalsize{2\\frac{1}{4}}$
    .\n", - "
    \n", + "
    $\\normalsize{2\\frac{1}{4}}$
    .\n", + "
    \n", " המספר השלם שהתקבל\n", - "
    ($\\normalsize{2}$)
    \n", + "
    ($\\normalsize{2}$)
    \n", " הוא תוצאת חילוק השלמים, בעוד שהמספר במונה \n", - "
    ($\\normalsize{1}$)
    \n", + "
    ($\\normalsize{1}$)
    \n", " הוא השארית.\n", "
    \n", "
    " @@ -288,24 +285,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגול: תה אמריקה" + "## תרגול: תה אמריקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

    \n", + "חובבי תה רציניים ידעו להגיד לכם, שחליטת התה שלכם צריכה להיעשות בטמפרטורה מסוימת מאוד, שתלויה בסוג התה שבידכם.
    \n", + "כפלצן תה גדול, אני מזמין לעיתים קרובות תה ממחוזות מוזרים בעולם, שבהם מציגים את הטמפרטורה המושלמת לחליטת התה במעלות פרנהייט במקום בצלזיוס.
    \n", + "לאחרונה קיבלתי תה יסמין שהיה צריך לחלוט ב־176 מעלות פרנהייט.
    \n", "הדלקתי קומקום ועקבתי אחרי הטמפרטורה של המים. עזרו לי, והדפיסו את הטמפרטורה שאליה המים צריכים להגיע, במעלות צלזיוס.\n", "

    \n", - "\n", - "

    \n", - "הנוסחה להמרה מפרנהייט לצלזיוס היא (5 חלקי 9) כפול (מעלות בפרנהייט פחות 32).
    \n", - "או, אם אתם מעדיפים כתיב מתמטי: $\\normalsize{C = \\frac{5}{9}\\times(F - 32)}$
    \n", - "לדוגמה, אם הייתי צריך לחלוט את התה שלי ב־212 מעלות פרנהייט, הייתי מצפה שתציגו לי 100, כיוון ש: $\\normalsize{C = \\frac{5}{9}\\times(212 - 32)} = 100$\n", + "

    \n", + "הנוסחה להמרה מפרנהייט לצלזיוס היא (5 חלקי 9) כפול (מעלות בפרנהייט פחות 32).
    \n", + "או, אם אתם מעדיפים כתיב מתמטי: $\\normalsize{C = \\frac{5}{9}\\times(F - 32)}$
    \n", + "לדוגמה, אם הייתי צריך לחלוט את התה שלי ב־212 מעלות פרנהייט, הייתי מצפה שתציגו לי 100, כיוון ש: $\\normalsize{C = \\frac{5}{9}\\times(212 - 32)} = 100$\n", "

    " ] }, diff --git a/week1/3_Types.ipynb b/week1/3_Types.ipynb index 22e7a6f..ecbe730 100644 --- a/week1/3_Types.ipynb +++ b/week1/3_Types.ipynb @@ -4,31 +4,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# סוגי ערכים (טיפוסים, או types)" + "# סוגי ערכים (טיפוסים, או types)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

    " + "

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

    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", + "
        \n", "
      • מחרוזת
      • \n", "
      • מספר שלם
      • \n", - "
      • מספר עשרוני (\"שבר\")
      • \n", + "
      • מספר עשרוני (\"שבר\")
      • \n", "
      " ] }, @@ -36,7 +36,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

      " + "

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

      " ] }, { @@ -58,16 +58,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

      המינוח המקצועי ל\"סוג\" הוא \"טיפוס\", או באנגלית: type.

      " + "

      המינוח המקצועי ל\"סוג\" הוא \"טיפוס\", או באנגלית: type.

      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", - "טיפוסי נתונים מזכירים מצבי צבירה: כפי שניתן למצוא בטבע מים בצורות שונות (כנוזל – לשתייה, וכמוצק – קוביות קרח),
      \n", - "כך בפייתון ניתן להשתמש בערך מסוים בכמה צורות.
      \n", + "

      \n", + "טיפוסי נתונים מזכירים מצבי צבירה: כפי שניתן למצוא בטבע מים בצורות שונות (כנוזל – לשתייה, וכמוצק – קוביות קרח),
      \n", + "כך בפייתון ניתן להשתמש בערך מסוים בכמה צורות.
      \n", "נניח, בערך 9.5 ניתן להשתמש גם כמספר (9.5) וגם כמחרוזת ('9.5'). השימוש בכל אחד מהם הוא למטרה אחרת.\n", "

      " ] @@ -76,16 +76,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      \n", - " \"טיפ!\" \n", - "
      \n", - "
      \n", - "

      \n", - " בניסוח רשמי או אקדמי משתמשים במינוח \"טיפוס\" או במינוח \"טיפוס נתונים\" כדי לסווג ערכים לקבוצות שונות.
      \n", - " בתעשייה וביום־יום משתמשים במינוח \"סוג\". לדוגמה: מוישה, מאיזה סוג המשתנה age שהגדרת פה?
      \n", - "

      \n", - "
      \n", + "
      \n", + "
      \n", + "\"טיפ!\"\n", + "
      \n", + "
      \n", + "

      \n", + " בניסוח רשמי או אקדמי משתמשים במינוח \"טיפוס\" או במינוח \"טיפוס נתונים\" כדי לסווג ערכים לקבוצות שונות.
      \n", + " בתעשייה וביום־יום משתמשים במינוח \"סוג\". לדוגמה: מוישה, מאיזה סוג המשתנה age שהגדרת פה?
      \n", + "

      \n", + "
      \n", "
      " ] }, @@ -93,16 +93,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

      type

      " + "##

      type

      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

      כיוון שסוגי ערכים הם עניין מרכזי כל כך בפייתון, קיימת דרך לבדוק מה הוא הסוג של ערך מסוים.
      \n", + "

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

      \n", - "\n", "
      \n", "\n", "| שם בפייתון | שם באנגלית | שם בעברית |\n", @@ -116,8 +115,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - " כדי לראות את הסוג של ערך נתון, נשתמש ב־type(VALUE), כאשר במקום VALUE יופיע הערך אותו נרצה לבדוק.\n", + "\n", + " כדי לראות את הסוג של ערך נתון, נשתמש ב־type(VALUE), כאשר במקום VALUE יופיע הערך אותו נרצה לבדוק.\n", "" ] }, @@ -125,17 +124,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      \n", - " \"תרגול\" \n", - "
      \n", - "
      \n", - "

      \n", - " לפניכם דוגמאות אחדות של שימוש ב־type.
      \n", - " קבעו מה תהיה התוצאה של כל אחת מהדוגמאות, ורק לאחר מכן הריצו ובדקו אם צדקתם.
      \n", + "

      \n", + "
      \n", + "\"תרגול\"\n", + "
      \n", + "
      \n", + "

      \n", + " לפניכם דוגמאות אחדות של שימוש ב־type.
      \n", + " קבעו מה תהיה התוצאה של כל אחת מהדוגמאות, ורק לאחר מכן הריצו ובדקו אם צדקתם.
      \n", " אם טעיתם – לא נורא, ממילא מדובר פה בהימורים מושכלים.\n", "

      \n", - "
      \n", + "
      \n", "
      " ] }, @@ -215,14 +214,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגול" + "## תרגול" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", + "

      \n", "בדקו מה הסוג של הערכים והביטויים הבאים:\n", "

      " ] @@ -255,14 +254,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

      שוני בין סוגי ערכים

      " + "##

      שוני בין סוגי ערכים

      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", + "

      \n", "סוג הערכים ישפיע על התנהגותם בפועל. הריצו את שלושת קטעי הקוד הבאים ונסו לעמוד על ההבדלים ביניהם:\n", "

      " ] @@ -298,17 +297,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", - "
      \n", - " \"אזהרה!\" \n", - "
      \n", - "
      \n", - "

      \n", - " פעולות המערבות סוגי ערכים שונים לא תמיד עובדות.
      \n", - " לדוגמה, כשננסה לחבר מספר שלם ומספר עשרוני, נקבל מספר עשרוני. לעומת זאת, כשננסה לחבר מספר שלם למחרוזת, פייתון תתריע לפנינו על שגיאה.
      \n", - " נמשיל לקערת קוביות קרח: נוכל לספור כמה קוביות קרח יש בה גם אם נוסיף מספר קוביות, אבל יהיה קשה לנו לתאר את תוכן הקערה אם נשפוך אליה כוס מים.
      \n", - "

      \n", - "
      \n", + "
      \n", + "
      \n", + "\"אזהרה!\"\n", + "
      \n", + "
      \n", + "

      \n", + " פעולות המערבות סוגי ערכים שונים לא תמיד עובדות.
      \n", + " לדוגמה, כשננסה לחבר מספר שלם ומספר עשרוני, נקבל מספר עשרוני. לעומת זאת, כשננסה לחבר מספר שלם למחרוזת, פייתון תתריע לפנינו על שגיאה.
      \n", + " נמשיל לקערת קוביות קרח: נוכל לספור כמה קוביות קרח יש בה גם אם נוסיף מספר קוביות, אבל יהיה קשה לנו לתאר את תוכן הקערה אם נשפוך אליה כוס מים.
      \n", + "

      \n", + "
      \n", "
      " ] }, @@ -316,7 +315,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", + "

      \n", "דוגמה לערכים מסוגים שונים שפעולת החיבור ביניהם עובדת:\n", "

      " ] @@ -334,7 +333,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", + "

      \n", "דוגמה לערכים מסוגים שונים שפעולת החיבור ביניהם גורמת לפייתון להתריע על שגיאה:\n", "

      " ] diff --git a/week1/4_Variables.ipynb b/week1/4_Variables.ipynb index 7905537..7e0ba3d 100644 --- a/week1/4_Variables.ipynb +++ b/week1/4_Variables.ipynb @@ -4,27 +4,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

      משתנים

      " + "#

      משתנים

      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", - "בואו נחשב את נפח הפיצה שלנו לפי אורך המשולש ועוביו.
      \n", + "

      \n", + "בואו נחשב את נפח הפיצה שלנו לפי אורך המשולש ועוביו.
      \n", "הנוסחה לחישוב נפח פיצה היא:\n", - " $pi \\times z \\times z \\times a$,\n", - "כאשר $z$ הוא אורך המשולש ו־$a$ הוא עובי המשולש.
      \n", - " pi, או $\\pi$, הוא מספר קבוע שנקרא בעברית פאי, וערכו קרוב ל־3.141592653589793. בפועל יש לו אין־סוף ספרות אחרי הנקודה העשרונית, אבל אנחנו נסתפק באלו.
      \n", - "נניח שאורכו של המשולש הוא 5 מטרים, ועוביו הוא 2 מטרים (זו למעשה עוגת פיצה. אנחנו אוהבים!)
      \n", + " $pi \\times z \\times z \\times a$,\n", + "כאשר $z$ הוא אורך המשולש ו־$a$ הוא עובי המשולש.
      \n", + " pi, או $\\pi$, הוא מספר קבוע שנקרא בעברית פאי, וערכו קרוב ל־3.141592653589793. בפועל יש לו אין־סוף ספרות אחרי הנקודה העשרונית, אבל אנחנו נסתפק באלו.
      \n", + "נניח שאורכו של המשולש הוא 5 מטרים, ועוביו הוא 2 מטרים (זו למעשה עוגת פיצה. אנחנו אוהבים!)
      \n", "נחשב:\n", "

      " ] @@ -42,16 +42,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"פיצה" + "\"פיצה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", - "אך אבוי!
      \n", - "מתכנת אחר שיקרא את הקוד שלכם, עלול להתבלבל מכמות המספרים הלא מובנים בעליל שכתובים שם, וקרוב לוודאי שהוא לא יבין מה הם אומרים.
      \n", + "

      \n", + "אך אבוי!
      \n", + "מתכנת אחר שיקרא את הקוד שלכם, עלול להתבלבל מכמות המספרים הלא מובנים בעליל שכתובים שם, וקרוב לוודאי שהוא לא יבין מה הם אומרים.
      \n", "יותר מזה, אם תרצו לחשב את גודלן של פיצות רבות נוספות, תצטרכו לכתוב את פאי המסורבל (סליחה פאי) פעמים רבות בקוד.\n", "

      " ] @@ -60,15 +60,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

      השמה

      " + "##

      השמה

      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", - "למזלנו, בפייתון יש דרך לתת לערכים שם, ממש כמו תווית שכזו. ערכים עם שם נקראים משתנים, ויש להם יתרונות רבים נוספים שנגלה בהמשך.
      \n", + "

      \n", + "למזלנו, בפייתון יש דרך לתת לערכים שם, ממש כמו תווית שכזו. ערכים עם שם נקראים משתנים, ויש להם יתרונות רבים נוספים שנגלה בהמשך.
      \n", "כעת נדגים כיצד אנחנו נותנים לערך \"פאי\" שם, ואיך מייד לאחר מכן אנחנו משתמשים בו.\n", "

      " ] @@ -87,10 +87,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", - "תחילה נשים לב לכך שאף שהשתמשנו בסימן =, השורה הראשונה היא לא שוויון מהסוג שאנחנו רגילים אליו.
      \n", - "משמעות הסימן בתכנות שונה לחלוטין, והעיקרון שאותו הוא מממש נקרא השמה.
      \n", - "בהשמה אנחנו שמים את הערך שנמצא בצד ימין של השווה, בתוך משתנה ששמו נכתב בצד שמאל של השווה.
      \n", + "

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

      " ] @@ -99,7 +99,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", + "

      \n", "ניצור משתנים גם עבור שאר הערכים:\n", "

      " ] @@ -120,7 +120,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", + "

      \n", "או אם בא לנו להיות אפילו מובנים יותר, ניתן למשתנים שמות ברורים:\n", "

      " ] @@ -142,9 +142,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", - "אם נרצה לתאר את הקוד שלנו במילים, נוכל להגיד שיצרנו שלושה משתנים שאליהם השמנו את הנתונים הדרושים לנו לחישוב נפח הפיצה.
      \n", - "בסוף, חישבנו את נפח הפיצה, ואת התוצאה השמנו למשתנה נוסף בשם pizza_volume.
      \n", + "

      \n", + "אם נרצה לתאר את הקוד שלנו במילים, נוכל להגיד שיצרנו שלושה משתנים שאליהם השמנו את הנתונים הדרושים לנו לחישוב נפח הפיצה.
      \n", + "בסוף, חישבנו את נפח הפיצה, ואת התוצאה השמנו למשתנה נוסף בשם pizza_volume.
      \n", "את הערך הנמצא במשתנה הזה הדפסנו למסך.\n", "

      " ] @@ -153,14 +153,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

      מונחים

      " + "###

      מונחים

      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
      \n", + "
      \n", "
      אופרטור ההשמה
      סתם שם מפחיד שמתאר את הסימן = כשרוצים לבצע השמה.
      \n", "
      שם המשתנה
      מופיע משמאל לאופרטור ההשמה.
      \n", "
      ערך המשתנה
      התוכן (הערך) של המשתנה שבסופו של דבר המחשב יזכור. מופיע מימין לאופרטור ההשמה.
      \n", @@ -171,18 +171,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

      איך משתנים עובדים?

      " + "##

      איך משתנים עובדים?

      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

      \n", - "אפשר לדמיין משתנים כמצביע לייזר קטן.
      \n", - "כשאתם מבצעים השמה, אתם מבקשים מפייתון ליצור לייזר בשם שבחרתם, ולהצביע בעזרתו על ערך מסוים.
      \n", - "נניח, במקרה שבו pi = 3.14, אנחנו מבקשים מפייתון ליצור לייזר בשם pi שיצביע על הערך 3.14.
      \n", - "בכל פעם שתציינו בהמשך הקוד את שם הלייזר, פייתון תבדוק להיכן הוא מצביע, ותיקח את הערך שנמצא שם.
      \n", + "

      \n", + "אפשר לדמיין משתנים כמצביע לייזר קטן.
      \n", + "כשאתם מבצעים השמה, אתם מבקשים מפייתון ליצור לייזר בשם שבחרתם, ולהצביע בעזרתו על ערך מסוים.
      \n", + "נניח, במקרה שבו pi = 3.14, אנחנו מבקשים מפייתון ליצור לייזר בשם pi שיצביע על הערך 3.14.
      \n", + "בכל פעם שתציינו בהמשך הקוד את שם הלייזר, פייתון תבדוק להיכן הוא מצביע, ותיקח את הערך שנמצא שם.
      \n", "אם כך, לצורך האנלוגיה הזו, הלייזר הוא שם המשתנה, שמצביע על ערך המשתנה.\n", "

      " ] @@ -192,8 +192,8 @@ "metadata": {}, "source": [ "
      \n", - " \"איור\n", - "
      המחשה של שלושה לייזרים שמצביעים על משתנים.
      \n", + "\"איור\n", + "
      המחשה של שלושה לייזרים שמצביעים על משתנים.
      \n", "
      " ] }, @@ -201,21 +201,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

      חוקים לשמות משתנים

      " + "##

      חוקים לשמות משתנים

      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
        \n", + "
          \n", "
        1. חוק 1: שם משתנה יכול לכלול רק ספרות (0–9), אותיות לטיניות גדולות (A-Z) או קטנות (a-z) וקו תחתון (_).
        2. \n", "
        3. חוק 2: שם משתנה לא יכול להתחיל בספרה.
        4. \n", "
        5. מוסכמה 1: נהוג ששם משתנה יהיה באותיות קטנות, ומילים יופרדו בקווים תחתונים.
        6. \n", "
        7. מוסכמה 2: נהוג לתת למשתנה שם שמתאר היטב את תפקידו בקוד.
        8. \n", "
        \n", - "\n", - "

        \n", + "

        \n", "המוסכמה הראשונה נכונה ברוב המקרים, אך לא בכולם. בעתיד ניכנס לעובי הקורה בכל הנוגע לכתיבת קוד בהתאם למוסכמות בעולם התכנות.\n", "

        " ] @@ -224,30 +223,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

        תרגול שמות משתנים

        " + "###

        תרגול שמות משתנים

        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "####

        בדקו האם שם המשתנה עומד בחוקים ובמוסכמות

        " + "####

        בדקו האם שם המשתנה עומד בחוקים ובמוסכמות

        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
        \n", - "
        \n", - " \"תרגול\"\n", - "
        \n", - "
        \n", - "

        \n", - " עבור כל אחד משמות המשתנים שלפניכם, רשמו במחברת או בהערה האם שם המשתנה עומד בחוקים ובמוסכמות.
        \n", + "

        \n", + "
        \n", + "\"תרגול\"\n", + "
        \n", + "
        \n", + "

        \n", + " עבור כל אחד משמות המשתנים שלפניכם, רשמו במחברת או בהערה האם שם המשתנה עומד בחוקים ובמוסכמות.
        \n", " אחרי שרשמתם בצד, תקנו את שמות המשתנים הבעיתיים, וודאו שהרצת התא לא תגרום לשגיאה.\n", "

        \n", - "
        \n", + "
        \n", "
        " ] }, @@ -273,14 +272,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### תנו שם למשתנים הבאים:" + "#### תנו שם למשתנים הבאים:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
          \n", + "
            \n", "
          1. השם של כותב הספר.
          2. \n", "
          3. הגיל של המשתמש בתוכנית.
          4. \n", "
          5. המלל במחברת הזו.
          6. \n", @@ -292,15 +291,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

            עריכת ערכי משתנים

            " + "##

            עריכת ערכי משתנים

            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

            \n", - "בתחילת המחברת ביצענו כמה השמות למשתנים. לעיתים קרובות, נרצה לערוך את התוכן של המשתנה.
            \n", + "

            \n", + "בתחילת המחברת ביצענו כמה השמות למשתנים. לעיתים קרובות, נרצה לערוך את התוכן של המשתנה.
            \n", "בואו נראה דוגמה:\n", "

            " ] @@ -320,44 +319,44 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

            \n", - "מה קרה כאן?
            \n", - "בשורה 1 עשינו השמה פשוטה, כפי שלמדנו קודם. עד כאן הכול מוכר.
            \n", + "

            \n", + "מה קרה כאן?
            \n", + "בשורה 1 עשינו השמה פשוטה, כפי שלמדנו קודם. עד כאן הכול מוכר.
            \n", "בשורה 2 הרעיון זהה. כל מה שאתם צריכים לזכור הוא שפייתון תחשב קודם את צד ימין (הערך) ורק אז תכניס אותו לתוך צד שמאל (שם המשתנה).\n", "

            \n", - "

            \n", + "

            \n", "בואו נעקוב אחרי דרך המחשבה של פייתון כשהיא קוראת את השורה השנייה:\n", "

            \n", "
            \n", - "
              \n", + "
                \n", "
              1. הסתכל על צד ימין של ההשמה.
              2. \n", "
              3. בדוק על איזה ערך מצביע הלייזר שנקרא my_age.
              4. \n", "
              5. הערך הוא 24. חשב את 1 + 24.
              6. \n", "
              7. התוצאה היא 25; צד ימין \"פתור\".
              8. \n", - "
              9. הכנס את הערך 25 לתוך הצד השמאלי של ההשמה, my_age.
              10. \n", - "
              " + "
            1. הכנס את הערך 25 לתוך הצד השמאלי של ההשמה, my_age.
            2. \n", + "
            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

            תרגול

            " + "##

            תרגול

            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

            ארגז קרמבו

            " + "###

            ארגז קרמבו

            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

            \n", - "קניתי 5 ארגזים גדולים של קרמבו. בארגז יש 10 יחידות קרמבו בכל שורה, ו־4 יחידות קרמבו בכל עמודה.
            \n", + "

            \n", + "קניתי 5 ארגזים גדולים של קרמבו. בארגז יש 10 יחידות קרמבו בכל שורה, ו־4 יחידות קרמבו בכל עמודה.
            \n", "נסו לשים כל אחד מהנתונים שמצאתם בשאלה במשתנה, ולהדפיס כמה קרמבו יש לי.\n", "

            " ] @@ -373,18 +372,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

            מבריחים מהבריכה

            " + "###

            מבריחים מהבריכה

            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

            \n", - "אורך הבריכה הפרטית שהייתי מת שתהיה לי הוא 50 מטר, ורוחבה 25 מטר.
            \n", - "כדי להיתקע בכמה שיותר אנשים בדרך, אני מתכנן לשחות באלכסון, מהפינה האחת של הבריכה לפינה הנגדית לה.
            \n", - "אני נמצא בפינה שממנה אני מתכנן לצאת. תוכלו לעזור לי להבין מה המרחק שאצטרך לשחות כדי להגיע לפינה הנגדית?
            \n", - "נסו לעשות שימוש ב־3 משתנים כדי לפתור את השאלה.
            \n", + "

            \n", + "אורך הבריכה הפרטית שהייתי מת שתהיה לי הוא 50 מטר, ורוחבה 25 מטר.
            \n", + "כדי להיתקע בכמה שיותר אנשים בדרך, אני מתכנן לשחות באלכסון, מהפינה האחת של הבריכה לפינה הנגדית לה.
            \n", + "אני נמצא בפינה שממנה אני מתכנן לצאת. תוכלו לעזור לי להבין מה המרחק שאצטרך לשחות כדי להגיע לפינה הנגדית?
            \n", + "נסו לעשות שימוש ב־3 משתנים כדי לפתור את השאלה.
            \n", "טיפ: סיפרו לי שנוסחת אלכסון היא $(l^2 + w^2)^{0.5}$, כאשר \n", " ${l}$\n", " מציין את אורך הבריכה ו־\n", @@ -404,9 +403,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

            \n", - "לאחר שיפוץ של הבריכה הפרטית שהייתי מת שתהיה לי, אורכה גדל פי 2.
            \n", - "כחלק מהשיפוצים גם הוסיפו לבריכה מסלולים, כך שהרוחב שלה גדל בגודל השווה לאורך החדש של הבריכה.
            \n", + "

            \n", + "לאחר שיפוץ של הבריכה הפרטית שהייתי מת שתהיה לי, אורכה גדל פי 2.
            \n", + "כחלק מהשיפוצים גם הוסיפו לבריכה מסלולים, כך שהרוחב שלה גדל בגודל השווה לאורך החדש של הבריכה.
            \n", "הדפיסו את הגודל החדש של הבריכה. אל תשנו את הקוד למעלה; פשוט המשיכו אותו בתא הבא, והשתמשו בהשמה כדי להתאים את המשתנים למציאות החדשה.\n", "

            " ] @@ -415,18 +414,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
            \n", - "
            \n", - " \"טיפ!\"\n", - "
            \n", - "
            \n", - "

            \n", - " ניתן להתייחס גם למשתנים שהוגדרו בתאים אחרים במחברת.
            \n", - " לדוגמה, אם הרצנו תא שבו הוגדר משתנה בשם w, מאותו רגע כל תא אחר במחברת יוכל להשתמש במשתנה w.
            \n", + "

            \n", + "
            \n", + "\"טיפ!\"\n", + "
            \n", + "
            \n", + "

            \n", + " ניתן להתייחס גם למשתנים שהוגדרו בתאים אחרים במחברת.
            \n", + " לדוגמה, אם הרצנו תא שבו הוגדר משתנה בשם w, מאותו רגע כל תא אחר במחברת יוכל להשתמש במשתנה w.
            \n", " ערכו של משתנה מסויים בזמן נתון הוא הערך שהוגדר עבורו בתא האחרון שהורץ במחברת.\n", "

            \n", - "
            \n", - "
            " + "
            \n", + "
            " ] }, { @@ -440,17 +439,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

            ברכות

            " + "###

            ברכות

            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
              \n", - "
            1. הגדירו משתנה שערכו הוא השם שלכם.
            2. \n", - "
            3. הגדירו משתנה שערכו הוא ברכה חגיגית: \"מזל טוב\", \"חג שמח\" או סתם \"יא מגניב אחד\".
            4. \n", - "
            5. חברו את שניהם למשפט.
            6. \n", + "
                \n", + "
              1. הגדירו משתנה שערכו הוא השם שלכם.
              2. \n", + "
              3. הגדירו משתנה שערכו הוא ברכה חגיגית: \"מזל טוב\", \"חג שמח\" או סתם \"יא מגניב אחד\".
              4. \n", + "
              5. חברו את שניהם למשפט.
              6. \n", "
              " ] }, @@ -458,7 +457,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

              \n", + "

              \n", "לדוגמה: אם השם שלי הוא David והברכה שהוכנסה היא You are cool, המשפט שיצא הוא David You are cool.\n", "

              " ] diff --git a/week1/5_Input_and_Casting.ipynb b/week1/5_Input_and_Casting.ipynb index c286f4e..ed58809 100644 --- a/week1/5_Input_and_Casting.ipynb +++ b/week1/5_Input_and_Casting.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

              קלט

              " + "#

              קלט

              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

              מה זה קלט?

              " + "##

              מה זה קלט?

              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

              \n", - "אחד הדברים הכיפיים ביותר בתכנות, הוא להשתמש ולהגיב לנתונים שנאספו ממקור חיצוני. נתונים אלו נקראים במינוח מקצועי קלט.
              \n", - "קלט יכול להגיע מכמה מקורות: מטקסט שהמשתמש מזין באמצעות המקלדת, או מקובץ חיצוני.
              \n", + "

              \n", + "אחד הדברים הכיפיים ביותר בתכנות, הוא להשתמש ולהגיב לנתונים שנאספו ממקור חיצוני. נתונים אלו נקראים במינוח מקצועי קלט.
              \n", + "קלט יכול להגיע מכמה מקורות: מטקסט שהמשתמש מזין באמצעות המקלדת, או מקובץ חיצוני.
              \n", "בשיעורים הקרובים נתמקד בקלט שהמשתמש מזין באמצעות המקלדת, ובעתיד נרחיב את היכולות שלנו בשיטות נוספות.\n", "

              " ] @@ -36,14 +36,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

              דוגמאות לקלט

              " + "###

              דוגמאות לקלט

              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                \n", + "
                  \n", "
                1. משתמש מזין בתוכנה באמצעות המקלדת את שם המשתמש והסיסמה שלו.
                2. \n", "
                3. משתמש ב־Google מזין שאילתה, ואז לוחץ על \"חיפוש\".
                4. \n", "
                5. משתמש מזין את הקוד הסודי שלו בכספומט.
                6. \n", @@ -57,16 +57,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                  כיצד מקבלים קלט?

                  " + "##

                  כיצד מקבלים קלט?

                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                  \n", - "כדי לקבל קלט מהמשתמש באמצעות המקלדת, נשתמש ב־input(), כשבתוך הסוגריים נכתוב מחרוזת כלשהי שתוצג למשתמש (ראו דוגמה).
                  \n", - "מטרת המחרוזת – להסביר למשתמש שאנחנו מצפים ממנו לקלט, ומאיזה סוג.
                  \n", + "

                  \n", + "כדי לקבל קלט מהמשתמש באמצעות המקלדת, נשתמש ב־input(), כשבתוך הסוגריים נכתוב מחרוזת כלשהי שתוצג למשתמש (ראו דוגמה).
                  \n", + "מטרת המחרוזת – להסביר למשתמש שאנחנו מצפים ממנו לקלט, ומאיזה סוג.
                  \n", "בואו נראה איך זה עובד:\n", "

                  " ] @@ -90,10 +90,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                  \n", - "השורה הראשונה היא החידוש פה: בשורה זו אנחנו מבקשים קלט מהמשתמש (את השם שלו), ושומרים את הקלט שהזין במשתנה בשם name.
                  \n", - "ברגע שפייתון מגיעה ל־input(), היא עוצרת כל פעולה, עד שתקבל קלט מהמשתמש.
                  \n", - "לאחר מכן היא \"מחליפה\" את input() בקלט שקיבלה מהמשתמש.
                  \n", + "

                  \n", + "השורה הראשונה היא החידוש פה: בשורה זו אנחנו מבקשים קלט מהמשתמש (את השם שלו), ושומרים את הקלט שהזין במשתנה בשם name.
                  \n", + "ברגע שפייתון מגיעה ל־input(), היא עוצרת כל פעולה, עד שתקבל קלט מהמשתמש.
                  \n", + "לאחר מכן היא \"מחליפה\" את input() בקלט שקיבלה מהמשתמש.
                  \n", "לדוגמה, אם הזנתי כקלט Moishalah, מה שיקרה בפועל אלו השורות הבאות (השוו עם הקוד מלמעלה):\n", "

                  " ] @@ -117,16 +117,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                  תרגול

                  " + "###

                  תרגול

                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                  \n", - "כתבו קוד המבקש כקלט שלושה נתונים: שם פרטי, שם משפחה ותאריך לידה.
                  \n", - "הקוד יציג למשתמש ברכה חביבה.
                  \n", + "

                  \n", + "כתבו קוד המבקש כקלט שלושה נתונים: שם פרטי, שם משפחה ותאריך לידה.
                  \n", + "הקוד יציג למשתמש ברכה חביבה.
                  \n", "לדוגמה, עבור הנתונים Israel, Cohen, 22/07/1992, הוא יציג:\n", "

                  " ] @@ -135,7 +135,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> Hi Israel Cohen! Your birthday is on 22/07/1992." + "> Hi Israel Cohen! Your birthday is on 22/07/1992." ] }, { @@ -149,14 +149,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                  המרת ערכים

                  " + "##

                  המרת ערכים

                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                  \n", + "

                  \n", "מי מכם שזוכר היטב את השיעורים הקודמים, ודאי יודע שלכל ערך שנכתוב יש סוג (או \"טיפוס\").\n", "

                  " ] @@ -192,7 +192,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                  \n", + "

                  \n", "אם אתם מרגישים שממש הספקתם לשכוח, שווה לכם להציץ בפרק 3, שמלמד על טיפוסים.\n", "

                  " ] @@ -201,8 +201,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                  \n", - "אם נשתעשע מעט עם input(), נגלה מהר מאוד שלפעמים הקלט מהמשתמש לא מגיע אלינו בדיוק כמו שרצינו.
                  \n", + "

                  \n", + "אם נשתעשע מעט עם input(), נגלה מהר מאוד שלפעמים הקלט מהמשתמש לא מגיע אלינו בדיוק כמו שרצינו.
                  \n", "בואו נראה דוגמה:\n", "

                  " ] @@ -223,21 +223,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                  \n", - "
                  \n", - " \"תרגול\"\n", - "
                  \n", - "
                  \n", - "

                  \n", + "

                  \n", + "
                  \n", + "\"תרגול\"\n", + "
                  \n", + "
                  \n", + "

                  \n", " הזינו את הנתונים בסעיפים 1 עד 5 לתוכנית התפוחים של משה ואורלי המופיעה מעלה, ונסו להבין מה קרה.\n", "

                  \n", - "
                  \n", - "
                  \n", - "

                  \n", - " חשוב!
                  \n", + "

                  \n", + "
                  \n", + "

                  \n", + "חשוב!
                  \n", " פתרו לפני שתמשיכו!\n", "

                  \n", - "
                  \n", + "
                  \n", "
                  " ] }, @@ -245,7 +245,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                    \n", + "
                      \n", "
                    1. למשה יש 0 תפוחים, ולאורלי יש 5 תפוחים.
                    2. \n", "
                    3. למשה יש 2 תפוחים, ולאורלי יש 3 תפוחים.
                    4. \n", "
                    5. למשה יש -15 תפוחים, ולאורלי יש 2 תפוחים.
                    6. \n", @@ -258,15 +258,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                      אז מה קרה בתרגול?

                      " + "###

                      אז מה קרה בתרגול?

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "אף על פי שרצינו להתייחס לקלט כאל נתון מספרי (int), פייתון החליטה להתייחס אליו כמחרוזת (str), ולכן חיברה בין מחרוזות ולא בין מספרים.
                      \n", + "

                      \n", + "אף על פי שרצינו להתייחס לקלט כאל נתון מספרי (int), פייתון החליטה להתייחס אליו כמחרוזת (str), ולכן חיברה בין מחרוזות ולא בין מספרים.
                      \n", "מכאן אנחנו לומדים חוק חשוב מאוד, שאם ניטיב לזכור אותו יחסוך לנו הרבה תקלות בעתיד:\n", "

                      " ] @@ -275,15 +275,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                      \n", - "
                      \n", - " \"אזהרה!\" \n", - "
                      \n", - "
                      \n", - "

                      \n", + "

                      \n", + "
                      \n", + "\"אזהרה!\"\n", + "
                      \n", + "
                      \n", + "

                      \n", " כשאנחנו מקבלים קלט באמצעות input(), הערך שנקבל יהיה תמיד מטיפוס מחרוזת.\n", "

                      \n", - "
                      \n", + "
                      \n", "
                      " ] }, @@ -291,8 +291,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "שימו לב שניסיון לעשות פעולות בין טיפוסים שונים (כמו מחרוזת ומספר שלם) עלול לגרום לכם לשגיאות בתרגולים הקרובים.
                      \n", + "

                      \n", + "שימו לב שניסיון לעשות פעולות בין טיפוסים שונים (כמו מחרוזת ומספר שלם) עלול לגרום לכם לשגיאות בתרגולים הקרובים.
                      \n", "נסו, לדוגמה, להריץ את הקוד הבא:\n", "

                      " ] @@ -312,17 +312,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                      המרת טיפוסים (Casting)

                      " + "###

                      המרת טיפוסים (Casting)

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - " שפכנו ליטר מים לקערה עם 5 קוביות קרח. כמה יש בה עכשיו?
                      \n", - " קשה לנו מאוד לענות על השאלה כיוון שהיא מנוסחת באופן גרוע ומערבת דברים מסוגים שונים. מאותה סיבה בדיוק לפייתון קשה עם הקוד מלמעלה.
                      \n", - " נוכל להקפיא את המים ולמדוד כמה קרח יש בקערה, או להמיס את הקרח ולמדוד כמה מים יש בה.
                      \n", + "

                      \n", + " שפכנו ליטר מים לקערה עם 5 קוביות קרח. כמה יש בה עכשיו?
                      \n", + " קשה לנו מאוד לענות על השאלה כיוון שהיא מנוסחת באופן גרוע ומערבת דברים מסוגים שונים. מאותה סיבה בדיוק לפייתון קשה עם הקוד מלמעלה.
                      \n", + " נוכל להקפיא את המים ולמדוד כמה קרח יש בקערה, או להמיס את הקרח ולמדוד כמה מים יש בה.
                      \n", " בפייתון נצטרך להחליט מה אנחנו רוצים לעשות, ולהמיר את הערכים שאנחנו עובדים איתם לטיפוסים המתאימים לפני שנבצע את הפעולה.\n", "

                      " ] @@ -331,7 +331,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", + "

                      \n", "נזכיר שהטיפוס של כל קלט שנקבל בעזרת input() תמיד יהיה מחרוזת (str):\n", "

                      " ] @@ -362,10 +362,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "כזכור, כל עוד הקלט שלנו הוא מסוג מחרוזת, פעולות כמו חיבור שלו עם מספר ייכשלו.
                      \n", - "לכן נצטרך לדאוג ששניהם יהיו מאותו סוג על ידי המרה של אחד הערכים מסוג אחד לסוג אחר.
                      \n", - "תהליך הפיכת ערך לסוג טיפוס אחר נקרא המרת טיפוסים, או Casting / Type Conversion.
                      \n", + "

                      \n", + "כזכור, כל עוד הקלט שלנו הוא מסוג מחרוזת, פעולות כמו חיבור שלו עם מספר ייכשלו.
                      \n", + "לכן נצטרך לדאוג ששניהם יהיו מאותו סוג על ידי המרה של אחד הערכים מסוג אחד לסוג אחר.
                      \n", + "תהליך הפיכת ערך לסוג טיפוס אחר נקרא המרת טיפוסים, או Casting / Type Conversion.
                      \n", "אם נבחן את בעיית התפוחים של משה מהכותרת הקודמת:\n", "

                      " ] @@ -385,9 +385,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "נראה שהקוד לא יעבוד, כיוון שאין אפשרות לחבר בין מחרוזת (מספר התפוחים של משה מהקלט של המשתמש) לבין מספר (ה־1 שאנחנו רוצים להוסיף).
                      \n", - "כיוון שהמטרה היא להוסיף תפוח 1 למספר מסוים של תפוחים, נבחר להמיר את moshe_apples למספר שלם (int) במקום מחרוזת (str).
                      \n", + "

                      \n", + "נראה שהקוד לא יעבוד, כיוון שאין אפשרות לחבר בין מחרוזת (מספר התפוחים של משה מהקלט של המשתמש) לבין מספר (ה־1 שאנחנו רוצים להוסיף).
                      \n", + "כיוון שהמטרה היא להוסיף תפוח 1 למספר מסוים של תפוחים, נבחר להמיר את moshe_apples למספר שלם (int) במקום מחרוזת (str).
                      \n", "נעשה זאת כך:\n", "

                      " ] @@ -408,10 +408,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "איזה כיף, המרנו את מספר התפוחים של משה לערך מטיפוס שלם (שורה 2), ועכשיו הקוד עובד!
                      \n", - "שימו לב שעכשיו אם נרצה להדפיס את מספר התפוחים לצד משפט שאומר \"למשה יש X תפוחים\", אנחנו עלולים להיתקל בבעיה.
                      \n", - "המשפט שאנחנו רוצים להדפיס הוא str, ומספר התפוחים שחישבנו ושננסה לשרשר אליו יהיה int.
                      \n", + "

                      \n", + "איזה כיף, המרנו את מספר התפוחים של משה לערך מטיפוס שלם (שורה 2), ועכשיו הקוד עובד!
                      \n", + "שימו לב שעכשיו אם נרצה להדפיס את מספר התפוחים לצד משפט שאומר \"למשה יש X תפוחים\", אנחנו עלולים להיתקל בבעיה.
                      \n", + "המשפט שאנחנו רוצים להדפיס הוא str, ומספר התפוחים שחישבנו ושננסה לשרשר אליו יהיה int.
                      \n", "ראו איך זה ישפיע על התוכנית:\n", "

                      " ] @@ -432,9 +432,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "פייתון התריעה לפנינו שיש פה בעיה: בשורה האחרונה, היא לא מצליחה לחבר את מספר התפוחים עם המחרוזות הנמצאות בצדדיו.
                      \n", - "מה הפתרון?
                      \n", + "

                      \n", + "פייתון התריעה לפנינו שיש פה בעיה: בשורה האחרונה, היא לא מצליחה לחבר את מספר התפוחים עם המחרוזות הנמצאות בצדדיו.
                      \n", + "מה הפתרון?
                      \n", "אם אמרתם להמיר את מספר התפוחים של משה למחרוזת, זה אכן יעבוד. נעשה את זה ככה:\n", "

                      " ] @@ -456,15 +456,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                      טבלת המרה

                      " + "###

                      טבלת המרה

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "כדי להמיר לסוג מסוים, כל מה שאתם צריכים לדעת זה את הסוג שאליו אתם רוצים להמיר.
                      \n", + "

                      \n", + "כדי להמיר לסוג מסוים, כל מה שאתם צריכים לדעת זה את הסוג שאליו אתם רוצים להמיר.
                      \n", "משם פשוט בחרו את השם הרלוונטי מהטבלה שאתם כבר מכירים:\n", "

                      " ] @@ -484,26 +484,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                      תרגול

                      " + "##

                      תרגול

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                      קרמבו

                      " + "###

                      קרמבו

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "לגברת עמיטלי מחוות ביסקוויט יש מפעל משוגע לייצור קרמבו.
                      \n", - "אחד התפקידים במפעל הוא הרכבת קופסאות לאריזת הקרמבו ומילויה. אדון מרקוב מאייש תפקיד זה.
                      \n", - "מרקוב מחליט על מימדיה של כל קופסת קרמבו טעים חדשה שהוא ממלא: כמה יחידות קרמבו יכנסו לגובה, כמה יכנסו לרוחב וכמה יכנסו לאורך האריזה.
                      \n", - "בנו תוכנה שתעזור למרקוב לחשב את כמות הקרמבו שהוא הכניס לקופסה, לפי הנוסחה: $w \\times h \\times l$, רוחב כפול גובה כפול אורך.
                      \n", - "לדוגמה: התוכנה תקבל ממרקוב כקלט 3 עבור האורך, 4 עבור הרוחב ו־2.5 עבור הגובה, ותחזיר את הפלט 30, שהוא $2.5 \\times 3 \\times 4$.\n", + "

                      \n", + "לגברת עמיטלי מחוות ביסקוויט יש מפעל משוגע לייצור קרמבו.
                      \n", + "אחד התפקידים במפעל הוא הרכבת קופסאות לאריזת הקרמבו ומילויה. אדון מרקוב מאייש תפקיד זה.
                      \n", + "מרקוב מחליט על מימדיה של כל קופסת קרמבו טעים חדשה שהוא ממלא: כמה יחידות קרמבו יכנסו לגובה, כמה יכנסו לרוחב וכמה יכנסו לאורך האריזה.
                      \n", + "בנו תוכנה שתעזור למרקוב לחשב את כמות הקרמבו שהוא הכניס לקופסה, לפי הנוסחה: $w \\times h \\times l$, רוחב כפול גובה כפול אורך.
                      \n", + "לדוגמה: התוכנה תקבל ממרקוב כקלט 3 עבור האורך, 4 עבור הרוחב ו־2.5 עבור הגובה, ותחזיר את הפלט 30, שהוא $2.5 \\times 3 \\times 4$.\n", "

                      " ] }, @@ -518,17 +518,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                      תה אמריקה II

                      " + "###

                      תה אמריקה II

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "חזרו למחברת 2. זוכרים את התרגיל האחרון שהיה שם, על התה והמרת מעלות פרנהייט לצלזיוס?
                      \n", - "בואו נבנה מחשבון פרנהייט לצלזיוס! בקשו מהמשתמש להכניס מספר בפרנהייט, והדפיסו את המספר בצלזיוס.
                      \n", - "להזכירכם, הנוסחה היא: (5 חלקי 9) כפול (מעלות בפרנהייט פחות 32), או בכתיב מתמטי, $C = \\frac{5}{9}\\times(F - 32)$.
                      \n", + "

                      \n", + "חזרו למחברת 2. זוכרים את התרגיל האחרון שהיה שם, על התה והמרת מעלות פרנהייט לצלזיוס?
                      \n", + "בואו נבנה מחשבון פרנהייט לצלזיוס! בקשו מהמשתמש להכניס מספר בפרנהייט, והדפיסו את המספר בצלזיוס.
                      \n", + "להזכירכם, הנוסחה היא: (5 חלקי 9) כפול (מעלות בפרנהייט פחות 32), או בכתיב מתמטי, $C = \\frac{5}{9}\\times(F - 32)$.
                      \n", "לדוגמה: עבור הקלט 212 התוכנה תדפיס 100, כיוון ש־212 מעלות פרנהייט הן 100 מעלות צלזיוס.\n", "

                      " ] @@ -544,17 +544,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                      מסטיק בזוקה

                      " + "###

                      מסטיק בזוקה

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "לפי מסטיק בזוקה, עד גיל 21 תגיעו לירח. אנחנו פחות אופטימיים (לנו פשוט זה פחות עבד), ומנבאים לך הצלחה עד גיל 90.
                      \n", - "כתוב תוכנה שמקבלת כקלט את השם שלך ואת הגיל שלך, ומחשבת בעוד כמה שנים תגיע לירח לפי הנבואה שלנו.
                      \n", - "התוכנה תדפיס את המשפט: X, wait another Y years., כאשר X יוחלף בשמך ו־Y יוחלף במספר השנים שתצטרך לחכות עד גיל 90.
                      \n", + "

                      \n", + "לפי מסטיק בזוקה, עד גיל 21 תגיעו לירח. אנחנו פחות אופטימיים (לנו פשוט זה פחות עבד), ומנבאים לך הצלחה עד גיל 90.
                      \n", + "כתוב תוכנה שמקבלת כקלט את השם שלך ואת הגיל שלך, ומחשבת בעוד כמה שנים תגיע לירח לפי הנבואה שלנו.
                      \n", + "התוכנה תדפיס את המשפט: X, wait another Y years., כאשר X יוחלף בשמך ו־Y יוחלף במספר השנים שתצטרך לחכות עד גיל 90.
                      \n", "לדוגמה: אם הכנסת לתוכנה שגילך הוא 25 ושמך הוא ים, התוכנה תדפיס:\n", "

                      " ] @@ -563,7 +563,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> Yam, wait another 65 years." + "> Yam, wait another 65 years." ] }, { diff --git a/week1/6_Booleans.ipynb b/week1/6_Booleans.ipynb index 1a503de..28a1584 100644 --- a/week1/6_Booleans.ipynb +++ b/week1/6_Booleans.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                      ביטויים בוליאניים

                      " + "#

                      ביטויים בוליאניים

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                      \n", - "
                      \n", - " \"טיפ!\" \n", - "
                      \n", - "
                      \n", - "

                      \n", - " החומר במחברת זו הוא מעט תיאורטי. אין סיבה להיות עצובים, במחברות הבאה נעשה בו שימוש רחב.
                      \n", + "

                      \n", + "
                      \n", + "\"טיפ!\"\n", + "
                      \n", + "
                      \n", + "

                      \n", + " החומר במחברת זו הוא מעט תיאורטי. אין סיבה להיות עצובים, במחברות הבאה נעשה בו שימוש רחב.
                      \n", " ודאו שאתם מבינים היטב את החומר במחברת זו כדי לבסס את הידע שלכם כראוי.\n", "

                      \n", - "
                      \n", + "
                      \n", "
                      " ] }, @@ -35,16 +35,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                      הגדרה

                      " + "##

                      הגדרה

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                      \n", - "ווהו! רק פתחנו מחברת וכבר זרקו עלינו מילים מפוצצות. מה בוליאניים עכשיו?
                      \n", - "בכל הנוגע לתחום שלנו, זה הרבה יותר פשוט ממה שזה נשמע.
                      \n", + "

                      \n", + "ווהו! רק פתחנו מחברת וכבר זרקו עלינו מילים מפוצצות. מה בוליאניים עכשיו?
                      \n", + "בכל הנוגע לתחום שלנו, זה הרבה יותר פשוט ממה שזה נשמע.
                      \n", "בתכנות, ביטוי נחשב ביטוי בוליאני אם תוצאתו היא אמת או שקר.\n", "

                      " ] @@ -53,14 +53,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                      דוגמאות

                      " + "###

                      דוגמאות

                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                        \n", + "
                          \n", "
                        • האם 2 גדול מ־3?
                        • \n", "
                        • האם האור בחדר שלי דולק?
                        • \n", "
                        • האם טמפרטורת המים הזורמים כעת במקלחת היא מתחת ל־60 מעלות?
                        • \n", @@ -75,16 +75,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                          אופרטורי השוואה

                          " + "##

                          אופרטורי השוואה

                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                          " ] @@ -93,8 +93,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                          \n", - "בואו נכיר את אופרטור ההשוואה הראשון שלנו: ==.
                          \n", + "

                          \n", + "בואו נכיר את אופרטור ההשוואה הראשון שלנו: ==.
                          \n", "הריצו את הביטויים הבוליאניים הבאים, ונסו לנחש מה הוא עושה.\n", "

                          " ] @@ -184,7 +184,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                          \n", + "

                          \n", "הדוגמה הזו מלמדת אותנו 3 דברים מגניבים:\n", "

                          " ] @@ -193,7 +193,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                            \n", + "
                              \n", "
                            1. פייתון יודעת לענות בעזרת ערכים בוליאניים מיוחדים, שיכולים להיות True או False.
                            2. \n", "
                            3. יש אופרטור מגניב שנקרא אופרטור ההשוואה, צורתו היא == והוא משווה בין 2 ערכים בפייתון.
                            4. \n", "
                            5. יש סוגים שהשוואה ביניהם תעבוד (float עם int), ויש כאלו שלא (float עם str או int עם str).
                            6. \n", @@ -204,14 +204,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                              טיפוס בוליאני

                              " + "###

                              טיפוס בוליאני

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                              \n", + "

                              \n", "בתרגיל שלמעלה קיבלנו כתוצאה ערך חדש, שמעולם לא שמענו עליו. בואו נבדוק מאיזה סוג הוא!\n", "

                              " ] @@ -238,9 +238,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                              \n", - "ווהו! אז אם התרגלנו עד עכשיו שיש 3 טיפוסים שאנחנו מכירים: str, int ו־float, הכירו את הבחור החדש בשכונה!
                              \n", - "bool הוא טיפוס חביב ופשוט שמייצג רק 2 ערכים אפשריים: True או False.
                              \n", + "

                              \n", + "ווהו! אז אם התרגלנו עד עכשיו שיש 3 טיפוסים שאנחנו מכירים: str, int ו־float, הכירו את הבחור החדש בשכונה!
                              \n", + "bool הוא טיפוס חביב ופשוט שמייצג רק 2 ערכים אפשריים: True או False.
                              \n", "כל אופרטור השוואה שנחיל על שני ערכים, יחזיר תמיד ערך מסוג bool (חוץ מכשפייתון תתריע על שגיאה).\n", "

                              " ] @@ -249,16 +249,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                              \n", - "
                              \n", - " \"אזהרה!\" \n", - "
                              \n", - "
                              \n", - "

                              \n", - " טעות נפוצה בעת שימוש בערכים בוליאניים היא לא להתחשב ברגישות לאותיות גדולות/קטנות.
                              \n", + "

                              \n", + "
                              \n", + "\"אזהרה!\"\n", + "
                              \n", + "
                              \n", + "

                              \n", + " טעות נפוצה בעת שימוש בערכים בוליאניים היא לא להתחשב ברגישות לאותיות גדולות/קטנות.
                              \n", " לדוגמה: True יהיה תקין בעוד ש־true יקפיץ שגיאה.\n", "

                              \n", - "
                              \n", + "
                              \n", "
                              " ] }, @@ -266,7 +266,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                              אופרטורי השוואה נוספים

                              " + "###

                              אופרטורי השוואה נוספים

                              " ] }, { @@ -277,10 +277,10 @@ "|:----------|:----------|:--------|------:|\n", "| True | 4 == 4 | האם צד שמאל שווה לצד ימין | == |\n", "| False | 4 != 4 | האם צד שמאל שונה מצד ימין | != |\n", - "| True | 5 > 4 | האם צד שמאל גדול יותר מצד ימין | > |\n", - "| False | 4 > 5 | האם צד שמאל קטן יותר מצד ימין | < |\n", - "| False | 2 >= 4 | האם צד שמאל גדול או שווה לצד ימין | >= |\n", - "| True | 4 <= 5 | האם צד שמאל קטן או שווה לצד ימין | <= |\n", + "| True | 5 > 4 | האם צד שמאל גדול יותר מצד ימין | > |\n", + "| False | 4 > 5 | האם צד שמאל קטן יותר מצד ימין | < |\n", + "| False | 2 >= 4 | האם צד שמאל גדול או שווה לצד ימין | >= |\n", + "| True | 4 <= 5 | האם צד שמאל קטן או שווה לצד ימין | <= |\n", "| True | 'hell' in 'hello' | האם צד שמאל נמצא ברצף בצד ימין | in |" ] }, @@ -288,14 +288,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                              מונחים

                              " + "###

                              מונחים

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                              \n", + "
                              \n", "
                              ביטוי בוליאני
                              ביטוי שתוצאתו היא אמת (True) או שקר (False).
                              \n", "
                              אופרטור השוואה
                              סימן שמגדיר את סוג השוויון (או \"את השאלה\") שנרצה לבדוק בנוגע לערכים מסויימים.
                              \n", "
                              אופרנד
                              ברבים: אופרנדים. הערכים שבנוגע אליהם אנחנו רוצים לבדוק את השוויון, ושעליהם נפעיל את אופרטור ההשוואה.
                              \n", @@ -306,23 +306,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                              תרגול

                              " + "##

                              תרגול

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                              שווה את זה?

                              " + "###

                              שווה את זה?

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                              \n", - "רשמו בצד את התוצאות של כל אחת מהשורות הבאות.
                              \n", - "רק לאחר מכן הריצו ובדקו האם צדקתם בתשובתכם.
                              \n", + "

                              \n", + "רשמו בצד את התוצאות של כל אחת מהשורות הבאות.
                              \n", + "רק לאחר מכן הריצו ובדקו האם צדקתם בתשובתכם.
                              \n", "בחלק מהסעיפים (בייחוד באלו שקשורים ב־in) דרושה קצת אינטואיציה.\n", "

                              " ] @@ -484,16 +484,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                              \n", - "
                              \n", - " \"אזהרה!\" \n", - "
                              \n", - "
                              \n", - "

                              \n", - " טעות נפוצה בקרב מתחילים היא לשכוח שבהשוואה בין נתונים מספריים יש להמיר קלט מהמשתמש ל־int, ורק אז לבצע השוואה.
                              \n", + "

                              \n", + "
                              \n", + "\"אזהרה!\"\n", + "
                              \n", + "
                              \n", + "

                              \n", + " טעות נפוצה בקרב מתחילים היא לשכוח שבהשוואה בין נתונים מספריים יש להמיר קלט מהמשתמש ל־int, ורק אז לבצע השוואה.
                              \n", " פייתון לא מתריעה על טעות זו, אבל השוואה שכזו לא תיתן לכם את התוצאה שאליה התכוונתם (ראו דוגמה למעלה).\n", "

                              \n", - "
                              \n", + "
                              \n", "
                              " ] }, @@ -501,14 +501,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                              מעורב ירושלמי

                              " + "###

                              מעורב ירושלמי

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                              \n", + "

                              \n", "אנחנו הולכים להגדיר פה כמה משתנים מעניינים:\n", "

                              " ] @@ -529,8 +529,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                              \n", - "הריצו את התא שנמצא למעלה: סמנו אותו ולחצו CTRL + ENTER.
                              \n", + "

                              \n", + "הריצו את התא שנמצא למעלה: סמנו אותו ולחצו CTRL + ENTER.
                              \n", "מה יהיו התוצאות של הביטויים הבאים? כתבו אותן בצד, ואז הריצו ובדקו האם תשובתכם הייתה נכונה.\n", "

                              " ] @@ -602,17 +602,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                              \n", - "
                              \n", - " \"אזהרה!\" \n", - "
                              \n", - "
                              \n", - "

                              \n", - " טעות נפוצה היא להתבלבל בין הסימנים = ו־==.
                              \n", - " זכרו: סימן שיוויון אחד (=) מבצע פעולה של הכנסת הערך מימין למשתנה ששמו מופיע משמאל.
                              \n", - " סימן שיוויון כפול (==) היא פעולה אחרת לחלוטין, שבודקת האם הערך מימין זהה לערך משמאל.
                              \n", - "

                              \n", - "
                              \n", + "
                              \n", + "
                              \n", + "\"אזהרה!\"\n", + "
                              \n", + "
                              \n", + "

                              \n", + " טעות נפוצה היא להתבלבל בין הסימנים = ו־==.
                              \n", + " זכרו: סימן שיוויון אחד (=) מבצע פעולה של הכנסת הערך מימין למשתנה ששמו מופיע משמאל.
                              \n", + " סימן שיוויון כפול (==) היא פעולה אחרת לחלוטין, שבודקת האם הערך מימין זהה לערך משמאל.
                              \n", + "

                              \n", + "
                              \n", "
                              " ] }, @@ -620,16 +620,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                              בולילנד

                              " + "###

                              בולילנד

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                              \n", - "במחוז בולילנד השערורייתי, מותר לאכול פיצה רק מגיל 25 ומעלה.
                              \n", - "קבלו כקלט את גילו של המשתמש. הדפיסו לו True אם הוא יכול לאכול פיצה בבולילנד, או False אם הוא לא יכול.
                              \n", + "

                              \n", + "במחוז בולילנד השערורייתי, מותר לאכול פיצה רק מגיל 25 ומעלה.
                              \n", + "קבלו כקלט את גילו של המשתמש. הדפיסו לו True אם הוא יכול לאכול פיצה בבולילנד, או False אם הוא לא יכול.
                              \n", "לדוגמה: אם דוד הזין שגילו הוא 23, עליכם להציג לו False.\n", "

                              " ] @@ -638,15 +638,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                              \n", - "
                              \n", - " \"טיפ!\" \n", - "
                              \n", - "
                              \n", - "

                              \n", - " השורה print(1 == 1) תדפיס למשתמש True.\n", + "

                              \n", + "
                              \n", + "\"טיפ!\"\n", + "
                              \n", + "
                              \n", + "

                              \n", + " השורה print(1 == 1) תדפיס למשתמש True.\n", "

                              \n", - "
                              \n", + "
                              \n", "
                              " ] }, diff --git a/week1/7_Logic_Operators.ipynb b/week1/7_Logic_Operators.ipynb index c8ac5b5..c155cac 100644 --- a/week1/7_Logic_Operators.ipynb +++ b/week1/7_Logic_Operators.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                              אופרטורים לוגיים

                              " + "#

                              אופרטורים לוגיים

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                              \n", - "
                              \n", - " \"טיפ!\" \n", - "
                              \n", - "
                              \n", - "

                              \n", - " החומר במחברת זו הוא מעט תיאורטי. אין סיבה להיות עצובים, במחברת הבאה נעשה בו שימוש רחב.
                              \n", + "

                              \n", + "
                              \n", + "\"טיפ!\"\n", + "
                              \n", + "
                              \n", + "

                              \n", + " החומר במחברת זו הוא מעט תיאורטי. אין סיבה להיות עצובים, במחברת הבאה נעשה בו שימוש רחב.
                              \n", " ודאו שאתם מבינים היטב את החומר במחברת זו כדי לבסס את הידע שלכם כראוי.\n", "

                              \n", - "
                              \n", + "
                              \n", "
                              " ] }, @@ -35,16 +35,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                              מבוא

                              " + "##

                              מבוא

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                              \n", - "בשיעור הקודם למדנו קצת על ביטויים בוליאניים – ביטויים שתוצאתם היא בהכרח אמת או שקר.
                              \n", - "ראינו איך מנסחים ביטויים כאלו, ולמדנו על אופרטורי השוואה כמו == או in, שבעזרתם אנחנו מחליטים באיזו צורה אנחנו רוצים להשוות בין ביטויים.
                              \n", + "

                              \n", + "בשיעור הקודם למדנו קצת על ביטויים בוליאניים – ביטויים שתוצאתם היא בהכרח אמת או שקר.
                              \n", + "ראינו איך מנסחים ביטויים כאלו, ולמדנו על אופרטורי השוואה כמו == או in, שבעזרתם אנחנו מחליטים באיזו צורה אנחנו רוצים להשוות בין ביטויים.
                              \n", "למדנו שביטויים כאלו יכולים לעזור לנו לשאול שאלות מעניינות, כמו אם למשתמש יש יותר מ־1000 ש\"ח בבנק, או אם לבת שלו קוראים \"שמחה\".\n", "

                              " ] @@ -53,10 +53,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                              \n", - "אבל מה יקרה כשנרצה לשאול שאלות מורכבות יותר?
                              \n", - "לדוגמה, אם התנאים להרשמה לבנק שלנו הם גם שיהיו לך יותר מ־1,000 ש\"ח, וגם שתלמד בפקולטה נחשבת?
                              \n", - "למרבה הצער, בכלים שיש ברשותנו כרגע לא נוכל לנסח שאלות מורכבות שכאלו.
                              \n", + "

                              \n", + "אבל מה יקרה כשנרצה לשאול שאלות מורכבות יותר?
                              \n", + "לדוגמה, אם התנאים להרשמה לבנק שלנו הם גם שיהיו לך יותר מ־1,000 ש\"ח, וגם שתלמד בפקולטה נחשבת?
                              \n", + "למרבה הצער, בכלים שיש ברשותנו כרגע לא נוכל לנסח שאלות מורכבות שכאלו.
                              \n", "במחברת זו זה נלמד על כלים חדשים, אופרטורים לוגיים, שיאפשרו לנו לנסח שאלות מורכבות יותר.\n", "

                              " ] @@ -65,16 +65,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                              הגדרה

                              " + "##

                              הגדרה

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                              \n", - "כאמור, לעזרתנו מתגייסים \"אופרטורים לוגיים\", שמטרתם לאפשר לנו לשאול שאלות בנוגע לקשרים בין ביטויים בוליאניים.
                              \n", - "ישנם שלושה אופרטורים לוגיים: and (\"וגם\"), or (\"או\") ו־not (\"לא\").
                              \n", + "

                              \n", + "כאמור, לעזרתנו מתגייסים \"אופרטורים לוגיים\", שמטרתם לאפשר לנו לשאול שאלות בנוגע לקשרים בין ביטויים בוליאניים.
                              \n", + "ישנם שלושה אופרטורים לוגיים: and (\"וגם\"), or (\"או\") ו־not (\"לא\").
                              \n", "

                              " ] }, @@ -82,14 +82,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                              דוגמאות

                              " + "###

                              דוגמאות

                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                \n", + "
                                  \n", "
                                • האם 2 גדול מ־1, וגם קטן מ־3?
                                • \n", "
                                • האם הלקוח הזמין בירה, וגם גיל הלקוח נמוך מ־18?
                                • \n", "
                                • האם הפיצה תגיע בחצי שעה הקרובה, או האם יש אוכל במקרר?
                                • \n", @@ -103,9 +103,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                  \n", + "מהדוגמאות נוכל לשים לב לדפוס חוזר – האופרטורים הלוגיים \"וגם\" ו\"או\" מקבלים משני צידיהם ביטויים בוליאניים, ומחזירים ביטוי בוליאני אחד.
                                  \n", + "האופרטור הלוגי \"לא\" מקבל רק ביטוי בוליאני אחד, והופך אותו.
                                  \n", "לדוגמה: בשאלה האם 2 גדול מ־1 (כן) וגם 2 קטן מ־3 (כן), האופרטור הלוגי \"וגם\" מקבל \"כן\" משני צידיו, ומחזיר את התשובה הסופית כן.\n", "

                                  " ] @@ -114,30 +114,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"הבדיקה" + "\"הבדיקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                  אופרטורים לוגיים

                                  " + "##

                                  אופרטורים לוגיים

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                  and / וגם

                                  " + "###

                                  and / וגם

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "האופרטור הלוגי and פועל על שני ביטויים בוליאניים, אחד מימינו ואחד משמאלו, ומחזיר לנו ביטוי בוליאני אחד:
                                  \n", - "True אם הביטויים בשני צידיו היו True, או False בכל מקרה אחר.
                                  \n", + "

                                  \n", + "האופרטור הלוגי and פועל על שני ביטויים בוליאניים, אחד מימינו ואחד משמאלו, ומחזיר לנו ביטוי בוליאני אחד:
                                  \n", + "True אם הביטויים בשני צידיו היו True, או False בכל מקרה אחר.
                                  \n", "מבחינת מינוחים, and נחשב \"האופרטור\" (operator), והביטויים שנמצאים מצידיו נקראים \"האופרנדים\".\n", "

                                  " ] @@ -158,7 +158,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", + "

                                  \n", "נבדוק, בעזרת פייתון, אם 2 גדול מ־1 וקטן מ־3:\n", "

                                  " ] @@ -179,7 +179,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", + "

                                  \n", "או בקיצור:\n", "

                                  " ] @@ -197,17 +197,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                  or / או

                                  " + "###

                                  or / או

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "האופרטור הלוגי or פועל על שני ביטויים בוליאניים, אחד מימינו ואחד משמאלו, ומחזיר לנו ביטוי בוליאני אחד:
                                  \n", - "True אם לפחות אחד מהביטויים, מימינו או משמאלו, הם True.
                                  \n", - "הוא יחזיר False רק אם הביטויים בשני הצדדים שלו הם False.
                                  \n", + "

                                  \n", + "האופרטור הלוגי or פועל על שני ביטויים בוליאניים, אחד מימינו ואחד משמאלו, ומחזיר לנו ביטוי בוליאני אחד:
                                  \n", + "True אם לפחות אחד מהביטויים, מימינו או משמאלו, הם True.
                                  \n", + "הוא יחזיר False רק אם הביטויים בשני הצדדים שלו הם False.
                                  \n", "מבחינת מינוחים, or נחשב \"האופרטור\" (operator), והביטויים שנמצאים מצידיו נקראים \"האופרנדים\" (operands).\n", "

                                  " ] @@ -228,8 +228,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "נבדוק בעזרת פייתון אם אחת האותיות, a או x, נמצאות במילה \"barvaz\".
                                  \n", + "

                                  \n", + "נבדוק בעזרת פייתון אם אחת האותיות, a או x, נמצאות במילה \"barvaz\".
                                  \n", "

                                  " ] }, @@ -249,7 +249,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", + "

                                  \n", "או בקיצור:\n", "

                                  " ] @@ -267,17 +267,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                  not / לא

                                  " + "###

                                  not / לא

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "האופרטור הלוגי not פועל על ביטוי בוליאני אחד שבא אחריו, ומחזיר לנו את הביטוי הבוליאני ההפוך לו. רוצה לומר:
                                  \n", - "True אם הביטוי הבוליאני שאחריו הוא False.
                                  \n", - "False אם הביטוי הבוליאני שאחריו הוא True.
                                  \n", + "

                                  \n", + "האופרטור הלוגי not פועל על ביטוי בוליאני אחד שבא אחריו, ומחזיר לנו את הביטוי הבוליאני ההפוך לו. רוצה לומר:
                                  \n", + "True אם הביטוי הבוליאני שאחריו הוא False.
                                  \n", + "False אם הביטוי הבוליאני שאחריו הוא True.
                                  \n", "מבחינת מינוחים, not נחשב \"האופרטור\" (operator), והביטוי שנמצא אחריו נקרא \"האופרנד\" (operand).\n", "

                                  " ] @@ -296,7 +296,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", + "

                                  \n", "נבדוק בעזרת פייתון האם המילה \"barvaz\" לא כוללת בתוכה את האות \"q\":\n", "

                                  " ] @@ -316,7 +316,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", + "

                                  \n", "או בקיצור:\n", "

                                  " ] @@ -334,7 +334,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", + "

                                  \n", "טריק מגניב כתוספת: פייתון מאפשרת לנו לכתוב את זה אפילו בצורה קריאה יותר, בעזרת האופרטור not in:\n", "

                                  " ] @@ -352,15 +352,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                  דוגמה

                                  " + "##

                                  דוגמה

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "לצורך המשך השיעור, נניח שיש לנו את המשתנים הבאים.
                                  \n", + "

                                  \n", + "לצורך המשך השיעור, נניח שיש לנו את המשתנים הבאים.
                                  \n", "הריצו את התא ומלאו ערכים. נשתמש במשתנים האלו בהמשך.\n", "

                                  " ] @@ -380,8 +380,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "מסיבה שמחה היא מסיבה שיש בה לפחות 20 משתתפים, וגם יותר מ־100 משולשי פיצה.
                                  \n", + "

                                  \n", + "מסיבה שמחה היא מסיבה שיש בה לפחות 20 משתתפים, וגם יותר מ־100 משולשי פיצה.
                                  \n", "עד עכשיו, היינו יכולים לבדוק האם מסיבה היא שמחה רק בצורה הזו, שמדפיסה לנו 2 תשובות:\n", "

                                  " ] @@ -400,10 +400,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "אפשר להגיד כאן שרק במקרה שגם בשורה הראשונה הודפס True וגם בשורה השנייה הודפס True, המסיבה היא מסיבה שמחה.
                                  \n", - "הסיטואציה הזו, כך נראה, מתאימה לאופרטור הלוגי הראשון שדיברנו עליו – and, ובשמו העברי \"וגם\".
                                  \n", - "השאלה ששאלנו היא \"האם מספר האנשים במסיבה הוא לפחות 20, וגם מספר משולשי הפיצה במסיבה הוא מעל 100\".
                                  \n", + "

                                  \n", + "אפשר להגיד כאן שרק במקרה שגם בשורה הראשונה הודפס True וגם בשורה השנייה הודפס True, המסיבה היא מסיבה שמחה.
                                  \n", + "הסיטואציה הזו, כך נראה, מתאימה לאופרטור הלוגי הראשון שדיברנו עליו – and, ובשמו העברי \"וגם\".
                                  \n", + "השאלה ששאלנו היא \"האם מספר האנשים במסיבה הוא לפחות 20, וגם מספר משולשי הפיצה במסיבה הוא מעל 100\".
                                  \n", "ננסח בקוד:\n", "

                                  " ] @@ -422,8 +422,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "\"מסיבה עצובה\" היא מסיבה שיש בה עד 5 משתתפים, או שבה אין משולש פיצה לכל משתתף.
                                  \n", + "

                                  \n", + "\"מסיבה עצובה\" היא מסיבה שיש בה עד 5 משתתפים, או שבה אין משולש פיצה לכל משתתף.
                                  \n", "עד עכשיו, היינו יכולים לעשות את זה רק בצורה הזו, שמדפיסה לנו 2 תשובות:\n", "

                                  " ] @@ -442,10 +442,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "אפשר להגיד כאן שבמקרה שתוצאת השורה הראשונה היא True או שתוצאת השורה השנייה היא True, המסיבה היא מסיבה עצובה.
                                  \n", - "הסיטואציה הזו, כך נראה, מתאימה לאופרטור הלוגי השני שדיברנו עליו – or, ובשמו העברי \"או\".
                                  \n", - "השאלה ששאלנו היא \"האם מספר האנשים במסיבה קטן או שווה ל־5, או מספר משולשי הפיצה קטן ממספר האנשים במסיבה\".
                                  \n", + "

                                  \n", + "אפשר להגיד כאן שבמקרה שתוצאת השורה הראשונה היא True או שתוצאת השורה השנייה היא True, המסיבה היא מסיבה עצובה.
                                  \n", + "הסיטואציה הזו, כך נראה, מתאימה לאופרטור הלוגי השני שדיברנו עליו – or, ובשמו העברי \"או\".
                                  \n", + "השאלה ששאלנו היא \"האם מספר האנשים במסיבה קטן או שווה ל־5, או מספר משולשי הפיצה קטן ממספר האנשים במסיבה\".
                                  \n", "ננסח בקוד:\n", "

                                  " ] @@ -464,16 +464,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                  טבלאות אמת

                                  " + "##

                                  טבלאות אמת

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "טבלאות אמת זו דרך ישנה נושנה לתאר את התוצאה של אופרטורים לוגיים בכל אחד מהמקרים האפשריים.
                                  \n", - "נצייר טבלאות כאלו עבור and, or ו־not.
                                  \n", + "

                                  \n", + "טבלאות אמת זו דרך ישנה נושנה לתאר את התוצאה של אופרטורים לוגיים בכל אחד מהמקרים האפשריים.
                                  \n", + "נצייר טבלאות כאלו עבור and, or ו־not.
                                  \n", "אנחנו ממליצים שלא ללמוד אותן בעל פה, אלא להבין את ההיגיון שבהן.\n", "

                                  " ] @@ -506,14 +506,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                  מונחים

                                  " + "###

                                  מונחים

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                  \n", + "
                                  \n", "
                                  אופרטור לוגי
                                  מילה שמבצעת פעולה בין שני ערכים בוליאניים. לפעמים נקרא גם \"שער לוגי\".
                                  \n", "
                                  אופרנד
                                  ברבים: אופרנדים. הערכים שעליהם מפעילים את הפעולה. במקרה שלנו, שעליהם אנחנו רוצים להחיל את האופרטור הלוגי.
                                  \n", "
                                  " @@ -523,23 +523,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                  תרגול

                                  " + "##

                                  תרגול

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                  לא או או או וגם וגם?

                                  " + "###

                                  לא או או או וגם וגם?

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "בהנתן ההשמות שהתבצעו בשורה הבאה, רשמו בצד את התוצאות של כל אחת מהשורות הבאות.
                                  \n", - "רק לאחר מכן הריצו, ובדקו האם צדקתם בתשובתכם.

                                  " + "

                                  \n", + "בהנתן ההשמות שהתבצעו בשורה הבאה, רשמו בצד את התוצאות של כל אחת מהשורות הבאות.
                                  \n", + "רק לאחר מכן הריצו, ובדקו האם צדקתם בתשובתכם.

                                  " ] }, { @@ -605,17 +605,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                  \n", - "
                                  \n", - " \"תרגול\"\n", - "
                                  \n", - "
                                  \n", - "

                                  \n", - " מה קיבלתם?
                                  \n", - " שנו עד 2 משתנים למעלה כדי לקבל תוצאה אחרת.
                                  \n", + "

                                  \n", + "
                                  \n", + "\"תרגול\"\n", + "
                                  \n", + "
                                  \n", + "

                                  \n", + " מה קיבלתם?
                                  \n", + " שנו עד 2 משתנים למעלה כדי לקבל תוצאה אחרת.
                                  \n", " מצאו 2 תשובות אפשריות.\n", "

                                  \n", - "
                                  \n", + "
                                  \n", "
                                  " ] }, @@ -623,7 +623,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", + "

                                  \n", "בואו נמשיך:\n", "

                                  " ] @@ -728,23 +728,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                  קיפיק הצב

                                  " + "###

                                  קיפיק הצב

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "קיפיק הצב הוא הלקוח היחיד שאוכל כמה כדורי גלידה, שאחד מהם בטעם כוכבי־על (superstars).
                                  \n", - "לגלידרייה שלכם נכנס לקוח, שמעוניין לקנות גלידה ממגוון הטעמים שיש במרכולתכם.
                                  \n", - "קבלו את הטעמים שהוא רוצה להזמין כקלט. אם הלקוח ירצה יותר מטעם אחד, הוא יפריד את הטעמים בפסיק.
                                  \n", + "

                                  \n", + "קיפיק הצב הוא הלקוח היחיד שאוכל כמה כדורי גלידה, שאחד מהם בטעם כוכבי־על (superstars).
                                  \n", + "לגלידרייה שלכם נכנס לקוח, שמעוניין לקנות גלידה ממגוון הטעמים שיש במרכולתכם.
                                  \n", + "קבלו את הטעמים שהוא רוצה להזמין כקלט. אם הלקוח ירצה יותר מטעם אחד, הוא יפריד את הטעמים בפסיק.
                                  \n", "בדקו האם מדובר בקיפיק הצב.\n", "

                                  \n", - "

                                  \n", - "לדוגמה, אם הלקוח יזין שהוא מעוניין להזמין superstars, לא מדובר בקיפיק הצב מכיוון שההזמנה כוללת כדור אחד בלבד.
                                  \n", - "אם הלקוח יזין שהוא מעוניין להזמין pineapple, nettles, לא מדובר בקיפיק הצב מכיוון שההזמנה לא כוללת כדור בטעם המועדף על קיפיק.
                                  \n", - "אם הלקוח יזין שהוא מעוניין להזמין superstars, creme-brulee, pineapple, נוכל להסיק שמדובר בקיפיק הצב.
                                  \n", + "

                                  \n", + "לדוגמה, אם הלקוח יזין שהוא מעוניין להזמין superstars, לא מדובר בקיפיק הצב מכיוון שההזמנה כוללת כדור אחד בלבד.
                                  \n", + "אם הלקוח יזין שהוא מעוניין להזמין pineapple, nettles, לא מדובר בקיפיק הצב מכיוון שההזמנה לא כוללת כדור בטעם המועדף על קיפיק.
                                  \n", + "אם הלקוח יזין שהוא מעוניין להזמין superstars, creme-brulee, pineapple, נוכל להסיק שמדובר בקיפיק הצב.
                                  \n", "

                                  " ] } diff --git a/week2/1_Conditions.ipynb b/week2/1_Conditions.ipynb index 0ca5abc..2fa5eb5 100644 --- a/week2/1_Conditions.ipynb +++ b/week2/1_Conditions.ipynb @@ -4,23 +4,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                  תנאים

                                  " + "#

                                  תנאים

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "ברוכים הבאים לשבוע השני של הקורס!
                                  \n", - "אנחנו פותחים את השבוע בנושא מעניין; הראשון שיאפשר לנו ליצור תוכניות מורכבות שמקבלות החלטות.
                                  \n", + "

                                  \n", + "ברוכים הבאים לשבוע השני של הקורס!
                                  \n", + "אנחנו פותחים את השבוע בנושא מעניין; הראשון שיאפשר לנו ליצור תוכניות מורכבות שמקבלות החלטות.
                                  \n", "

                                  " ] }, @@ -28,14 +28,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                  ביטויים בוליאניים

                                  " + "##

                                  ביטויים בוליאניים

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", + "

                                  \n", "נתחיל בתזכורת בנוגע לביטויים בוליאניים, שאותם הכרנו בשבוע שעבר:\n", "

                                  " ] @@ -80,8 +80,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "אם כן, ביטויים בוליאניים הם ביטויים שתוצאתם היא True או False.
                                  \n", + "

                                  \n", + "אם כן, ביטויים בוליאניים הם ביטויים שתוצאתם היא True או False.
                                  \n", "לעיתים קרובות ביטויים אלו יכללו אופרטורים לוגיים, כמו and, or ו־not. \n", "

                                  " ] @@ -90,14 +90,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                  בתנאי ש...

                                  " + "##

                                  בתנאי ש...

                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                  Two roads diverged in a yellow wood,
                                  \n", + "
                                  Two roads diverged in a yellow wood,
                                  \n", "And sorry I could not travel both
                                  \n", "- Robert Frost, The Road Not Taken" ] @@ -106,7 +106,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  נקפוץ למים ללא הקדמה. הנה קוד מעניין:

                                  " + "

                                  נקפוץ למים ללא הקדמה. הנה קוד מעניין:

                                  " ] }, { @@ -125,9 +125,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "מה קטע הקוד הזה יעשה?
                                  \n", - "את השורה הראשונה אנחנו כבר יודעים לקרוא: קלטנו את גיל המשתמש, המרנו אותו למספר שלם, ועכשיו המשתנה user_age מצביע עליו.
                                  \n", + "

                                  \n", + "מה קטע הקוד הזה יעשה?
                                  \n", + "את השורה הראשונה אנחנו כבר יודעים לקרוא: קלטנו את גיל המשתמש, המרנו אותו למספר שלם, ועכשיו המשתנה user_age מצביע עליו.
                                  \n", "בשורה השנייה הרוב כבר מוכר: נבדוק האם הגיל קטן מ־18. אבל מה זה ה־if הזה?\n", "

                                  " ] @@ -136,13 +136,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                  \n", - "כשאנחנו מעוניינים להגיד לפייתון לבצע רצף של שורות רק בתנאי שיקרה משהו מסוים, נשתמש במילת המפתח if.
                                  \n", - "נחלק את המבנה של תנאי בפייתון ל־2 חלקים:
                                  \n", + "

                                  \n", + "כשאנחנו מעוניינים להגיד לפייתון לבצע רצף של שורות רק בתנאי שיקרה משהו מסוים, נשתמש במילת המפתח if.
                                  \n", + "נחלק את המבנה של תנאי בפייתון ל־2 חלקים:
                                  \n", "

                                  \n", - "
                                    \n", - "
                                  1. הביטוי הבוליאני, שיבוא מייד אחרי מילת המפתח if.
                                  2. \n", - "
                                  3. הפקודות שיש לבצע, שיבואו בשורות שאחריו.
                                  4. \n", + "
                                      \n", + "
                                    1. הביטוי הבוליאני, שיבוא מייד אחרי מילת המפתח if.
                                    2. \n", + "
                                    3. הפקודות שיש לבצע, שיבואו בשורות שאחריו.
                                    4. \n", "
                                    " ] }, @@ -150,18 +150,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###
                                    דוגמאות לתנאים
                                    \n", - "\n", - "

                                    \n", - "בדוגמאות הבאות, התנאי מופיע כך, והפעולות שיקרו בעקבותיו מופיעות כך.\n", + "###

                                    דוגמאות לתנאים
                                    \n", + "

                                    \n", + "בדוגמאות הבאות, התנאי מופיע כך, והפעולות שיקרו בעקבותיו מופיעות כך.\n", "

                                    \n", - "\n", - "
                                      \n", - "
                                    1. השמע את המוזיקה של השעון המעורר רק כשהשעה היא 20:00.
                                    2. \n", - "
                                    3. אם הלחץ במטוס לא תקין, הורד לנוסעים את מסכות החמצן ולאחר מכן גם היכנס למצב חירום.
                                    4. \n", - "
                                    5. אם המשתמש סימן קובץ אחד או יותר והמקש שנלחץ היה DEL, מחק את הקבצים המסומנים.
                                    6. \n", - "
                                    7. רק אם עגלת הקניות שלו מכילה מוצרים בשווי 100 ש\"ח לפחות, אפשר למשתמש לבצע הזמנה עם משלוח.
                                    8. \n", - "
                                    9. כספומט, הוצא למשתמש כסף, הדפס קבלה וצא מהממשק אם המשתמש הזין סכום שמתחלק ב־50, הוא הזין את הקוד הסודי הנכון והסכום הזה קיים בחשבון הבנק שלו.
                                    10. \n", + "
                                        \n", + "
                                      1. השמע את המוזיקה של השעון המעורר רק כשהשעה היא 20:00.
                                      2. \n", + "
                                      3. אם הלחץ במטוס לא תקין, הורד לנוסעים את מסכות החמצן ולאחר מכן גם היכנס למצב חירום.
                                      4. \n", + "
                                      5. אם המשתמש סימן קובץ אחד או יותר והמקש שנלחץ היה DEL, מחק את הקבצים המסומנים.
                                      6. \n", + "
                                      7. רק אם עגלת הקניות שלו מכילה מוצרים בשווי 100 ש\"ח לפחות, אפשר למשתמש לבצע הזמנה עם משלוח.
                                      8. \n", + "
                                      9. כספומט, הוצא למשתמש כסף, הדפס קבלה וצא מהממשק אם המשתמש הזין סכום שמתחלק ב־50, הוא הזין את הקוד הסודי הנכון והסכום הזה קיים בחשבון הבנק שלו.
                                      10. \n", "
                                      " ] }, @@ -169,7 +167,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###
                                      זרימת התוכנית: ציור לדוגמה
                                      " + "###
                                      זרימת התוכנית: ציור לדוגמה
                                      " ] }, { @@ -177,8 +175,8 @@ "metadata": {}, "source": [ "
                                      \n", - " \"איור\n", - "
                                      \n", + "\"איור\n", + "
                                      \n", "
                                      " ] }, @@ -186,29 +184,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###
                                      כותבים תנאי
                                      \n", - "\n", - "

                                      \n", + "###

                                      כותבים תנאי
                                      \n", + "

                                      \n", "ניסוח של תנאי אמור להיראות ככה:\n", "

                                      \n", - "\n", - "if התנאי שלכם, ביטוי בוליאני:
                                          מה שאתם רוצים לעשות (גוף התנאי)\n", + "if התנאי שלכם, ביטוי בוליאני:
                                          מה שאתם רוצים לעשות (גוף התנאי)\n", "
                                      \n", - "\n", - "

                                      \n", + "

                                      \n", "נסביר:\n", "

                                      \n", - "\n", - "
                                        \n", - "
                                      1. התנאי מתחיל במילת המפתח if. אין פה מה לשנות.
                                      2. \n", - "
                                      3. אחרי מילת המפתח if, יבוא ביטוי בוליאני. אם תוצאתו תהיה True, מה שנמצא בגוף התנאי יתבצע. אם False, פייתון תתעלם לגמרי מגוף התנאי.
                                      4. \n", - "
                                      5. מייד אחרי הביטוי הבוליאני תבואנה נקודתיים, שמסמנות שכאן נגמרת השאלה (הביטוי הבוליאני), ומתחיל החלק הביצועי – גוף התנאי.
                                      6. \n", - "
                                      7. לפני שנבקש מפייתון לבצע משהו בעקבות קיום התנאי שהיה ב־if, נצטרך להוסיף לפניו הזחה.
                                        \n", - " הזחה היא תזוזה של השורה לימין, והיא נועדה לסמן מבניות מסוימת בקוד – נניח שהשורה הזו מתייחסת ל־if שנמצא לפניה.
                                        \n", - " אנחנו רוצים שהקוד שנכתוב אחרי ההזחה ירוץ רק אם התנאי שלפני ההזחה התקיים.
                                        \n", + "
                                          \n", + "
                                        1. התנאי מתחיל במילת המפתח if. אין פה מה לשנות.
                                        2. \n", + "
                                        3. אחרי מילת המפתח if, יבוא ביטוי בוליאני. אם תוצאתו תהיה True, מה שנמצא בגוף התנאי יתבצע. אם False, פייתון תתעלם לגמרי מגוף התנאי.
                                        4. \n", + "
                                        5. מייד אחרי הביטוי הבוליאני תבואנה נקודתיים, שמסמנות שכאן נגמרת השאלה (הביטוי הבוליאני), ומתחיל החלק הביצועי – גוף התנאי.
                                        6. \n", + "
                                        7. לפני שנבקש מפייתון לבצע משהו בעקבות קיום התנאי שהיה ב־if, נצטרך להוסיף לפניו הזחה.
                                          \n", + " הזחה היא תזוזה של השורה לימין, והיא נועדה לסמן מבניות מסוימת בקוד – נניח שהשורה הזו מתייחסת ל־if שנמצא לפניה.
                                          \n", + " אנחנו רוצים שהקוד שנכתוב אחרי ההזחה ירוץ רק אם התנאי שלפני ההזחה התקיים.
                                          \n", " בפייתון הזחה מוגדרת כארבעה רווחים, אבל אפשר פשוט ללחוץ Tab ↹ במקלדת והמחברת תחליף לכם את הטאב ברווחים בעצמה.\n", "
                                        8. \n", - "
                                        9. וסוף סוף הגענו למטרה: אחרי ההזחה, כתבו את מה שאתם רוצים לעשות – כל פעולת פייתון שעולה על דעתכם תתאים כאן.
                                          \n", + "
                                        10. וסוף סוף הגענו למטרה: אחרי ההזחה, כתבו את מה שאתם רוצים לעשות – כל פעולת פייתון שעולה על דעתכם תתאים כאן.
                                          \n", "תוכלו להוסיף כמה שורות שתרצו אחרי ה־if. הקוד בשורה ירוץ כחלק מהתנאי כל עוד היא מוזחת ונמצאת ישירות אחרי ה־if, או אחרי שורות מוזחות אחרות ישירות מתחת ל־if.\n", "
                                        11. \n", "
                                        " @@ -218,7 +212,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###
                                        דוגמאות קוד נוספות
                                        " + "###
                                        דוגמאות קוד נוספות
                                        " ] }, { @@ -243,21 +237,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                        \n", - "
                                        \n", - " \"תרגול\" \n", - "
                                        \n", - "
                                        \n", - "

                                        \n", + "

                                        \n", + "
                                        \n", + "\"תרגול\"\n", + "
                                        \n", + "
                                        \n", + "

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

                                        \n", - "
                                        \n", - "
                                        \n", - "

                                        \n", - " חשוב!
                                        \n", + "

                                        \n", + "
                                        \n", + "

                                        \n", + "חשוב!
                                        \n", " פתרו לפני שתמשיכו!\n", "

                                        \n", - "
                                        \n", + "
                                        \n", "
                                        " ] }, @@ -265,7 +259,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        \n", + "

                                        \n", "דוגמה אחרת:\n", "

                                        " ] @@ -300,24 +294,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### מה התרחש בקוד הזה?\n", - "

                                        \n", - "בשורה הראשונה, ביקשנו את הגיל של המשתמש וגרמנו למשתנה age להצביע אליו.
                                        \n", + "#### מה התרחש בקוד הזה?\n", + "

                                        \n", + "בשורה הראשונה, ביקשנו את הגיל של המשתמש וגרמנו למשתנה age להצביע אליו.
                                        \n", "בשורה השנייה, ביקשנו ש־allowed_to_enter יהיה False. זה קצת מרושע ומיזנטרופי, אבל אנחנו מעדיפים כברירת מחדל לא להכניס אף אחד למסיבה שלנו.\n", "

                                        \n", - "

                                        \n", + "

                                        \n", "בשלב הבא בדקנו האם age (גיל המשתמש שלנו) הוא לפחות 18, ואם כן הגדרנו שיוכל להכנס למסיבה. עד כאן זה קל.\n", "

                                        \n", - "

                                        \n", - "עכשיו נתאר מה תהיה ההתרחשות אם הגיל נמוך מ־18.
                                        \n", - "אנחנו מחכים לחצות, ומבקשים לדעת אם יום ההולדת של המשתמש הוא היום.
                                        \n", + "

                                        \n", + "עכשיו נתאר מה תהיה ההתרחשות אם הגיל נמוך מ־18.
                                        \n", + "אנחנו מחכים לחצות, ומבקשים לדעת אם יום ההולדת של המשתמש הוא היום.
                                        \n", "

                                        \n", - "

                                        \n", - "מכאן אנחנו פותחים תנאי נוסף, בתוך התנאי הקודם. זה אומר שרק אם age אכן קטן מ־18 הבדיקה הבאה תקרה (בגלל שאנחנו עדיין בתוך התנאי age < 18, ראו את ההזחה):
                                        \n", - "אם המשתמש הכניס שהיום יום ההולדת שלו, והגיל שלו היה עד עכשיו 17, אז עכשיו הוא טכנית בן 18 ויכול להיכנס למסיבה שלנו. נגדיל את הגיל שלו ונרשה לו להיכנס.
                                        \n", + "

                                        \n", + "מכאן אנחנו פותחים תנאי נוסף, בתוך התנאי הקודם. זה אומר שרק אם age אכן קטן מ־18 הבדיקה הבאה תקרה (בגלל שאנחנו עדיין בתוך התנאי age < 18, ראו את ההזחה):
                                        \n", + "אם המשתמש הכניס שהיום יום ההולדת שלו, והגיל שלו היה עד עכשיו 17, אז עכשיו הוא טכנית בן 18 ויכול להיכנס למסיבה שלנו. נגדיל את הגיל שלו ונרשה לו להיכנס.
                                        \n", "

                                        \n", - "\n", - "

                                        \n", + "

                                        \n", "עכשיו נשאר רק להתייחס למשתנה allowed_to_enter שהגדרנו למעלה, לבדוק האם למשתמש מותר להכנס או לא, ולהדפיס הודעה מתאימה. יופי!\n", "

                                        " ] @@ -326,17 +319,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                        \n", - "
                                        \n", - " \"תרגול\" \n", - "
                                        \n", - "
                                        \n", - "

                                        \n", - " תרגול:\n", - " נסו לערוך את הקוד שלמעלה, כך שישאל אם זהו יום ההולדת של המשתמש רק אם הוא בן 17.
                                        \n", + "

                                        \n", + "
                                        \n", + "\"תרגול\"\n", + "
                                        \n", + "
                                        \n", + "

                                        \n", + "תרגול:\n", + " נסו לערוך את הקוד שלמעלה, כך שישאל אם זהו יום ההולדת של המשתמש רק אם הוא בן 17.
                                        \n", " בדקו שהקוד עדיין עובד כמצופה.\n", "

                                        \n", - "
                                        \n", + "
                                        \n", "
                                        " ] }, @@ -344,17 +337,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                        \n", - "
                                        \n", - " \"אזהרה!\" \n", - "
                                        \n", - "
                                        \n", - "

                                        \n", - " טעות נפוצה היא לשכוח את הנקודתיים אחרי ה־if.
                                        \n", - " אתם בטח אומרים לעצמכם שלא תעשו את זה, אבל אתם תעשו את זה, סמכו עליי.
                                        \n", - " פייתון זורקת הודעות שגיאה מעצבנות ולא אינדיקטיביות כשזה קורה. נסו להיזכר באזהרה הזו 😊
                                        \n", - "

                                        \n", - "
                                        \n", + "
                                        \n", + "
                                        \n", + "\"אזהרה!\"\n", + "
                                        \n", + "
                                        \n", + "

                                        \n", + " טעות נפוצה היא לשכוח את הנקודתיים אחרי ה־if.
                                        \n", + " אתם בטח אומרים לעצמכם שלא תעשו את זה, אבל אתם תעשו את זה, סמכו עליי.
                                        \n", + " פייתון זורקת הודעות שגיאה מעצבנות ולא אינדיקטיביות כשזה קורה. נסו להיזכר באזהרה הזו 😊
                                        \n", + "

                                        \n", + "
                                        \n", "
                                        " ] }, @@ -362,22 +355,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגול" + "## תרגול" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### כניסה לבנק, שלב 1" + "### כניסה לבנק, שלב 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        \n", - " שם המשתמש שלי לבנק הוא wrong, והסיסמה שלי היא ads sports.
                                        \n", + "

                                        \n", + " שם המשתמש שלי לבנק הוא wrong, והסיסמה שלי היא ads sports.
                                        \n", " קבלו מהמשתמש שם משתמש וסיסמה, והדפיסו לו הודעה יפה אם הצליח להתחבר.\n", "

                                        " ] @@ -386,15 +379,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אם גם טעיתי" + "### אם גם טעיתי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        \n", - "תקנו את הקוד הבא כך שירוץ בהצלחה.
                                        \n", + "

                                        \n", + "תקנו את הקוד הבא כך שירוץ בהצלחה.
                                        \n", "כתבו לעצמכם את התיקונים שביצעתם כדי להימנע מטעויות דומות אצלכם בעתיד!\n", "

                                        " ] diff --git a/week2/2_Conditions_part2.ipynb b/week2/2_Conditions_part2.ipynb index 9fcaa61..49ee14a 100644 --- a/week2/2_Conditions_part2.ipynb +++ b/week2/2_Conditions_part2.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                        תנאים – חלק 2

                                        " + "#

                                        תנאים – חלק 2

                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                        תנאים – תזכורת

                                        " + "##

                                        תנאים – תזכורת

                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        \n", - "ניזכר במחברת הקודמת, שבה למדנו על תנאים.
                                        \n", - "למדנו שבעזרת מילת המפתח if אנחנו יכולים לבקש מהקוד שלנו לבצע סדרת פעולות, רק אם תנאי כלשהו מתקיים.
                                        \n", + "

                                        \n", + "ניזכר במחברת הקודמת, שבה למדנו על תנאים.
                                        \n", + "למדנו שבעזרת מילת המפתח if אנחנו יכולים לבקש מהקוד שלנו לבצע סדרת פעולות, רק אם תנאי כלשהו מתקיים.
                                        \n", "במילים אחרות: אנחנו יכולים לבקש מקטע קוד לרוץ, רק אם ביטוי בוליאני מסוים שווה ל־True.\n", "

                                        " ] @@ -36,7 +36,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        \n", + "

                                        \n", "נראה דוגמה:\n", "

                                        " ] @@ -57,8 +57,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        \n", - "בקוד שלמעלה, ביקשנו מהמשתמש להזין את מספר הנעליים שיש לו, ואם המספר היה אי־זוגי הדפסנו לו שמשהו מוזר מתרחש.
                                        \n", + "

                                        \n", + "בקוד שלמעלה, ביקשנו מהמשתמש להזין את מספר הנעליים שיש לו, ואם המספר היה אי־זוגי הדפסנו לו שמשהו מוזר מתרחש.
                                        \n", "אבל מה קורה אם נרצה להדפיס למשתמש הודעת אישור כשאנחנו מגלים שהכול בסדר?\n", "

                                        " ] @@ -67,22 +67,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                        \n", - "
                                        \n", - " \"תרגול\" \n", - "
                                        \n", - "
                                        \n", - "

                                        \n", - " כיצד הייתם משפרים את התוכנית שלמעלה כך שתדפיס למשתמש הודעת אישור שהכול בסדר?
                                        \n", + "

                                        \n", + "
                                        \n", + "\"תרגול\"\n", + "
                                        \n", + "
                                        \n", + "

                                        \n", + " כיצד הייתם משפרים את התוכנית שלמעלה כך שתדפיס למשתמש הודעת אישור שהכול בסדר?
                                        \n", " השתמשו בכלים שרכשתם במחברת הקודמת. נסו לחשוב על לפחות 2 דרכים דומות.\n", "

                                        \n", - "
                                        \n", - "
                                        \n", - "

                                        \n", - " חשוב!
                                        \n", + "

                                        \n", + "
                                        \n", + "

                                        \n", + "חשוב!
                                        \n", " פתרו לפני שתמשיכו!\n", "

                                        \n", - "
                                        \n", + "
                                        \n", "
                                        " ] }, @@ -90,14 +90,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מה אם לא?
                                        על מילת המפתח else
                                        " + "## מה אם לא?
                                        על מילת המפתח else
                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        דרך אחת לפתור את התרגיל שהופיע למעלה, היא זו:

                                        " + "

                                        דרך אחת לפתור את התרגיל שהופיע למעלה, היא זו:

                                        " ] }, { @@ -118,9 +118,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        \n", - "כדי להדפיס למשתמש הודעה מתאימה בכל מצב, הוספנו תנאי הפוך מהתנאי הראשון, שידפיס למשתמש הודעה מתאימה.
                                        \n", - "אחד הדברים המעניינים בתוכנית שלמעלה, הוא שיש לנו שני תנאים שמנוגדים זה לזה במשמעות שלהם. אחד בודק זוגיות, והשני בודק אי־זוגיות.
                                        \n", + "

                                        \n", + "כדי להדפיס למשתמש הודעה מתאימה בכל מצב, הוספנו תנאי הפוך מהתנאי הראשון, שידפיס למשתמש הודעה מתאימה.
                                        \n", + "אחד הדברים המעניינים בתוכנית שלמעלה, הוא שיש לנו שני תנאים שמנוגדים זה לזה במשמעות שלהם. אחד בודק זוגיות, והשני בודק אי־זוגיות.
                                        \n", "למעשה, אם היינו רוצים לנסח את הקוד במילים, היינו יכולים להגיד: אם מספר הנעליים הוא אי־זוגי, הדפס שיש בעיה. אחרת, הדפס שהכול בסדר.\n", "

                                        " ] @@ -129,8 +129,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        \n", - " פייתון מקנה לנו כלי נוח לבטא את ה\"אחרת\" הזה, כלי שמקל על הקריאוּת של הקוד – מילת המפתח else.
                                        \n", + "

                                        \n", + " פייתון מקנה לנו כלי נוח לבטא את ה\"אחרת\" הזה, כלי שמקל על הקריאוּת של הקוד – מילת המפתח else.
                                        \n", " נראה איך אפשר לנסח את הקוד שלמעלה בעזרת else:\n", "

                                        " ] @@ -153,9 +153,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                        \n", - "שימו לב לצורת ההזחה: ה־else אינו מוזח, אך התוכן שבתוכו כן.
                                        \n", - "נזכור גם ש־else קשור ל־if שלפניו, ומדבר על המקרה המשלים לתנאי שנמצא באותו if.
                                        \n", + "

                                        \n", + "שימו לב לצורת ההזחה: ה־else אינו מוזח, אך התוכן שבתוכו כן.
                                        \n", + "נזכור גם ש־else קשור ל־if שלפניו, ומדבר על המקרה המשלים לתנאי שנמצא באותו if.
                                        \n", "דרך נוספת לחשוב על else היא שקטע הקוד בתוך ה־else יתבצע אם תוצאתו של הביטוי הבוליאני שמופיע כתנאי של ה־if היא False.\n", "

                                        " ] @@ -164,17 +164,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###
                                        דוגמאות לתנאים עם else
                                        \n", - "\n", - "

                                        \n", - "בדוגמאות הבאות, התנאי מופיע כך, והפעולות שיקרו בעקבותיו מופיעות כך.\n", + "###

                                        דוגמאות לתנאים עם else
                                        \n", + "

                                        \n", + "בדוגמאות הבאות, התנאי מופיע כך, והפעולות שיקרו בעקבותיו מופיעות כך.\n", "

                                        \n", - "\n", - "
                                          \n", - "
                                        1. אם השעה היא לפני 20:00, שמור על תאורה גבוהה במסעדה. אחרת, עמעם את התאורה.
                                        2. \n", - "
                                        3. אם הגיל של המשתמש הוא לפחות 18, אפשר לו להיכנס לבר. אחרת, הצע לו אטרקציות אחרות לבקר בהן וגם אל תכניס אותו.
                                        4. \n", - "
                                        5. אם המשתמש בכספומט הזין סכום שלילי, או יותר מהסכום הזמין בחשבון שלו, הצג לו הודעת שגיאה. אחרת, הפחת לו את הסכום מהחשבון, הוצא לו שטרות בסכום שהזין.
                                        6. \n", - "
                                        7. אם הדוד כבוי וגם השעה היא לפני 8:00 וגם השעה היא אחרי 7:00, הדלק את הדוד. אחרת, אם הדוד דלוקכבה את הדוד.
                                        8. \n", + "
                                            \n", + "
                                          1. אם השעה היא לפני 20:00, שמור על תאורה גבוהה במסעדה. אחרת, עמעם את התאורה.
                                          2. \n", + "
                                          3. אם הגיל של המשתמש הוא לפחות 18, אפשר לו להיכנס לבר. אחרת, הצע לו אטרקציות אחרות לבקר בהן וגם אל תכניס אותו.
                                          4. \n", + "
                                          5. אם המשתמש בכספומט הזין סכום שלילי, או יותר מהסכום הזמין בחשבון שלו, הצג לו הודעת שגיאה. אחרת, הפחת לו את הסכום מהחשבון, הוצא לו שטרות בסכום שהזין.
                                          6. \n", + "
                                          7. אם הדוד כבוי וגם השעה היא לפני 8:00 וגם השעה היא אחרי 7:00, הדלק את הדוד. אחרת, אם הדוד דלוקכבה את הדוד.
                                          8. \n", "
                                          " ] }, @@ -182,7 +180,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###
                                          זרימת התוכנית: ציור לדוגמה
                                          " + "###
                                          זרימת התוכנית: ציור לדוגמה
                                          " ] }, { @@ -190,8 +188,8 @@ "metadata": {}, "source": [ "
                                          \n", - " \"איור\n", - "
                                          \n", + "\"איור\n", + "
                                          \n", "
                                          " ] }, @@ -199,14 +197,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מימוש לדוגמה" + "### מימוש לדוגמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                          \n", + "

                                          \n", "התוכנית המוצגת פה מעט מורכבת יותר מהשרטוט המופיע למעלה, כדי לתת לה נופך מציאותי יותר.\n", "

                                          " ] @@ -244,21 +242,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מה המצב?
                                          טיפול במצבים מרובים
                                          " + "## מה המצב?
                                          טיפול במצבים מרובים
                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                          \n", + "

                                          \n", "בארצות הברית מדורגת מכירת אלבומים כך:\n", "

                                          \n", - "
                                            \n", - "
                                          1. אלבום מוזיקה נחשב \"אלבום כסף\" אם נמכרו ממנו לפחות 100,000 עותקים.
                                          2. \n", - "
                                          3. אלבום מוזיקה נחשב \"אלבום זהב\" אם נמכרו ממנו לפחות 500,000 עותקים.
                                          4. \n", - "
                                          5. אלבום מוזיקה נחשב \"אלבום פלטינה\" אם נמכרו ממנו לפחות 1,000,000 עותקים.
                                          6. \n", - "
                                          7. אלבום מוזיקה נחשב \"אלבום יהלום\" אם נמכרו ממנו לפחות 10,000,000 עותקים.
                                          8. \n", + "
                                              \n", + "
                                            1. אלבום מוזיקה נחשב \"אלבום כסף\" אם נמכרו ממנו לפחות 100,000 עותקים.
                                            2. \n", + "
                                            3. אלבום מוזיקה נחשב \"אלבום זהב\" אם נמכרו ממנו לפחות 500,000 עותקים.
                                            4. \n", + "
                                            5. אלבום מוזיקה נחשב \"אלבום פלטינה\" אם נמכרו ממנו לפחות 1,000,000 עותקים.
                                            6. \n", + "
                                            7. אלבום מוזיקה נחשב \"אלבום יהלום\" אם נמכרו ממנו לפחות 10,000,000 עותקים.
                                            8. \n", "
                                            " ] }, @@ -266,23 +264,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                            \n", - "
                                            \n", - " \"תרגול\" \n", - "
                                            \n", - "
                                            \n", - "

                                            \n", - " קלטו את כמות העותקים שנמכרו עבור אלבום המטאל המצליח \"רוצח או נזלת\", והדפיסו את דירוג האלבום.
                                            \n", - " לדוגמה, אם המשתמש הכניס שמספר המכירות היה 520,196, הדפיסו \"אלבום זהב\".
                                            \n", - " אם האלבום לא נמכר מספיק כדי לזכות בדירוג, הדפיסו \"האלבום אינו רב־מכר\".
                                            \n", - "

                                            \n", - "
                                            \n", - "
                                            \n", - "

                                            \n", - " חשוב!
                                            \n", + "

                                            \n", + "
                                            \n", + "\"תרגול\"\n", + "
                                            \n", + "
                                            \n", + "

                                            \n", + " קלטו את כמות העותקים שנמכרו עבור אלבום המטאל המצליח \"רוצח או נזלת\", והדפיסו את דירוג האלבום.
                                            \n", + " לדוגמה, אם המשתמש הכניס שמספר המכירות היה 520,196, הדפיסו \"אלבום זהב\".
                                            \n", + " אם האלבום לא נמכר מספיק כדי לזכות בדירוג, הדפיסו \"האלבום אינו רב־מכר\".
                                            \n", + "

                                            \n", + "
                                            \n", + "
                                            \n", + "

                                            \n", + "חשוב!
                                            \n", " פתרו לפני שתמשיכו!\n", "

                                            \n", - "
                                            \n", + "
                                            \n", "
                                            " ] }, @@ -290,15 +288,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פתרון ושיפורים" + "### פתרון ושיפורים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                            \n", - "בתרגיל שנתבקשתם לפתור, נוצר מצב שבו יש צורך בתנאים מרובים שמשלימים זה את זה.
                                            \n", + "

                                            \n", + "בתרגיל שנתבקשתם לפתור, נוצר מצב שבו יש צורך בתנאים מרובים שמשלימים זה את זה.
                                            \n", "נציג לפניכם שני פתרונות אפשריים:\n", "

                                            " ] @@ -338,9 +336,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                            \n", - "ודאי שמתם לב שהקוד נראה מעט מסורבל בגלל כמות ההזחות, והוא יוסיף ויסתרבל ככל שנוסיף יותר מקרים אפשריים.
                                            \n", - "ננסה לפתור את זה בעזרת הגדרת טווחים מדויקים עבור כל דירוג.
                                            \n", + "

                                            \n", + "ודאי שמתם לב שהקוד נראה מעט מסורבל בגלל כמות ההזחות, והוא יוסיף ויסתרבל ככל שנוסיף יותר מקרים אפשריים.
                                            \n", + "ננסה לפתור את זה בעזרת הגדרת טווחים מדויקים עבור כל דירוג.
                                            \n", "הקוד המשופץ ייראה כך:\n", "

                                            " ] @@ -374,8 +372,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                            \n", - "הקוד נראה טוב יותר במידה ניכרת, אבל בכל if אנחנו בודקים שהתנאי שלפניו לא התקיים, וזה מסורבל מאוד.
                                            \n", + "

                                            \n", + "הקוד נראה טוב יותר במידה ניכרת, אבל בכל if אנחנו בודקים שהתנאי שלפניו לא התקיים, וזה מסורבל מאוד.
                                            \n", "אנחנו עושים את זה כדי למנוע הדפסה כפולה: אומנם כל אלבום זהב נמכר מספיק פעמים כדי להיות מוכתר כאלבום כסף, אבל לא נרצה להדפיס למשתמש את שתי ההודעות.

                                            " ] }, @@ -383,22 +381,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                            \n", - "
                                            \n", - " \"תרגול\" \n", - "
                                            \n", - "
                                            \n", - "

                                            \n", - " מה היה קורה אם לא היו תנאים אחרי האופרטור הלוגי and?
                                            \n", + "

                                            \n", + "
                                            \n", + "\"תרגול\"\n", + "
                                            \n", + "
                                            \n", + "

                                            \n", + " מה היה קורה אם לא היו תנאים אחרי האופרטור הלוגי and?
                                            \n", " מחקו אותם, הכניסו לתוכנה כקלט 10000000 ובדקו מה התוצאה.\n", "

                                            \n", - "
                                            \n", - "
                                            \n", - "

                                            \n", - " חשוב!
                                            \n", + "

                                            \n", + "
                                            \n", + "

                                            \n", + "חשוב!
                                            \n", " פתרו לפני שתמשיכו!\n", "

                                            \n", - "
                                            \n", + "
                                            \n", "
                                            " ] }, @@ -406,16 +404,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###
                                            אם אחרת – elif
                                            " + "###
                                            אם אחרת – elif
                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                            \n", - "כדי לפתור את הבעיה שהוצגה למעלה, פייתון מעניקה לנו כלי נוסף שנקרא elif.
                                            \n", - "מדובר בסך הכול בקיצור של else... if (תנאי), או בעברית: אם התנאי הקודם לא התקיים, בדוק אם...
                                            \n", + "

                                            \n", + "כדי לפתור את הבעיה שהוצגה למעלה, פייתון מעניקה לנו כלי נוסף שנקרא elif.
                                            \n", + "מדובר בסך הכול בקיצור של else... if (תנאי), או בעברית: אם התנאי הקודם לא התקיים, בדוק אם...
                                            \n", "ראו, לדוגמה, איך נשפר את הקוד הקודם לקוד קריא יותר במידה רבה:\n", "

                                            " ] @@ -449,17 +447,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###
                                            מה קורה כאן?
                                            \n", - "

                                            \n", - " הטריק הוא שבשורה שבה כתוב elif, פייתון תנסה לבדוק את התנאי רק אם התנאים שלפניו לא התקיימו.
                                            \n", - " במילים אחרות – ערכיהם של הביטויים הבוליאניים בכל התנאים שלפניו היו False.
                                            \n", + "###

                                            מה קורה כאן?
                                            \n", + "

                                            \n", + " הטריק הוא שבשורה שבה כתוב elif, פייתון תנסה לבדוק את התנאי רק אם התנאים שלפניו לא התקיימו.
                                            \n", + " במילים אחרות – ערכיהם של הביטויים הבוליאניים בכל התנאים שלפניו היו False.
                                            \n", " בכל שורה שבה יש if או elif, פייתון בודקת האם הביטוי הבוליאני שבאותה שורה מתקיים, ואז:\n", "

                                            \n", - "\n", - "
                                              \n", - "
                                            1. אם כן, היא מבצעת את הפעולות המוזחות מתחת לתנאי ומפסיקה לבדוק את התנאים הבאים.
                                            2. \n", - "
                                            3. אם לא, היא עוברת לבדוק את התנאי ב־elif־ים הבאים (אם ישנם elif־ים).
                                            4. \n", - "
                                            5. אם אף אחד מהתנאים לא מתקיים, יתבצע קטע הקוד ששייך ל־else (אם יש else).
                                            6. \n", + "
                                                \n", + "
                                              1. אם כן, היא מבצעת את הפעולות המוזחות מתחת לתנאי ומפסיקה לבדוק את התנאים הבאים.
                                              2. \n", + "
                                              3. אם לא, היא עוברת לבדוק את התנאי ב־elif־ים הבאים (אם ישנם elif־ים).
                                              4. \n", + "
                                              5. אם אף אחד מהתנאים לא מתקיים, יתבצע קטע הקוד ששייך ל־else (אם יש else).
                                              6. \n", "
                                              " ] }, @@ -467,16 +464,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                              \n", - "
                                              \n", - " \"אזהרה!\" \n", - "
                                              \n", - "
                                              \n", - "

                                              \n", - " ניתן לכתוב if בלי else ובלי elif־ים אחריו.
                                              \n", - " if תמיד יהיה ראשון, ואם יש צורך להוסיף מקרים, else תמיד יהיה אחרון, וביניהם יהיו elif־ים.
                                              \n", - "

                                              \n", - "
                                              \n", + "
                                              \n", + "
                                              \n", + "\"אזהרה!\"\n", + "
                                              \n", + "
                                              \n", + "

                                              \n", + " ניתן לכתוב if בלי else ובלי elif־ים אחריו.
                                              \n", + "if תמיד יהיה ראשון, ואם יש צורך להוסיף מקרים, else תמיד יהיה אחרון, וביניהם יהיו elif־ים.
                                              \n", + "

                                              \n", + "
                                              \n", "
                                              " ] }, @@ -484,25 +481,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                              תרגול

                                              " + "##

                                              תרגול

                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                              כניסה לבנק, שלב 2

                                              " + "###

                                              כניסה לבנק, שלב 2

                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                              \n", - "שם המשתמש שלי לבנק הוא wrong, והסיסמה שלי היא ads sports.
                                              \n", + "

                                              \n", + "שם המשתמש שלי לבנק הוא wrong, והסיסמה שלי היא ads sports.
                                              \n", "שם המשתמש של מנהל הבנק היא admin, והסיסמה שלו היא is trator.\n", - "
                                              \n", - "קבלו מהמשתמש שם משתמש וסיסמה, והדפיסו לו הודעה שמספרת לו לאיזה משתמש הוא הצליח להתחבר.
                                              \n", + "
                                              \n", + "קבלו מהמשתמש שם משתמש וסיסמה, והדפיסו לו הודעה שמספרת לו לאיזה משתמש הוא הצליח להתחבר.
                                              \n", "אם לא הצליח להתחבר, הדפיסו לו הודעת שגיאה מתאימה.\n", "

                                              " ] @@ -511,24 +508,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                              חשבון למתחילים, שלב 1

                                              " + "###

                                              חשבון למתחילים, שלב 1

                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                              \n", - "דני רוצה ללמוד חשבון, ולצורך כך הוא צריך מחשבון פשוט שיעזור לו.
                                              \n", - "כתבו תוכנה שמקבלת 2 מספרים ופעולה חשבונית (+, -, *, / או **), ויודעת להחזיר את התשובה הנכונה לתרגיל.
                                              \n", + "

                                              \n", + "דני רוצה ללמוד חשבון, ולצורך כך הוא צריך מחשבון פשוט שיעזור לו.
                                              \n", + "כתבו תוכנה שמקבלת 2 מספרים ופעולה חשבונית (+, -, *, / או **), ויודעת להחזיר את התשובה הנכונה לתרגיל.
                                              \n", "

                                              \n", - "

                                              \n", + "

                                              \n", "לדוגמה:\n", "

                                              \n", - "
                                                \n", - "
                                              • עבור מספר ראשון 5, מספר שני 2 ופעולה / התוכנית תדפיס 2.5, כיוון ש־5/2 == 2.5.
                                              • \n", - "
                                              • עבור מספר ראשון 9, מספר שני 2 ופעולה ** התוכנית תדפיס 81, כיוון ש־92 == 81.
                                              • \n", - "
                                              • עבור מספר ראשון 3, מספר שני 7 ופעולה - התוכנית תדפיס -4, כיוון ש־3-7 == -4.
                                              • \n", + "
                                                  \n", + "
                                                • עבור מספר ראשון 5, מספר שני 2 ופעולה / התוכנית תדפיס 2.5, כיוון ש־5/2 == 2.5.
                                                • \n", + "
                                                • עבור מספר ראשון 9, מספר שני 2 ופעולה ** התוכנית תדפיס 81, כיוון ש־92 == 81.
                                                • \n", + "
                                                • עבור מספר ראשון 3, מספר שני 7 ופעולה - התוכנית תדפיס -4, כיוון ש־3-7 == -4.
                                                • \n", "
                                                " ] }, @@ -536,52 +533,51 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                מחשבון מס הכנסה

                                                " + "###

                                                מחשבון מס הכנסה

                                                " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                \n", - " המיסוי על הכנסה בישראל גבוה מאוד ושיעורו נקבע לפי מדרגות כדלקמן:
                                                \n", + "

                                                \n", + " המיסוי על הכנסה בישראל גבוה מאוד ושיעורו נקבע לפי מדרגות כדלקמן:
                                                \n", "

                                                \n", - "
                                                  \n", - "
                                                1. מי שמרוויח עד 6,310 ש\"ח, משלם מס בשיעור 10% על הסכום הזה.
                                                2. \n", - "
                                                3. מי שמרוויח עד 9,050 ש\"ח, משלם מס בשיעור 14% על הסכום הזה.
                                                4. \n", - "
                                                5. מי שמרוויח עד 14,530 ש\"ח, משלם מס בשיעור 20% על הסכום הזה.
                                                6. \n", - "
                                                7. מי שמרוויח עד 20,200 ש\"ח, משלם מס בשיעור 31% על הסכום הזה.
                                                8. \n", - "
                                                9. מי שמרוויח עד 42,030 ש\"ח, משלם מס בשיעור 35% על הסכום הזה.
                                                10. \n", - "
                                                11. מי שמרוויח עד 54,130 ש\"ח, משלם מס בשיעור 47% על הסכום הזה.
                                                12. \n", - "
                                                13. מי שמרוויח מעל הסכום האחרון, משלם מס בשיעור 50% על הסכום הזה.
                                                14. \n", + "
                                                    \n", + "
                                                  1. מי שמרוויח עד 6,310 ש\"ח, משלם מס בשיעור 10% על הסכום הזה.
                                                  2. \n", + "
                                                  3. מי שמרוויח עד 9,050 ש\"ח, משלם מס בשיעור 14% על הסכום הזה.
                                                  4. \n", + "
                                                  5. מי שמרוויח עד 14,530 ש\"ח, משלם מס בשיעור 20% על הסכום הזה.
                                                  6. \n", + "
                                                  7. מי שמרוויח עד 20,200 ש\"ח, משלם מס בשיעור 31% על הסכום הזה.
                                                  8. \n", + "
                                                  9. מי שמרוויח עד 42,030 ש\"ח, משלם מס בשיעור 35% על הסכום הזה.
                                                  10. \n", + "
                                                  11. מי שמרוויח עד 54,130 ש\"ח, משלם מס בשיעור 47% על הסכום הזה.
                                                  12. \n", + "
                                                  13. מי שמרוויח מעל הסכום האחרון, משלם מס בשיעור 50% על הסכום הזה.
                                                  14. \n", "
                                                  \n", - "

                                                  \n", - " הסכום תמיד משולם על ההפרש בין המדרגות.
                                                  \n", - " לדוגמה, אם הרווחתי בחודש מסוים 10,000 ש\"ח, תשלום המיסים שלי יחושב כך:
                                                  \n", - " על 6,310 השקלים הראשונים אשלם 631 ש\"ח, שהם 10% מאותה מדרגה.
                                                  \n", - " על הסכום העודף עד 9,050 שקלים, שהוא 2,740 שקלים (9,050 - 6,310) אשלם 383.6 שקלים, שהם 14% מ־2,740 שקלים.
                                                  \n", - " על הסכום העודף בסך 950 שקלים (10,000 - 9,050) אשלם 190 ש\"ח, שהם 20% מ־950 שקלים.
                                                  \n", + "

                                                  \n", + " הסכום תמיד משולם על ההפרש בין המדרגות.
                                                  \n", + " לדוגמה, אם הרווחתי בחודש מסוים 10,000 ש\"ח, תשלום המיסים שלי יחושב כך:
                                                  \n", + " על 6,310 השקלים הראשונים אשלם 631 ש\"ח, שהם 10% מאותה מדרגה.
                                                  \n", + " על הסכום העודף עד 9,050 שקלים, שהוא 2,740 שקלים (9,050 - 6,310) אשלם 383.6 שקלים, שהם 14% מ־2,740 שקלים.
                                                  \n", + " על הסכום העודף בסך 950 שקלים (10,000 - 9,050) אשלם 190 ש\"ח, שהם 20% מ־950 שקלים.
                                                  \n", " בסך הכול, אשלם למס הכנסה באותו חודש 631 + 383.6 + 190 ש\"ח, שהם 1,204.6 שקלים.\n", "

                                                  \n", - "\n", - "

                                                  \n", + "

                                                  \n", " כתבו קוד למחשבון שמקבל את השכר החודשי שלכם ומדפיס את סכום המס שתשלמו.\n", - "

                                                  " + "

                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### ירוץ אם נתקן, אחרת..." + "### ירוץ אם נתקן, אחרת..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                  \n", - " בקוד הבא נפלו שגיאות רבות.
                                                  \n", + "

                                                  \n", + " בקוד הבא נפלו שגיאות רבות.
                                                  \n", " תקנו אותו והריצו אותו כך שיעבוד ושידפיס הודעה אחת בלבד עבור כל מצב.\n", "

                                                  " ] diff --git a/week2/3_Functions.ipynb b/week2/3_Functions.ipynb index eb6f642..94a9359 100644 --- a/week2/3_Functions.ipynb +++ b/week2/3_Functions.ipynb @@ -4,41 +4,41 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                                  פונקציות

                                                  " + "#

                                                  פונקציות

                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                  הגדרה

                                                  " + "##

                                                  הגדרה

                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                  \n", + "פונקציה היא קטע קוד קצר ותחום שנועד לפתור בעיה ספציפית.
                                                  \n", + "כל פונקציה היא מעין רכיב בתוכנה שלנו שנושא שם מסוים. אפשר להסתכל על פונקציה כקטע קוד שמממש משימה מוגדרת היטב.
                                                  \n", + "לדוגמה, פונקציה יכולה להיות \"המר טמפרטורה ממעלות פרנהייט לצלזיוס\".
                                                  \n", + "במובן הזה, פונקציות הן כמו תוכניות קטנות – יש להן קלט, הן עושות תהליך מסוים ומחזירות תוצאה מסוימת.
                                                  \n", "אם ניקח את הפונקציה המדוברת מלמעלה, אפשר לתאר אותה כתוכנית קטנה כך:\n", "

                                                  \n", - "
                                                    \n", - "
                                                  • קלט – טמפרטורה מסוימת
                                                  • \n", - "
                                                  • תהליך – המרת הטמפרטורה למעלות צלזיוס
                                                  • \n", - "
                                                  • פלט – החזרת התוצאה
                                                  • \n", + "
                                                      \n", + "
                                                    • קלט – טמפרטורה מסוימת
                                                    • \n", + "
                                                    • תהליך – המרת הטמפרטורה למעלות צלזיוס
                                                    • \n", + "
                                                    • פלט – החזרת התוצאה
                                                    • \n", "
                                                    \n", - "

                                                    \n", - "פונקציות הן למעשה אבני הבניין של תוכנה – כל פונקציה שואפת למלא תפקיד מוגדר בתוכנה, ובעזרת הרבה אבני בניין שכאלו אפשר לבנות תוכנה מורכבת.
                                                    \n", + "

                                                    \n", + "פונקציות הן למעשה אבני הבניין של תוכנה – כל פונקציה שואפת למלא תפקיד מוגדר בתוכנה, ובעזרת הרבה אבני בניין שכאלו אפשר לבנות תוכנה מורכבת.
                                                    \n", "התוכנות שבהן אתם משתמשים ביום־יום מורכבות בדרך כלל מכמות רבה מאוד של פונקציות. \n", "

                                                    " ] @@ -47,9 +47,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "עד סוף השיעור נדע איך יוצרים פונקציה כזו ואיך משתמשים בה.
                                                    \n", - "נדמיין פונקציה כמכונה שמקבלת ערכים, ויודעת לתת לנו פלט מסוים לפי אותם ערכים.
                                                    \n", + "

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

                                                    " ] @@ -59,9 +59,9 @@ "metadata": {}, "source": [ "
                                                    \n", - " \"איור\n", - "
                                                    \n", - " ככה אני מדמיין פונקציה:
                                                    \n", + "\"איור\n", + "
                                                    \n", + " ככה אני מדמיין פונקציה:
                                                    \n", " מכונה שמקבלת קלט ומוציאה פלט, ושאף אחד לא צריך לדעת מה קורה בתוכה.\n", "
                                                    \n", "
                                                    " @@ -71,19 +71,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                    דוגמאות

                                                    " + "##

                                                    דוגמאות

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "אחת הפונקציות שכמעט כולם מכירים היא העלאה בריבוע.
                                                    \n", - "הקלט של הפונקציה הוא מספר כלשהו, התהליך שקורה בפונקציה הוא הכפלת המספר בעצמו, והפלט הוא תוצאת המכפלה.
                                                    \n", - "לדוגמה, הקלט של פונקציה בשם \"העלאה בריבוע\" יכול להיות 5, והפלט שלה יהיה 25.
                                                    \n", + "

                                                    \n", + "אחת הפונקציות שכמעט כולם מכירים היא העלאה בריבוע.
                                                    \n", + "הקלט של הפונקציה הוא מספר כלשהו, התהליך שקורה בפונקציה הוא הכפלת המספר בעצמו, והפלט הוא תוצאת המכפלה.
                                                    \n", + "לדוגמה, הקלט של פונקציה בשם \"העלאה בריבוע\" יכול להיות 5, והפלט שלה יהיה 25.
                                                    \n", "דוגמאות נוספות לקלט הן -3, שעבורו הפלט יהיה 9,\n", - "או 0.5, שעבורו הפלט יהיה 0.25.
                                                    \n", + "או 0.5, שעבורו הפלט יהיה 0.25.
                                                    \n", "

                                                    " ] }, @@ -91,19 +91,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    רעיונות נוספים לפונקציות

                                                    " + "###

                                                    רעיונות נוספים לפונקציות

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                      \n", - "
                                                    • בהינתן שני מספרים, בדוק מי הגדול ביניהם והחזר אותו.
                                                    • \n", - "
                                                    • בהינתן מספר כלשהו, החזר את סכום כל המספרים הזוגיים מ־0 ועד אליו.
                                                    • \n", - "
                                                    • בהינתן שני מספרים ופעולת חשבון, החזר את תוצאת התרגיל.
                                                    • \n", - "
                                                    • בהינתן שם משתנה, בדוק מה הסוג שלו (נשמע מוכר?)
                                                    • \n", - "
                                                    • בדוק מה הטמפרטורה הצפויה הממוצעת ב־n הימים הקרובים והחזר את התוצאה.
                                                    • \n", + "
                                                        \n", + "
                                                      • בהינתן שני מספרים, בדוק מי הגדול ביניהם והחזר אותו.
                                                      • \n", + "
                                                      • בהינתן מספר כלשהו, החזר את סכום כל המספרים הזוגיים מ־0 ועד אליו.
                                                      • \n", + "
                                                      • בהינתן שני מספרים ופעולת חשבון, החזר את תוצאת התרגיל.
                                                      • \n", + "
                                                      • בהינתן שם משתנה, בדוק מה הסוג שלו (נשמע מוכר?)
                                                      • \n", + "
                                                      • בדוק מה הטמפרטורה הצפויה הממוצעת ב־n הימים הקרובים והחזר את התוצאה.
                                                      • \n", "
                                                      " ] }, @@ -111,14 +111,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                      כתיבת פונקציה

                                                      " + "##

                                                      כתיבת פונקציה

                                                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                      \n", + "

                                                      \n", " דרך קלה לקבל הערכה גסה של כמה קלוריות יש במוצר מזון, היא זו:\n", "

                                                      " ] @@ -127,11 +127,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                        \n", - "
                                                      1. מצאו את כמות הפחמימות במוצר והכפילו ב־4.
                                                      2. \n", - "
                                                      3. מצאו את כמות השומן במוצר והכפילו ב־9.
                                                      4. \n", - "
                                                      5. מצאו את כמות החלבון במוצר והכפילו ב־4.
                                                      6. \n", - "
                                                      7. כמות הקלוריות במוצר היא חיבור הערכים שקיבלתם בשלבים 1–3.
                                                      8. \n", + "
                                                          \n", + "
                                                        1. מצאו את כמות הפחמימות במוצר והכפילו ב־4.
                                                        2. \n", + "
                                                        3. מצאו את כמות השומן במוצר והכפילו ב־9.
                                                        4. \n", + "
                                                        5. מצאו את כמות החלבון במוצר והכפילו ב־4.
                                                        6. \n", + "
                                                        7. כמות הקלוריות במוצר היא חיבור הערכים שקיבלתם בשלבים 1–3.
                                                        8. \n", "
                                                        " ] }, @@ -139,23 +139,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                        \n", - "
                                                        \n", - " \"תרגול\" \n", - "
                                                        \n", - "
                                                        \n", - "

                                                        \n", - " כתבו תוכנית (ללא פונקציות) המקבלת מהמשתמש את ערכי הפחמימות, השומן והחלבון במוצר.
                                                        \n", - " הדפיסו למשתמש את כמות הקלוריות במוצר.
                                                        \n", + "

                                                        \n", + "
                                                        \n", + "\"תרגול\"\n", + "
                                                        \n", + "
                                                        \n", + "

                                                        \n", + " כתבו תוכנית (ללא פונקציות) המקבלת מהמשתמש את ערכי הפחמימות, השומן והחלבון במוצר.
                                                        \n", + " הדפיסו למשתמש את כמות הקלוריות במוצר.
                                                        \n", " פתרו את התרגיל לפני שתמשיכו הלאה.\n", "

                                                        \n", - "
                                                        \n", - "
                                                        \n", - "

                                                        \n", - " חשוב!
                                                        \n", + "

                                                        \n", + "
                                                        \n", + "

                                                        \n", + "חשוב!
                                                        \n", " פתרו לפני שתמשיכו!\n", "

                                                        \n", - "
                                                        \n", + "
                                                        \n", "
                                                        " ] }, @@ -163,7 +163,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", + "

                                                        \n", "והנה הפתרון לשאלה מלמעלה (אזהרת ספוילר!)

                                                        " ] }, @@ -185,15 +185,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                        הגדרת הפונקציה

                                                        " + "###

                                                        הגדרת הפונקציה

                                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "ההתחלה תהיה קפיצת ראש למים העמוקים, אבל אל חשש! אני אסביר בקרוב מה קורה כאן. בינתיים אני בונה קצת מתח.
                                                        \n", + "

                                                        \n", + "ההתחלה תהיה קפיצת ראש למים העמוקים, אבל אל חשש! אני אסביר בקרוב מה קורה כאן. בינתיים אני בונה קצת מתח.
                                                        \n", "דבר ראשון נזרוק את הפתרון של התרגיל בתוך פונקציה.\n", "

                                                        " ] @@ -217,9 +217,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "בתא שממש פה מעל, השתמשנו במילת המפתח def ובעזרתה הגדרנו פונקציה שנקראת calculate_calories.
                                                        \n", - "לפני שניכנס לפרטים על אודות ההגדרה ומה היא עושה, הריצו את התא ונסו לשים אצבע על תופעה משונה בתא הזה...
                                                        \n", + "

                                                        \n", + "בתא שממש פה מעל, השתמשנו במילת המפתח def ובעזרתה הגדרנו פונקציה שנקראת calculate_calories.
                                                        \n", + "לפני שניכנס לפרטים על אודות ההגדרה ומה היא עושה, הריצו את התא ונסו לשים אצבע על תופעה משונה בתא הזה...
                                                        \n", "ובכן, התופעה המשונה היא שבניגוד לפתרון התרגיל בלי הפונקציה שכתבנו למעלה, התא שבו הפונקציה כתובה לא עושה כלום!\n", "

                                                        " ] @@ -228,16 +228,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                        קריאה לפונקציה

                                                        " + "###

                                                        קריאה לפונקציה

                                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                        \n", + "ובכן, זה מאחר שפונקציות לא פועלות מייד אחרי שמגדירים אותן.
                                                        \n", + "בניגוד למסרונים בתקופת בחירות, לפונקציות צריך ממש לקרוא אקטיבית כדי שיבואו.
                                                        \n", "נעשה את זה, לפחות בינתיים, על ידי כתיבת השם של הפונקציה ואז סוגריים עגולים ריקים:\n", "

                                                        " ] @@ -255,8 +255,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "מה שעשינו בתא שמעל נקרא קריאה לפונקציה, וזו למעשה הדרך לגרום לתוכן של הפונקציה לרוץ.
                                                        \n", + "

                                                        \n", + "מה שעשינו בתא שמעל נקרא קריאה לפונקציה, וזו למעשה הדרך לגרום לתוכן של הפונקציה לרוץ.
                                                        \n", "זה ממש כמו להפעיל מעין תוכנה קטנה בתוך התוכנה שלנו.\n", "

                                                        " ] @@ -265,14 +265,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "מזל טוב! יש לנו פונקציה עובדת.
                                                        \n", + "

                                                        \n", + "מזל טוב! יש לנו פונקציה עובדת.
                                                        \n", "זה אפילו היה די קל:\n", "

                                                        \n", - "
                                                          \n", - "
                                                        1. הגדרנו פונקציה בעזרת הקוד def function_name():, כש־function_name הוא בעצם השם של הפונקציה.
                                                        2. \n", - "
                                                        3. מייד אחרי השורה הזו, כתבנו את גוף הפונקציה – מה היא עושה בפועל. בחלק הזה שמרנו על הזחה.
                                                        4. \n", - "
                                                        5. קראנו לפונקציה בציון השם שלה, ואז סוגריים. כך הפעלנו את הפונקציה, וגרמנו לכך שגוף הפונקציה ירוץ.
                                                        6. \n", + "
                                                            \n", + "
                                                          1. הגדרנו פונקציה בעזרת הקוד def function_name():, כש־function_name הוא בעצם השם של הפונקציה.
                                                          2. \n", + "
                                                          3. מייד אחרי השורה הזו, כתבנו את גוף הפונקציה – מה היא עושה בפועל. בחלק הזה שמרנו על הזחה.
                                                          4. \n", + "
                                                          5. קראנו לפונקציה בציון השם שלה, ואז סוגריים. כך הפעלנו את הפונקציה, וגרמנו לכך שגוף הפונקציה ירוץ.
                                                          6. \n", "
                                                          " ] }, @@ -280,16 +280,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                          \n", - "
                                                          \n", - " \"אזהרה!\" \n", - "
                                                          \n", - "
                                                          \n", - "

                                                          \n", - " קריאה לפונקציה חייבת להופיע אחרי הגדרתה.
                                                          \n", + "

                                                          \n", + "
                                                          \n", + "\"אזהרה!\"\n", + "
                                                          \n", + "
                                                          \n", + "

                                                          \n", + " קריאה לפונקציה חייבת להופיע אחרי הגדרתה.
                                                          \n", " אם קודם נקרא לפונקציה ורק אז נגדיר אותה, פייתון עדיין לא תכיר את הפונקציה ותזרוק לנו שגיאה.\n", "

                                                          \n", - "
                                                          \n", + "
                                                          \n", "
                                                          " ] }, @@ -297,15 +297,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                          טרמינולוגיה

                                                          " + "###

                                                          טרמינולוגיה

                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                          \n", - "כדי לזקק את הרעיון, ננסה להגדיר פונקציה פשוטה יחסית, ונקרא לה מייד כדי להפעיל אותה.
                                                          \n", + "

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

                                                          " ] @@ -327,16 +327,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                          פרמטרים

                                                          " + "###

                                                          פרמטרים

                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                          \n", - "נהוג להגיד שכל פונקציה צריכה להיות אחראית לדבר אחד בלבד.
                                                          \n", - "במילים אחרות – כמה שפחות עבודה בתוך כל פונקציה, וכמה שיותר התמקדות במה שהיא באמת צריכה לעשות, כך ייטב.
                                                          \n", + "

                                                          \n", + "נהוג להגיד שכל פונקציה צריכה להיות אחראית לדבר אחד בלבד.
                                                          \n", + "במילים אחרות – כמה שפחות עבודה בתוך כל פונקציה, וכמה שיותר התמקדות במה שהיא באמת צריכה לעשות, כך ייטב.
                                                          \n", "אחד הדברים הראשונים שנוח לנו להוציא מהפונקציה שלנו זה הקלט מהמשתמש, שביצענו בתוך הפונקציה:\n", "

                                                          " ] @@ -362,14 +362,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                          \n", - "הקוד הזה אומנם יעבוד, אבל הוא כתוב בצורה גרועה מאוד.
                                                          \n", - "הוא מפר את העיקרון שהתחלנו איתו – פונקציה אמורה להיות יחידה עצמאית, קטנה וארוזה.
                                                          \n", + "

                                                          \n", + "הקוד הזה אומנם יעבוד, אבל הוא כתוב בצורה גרועה מאוד.
                                                          \n", + "הוא מפר את העיקרון שהתחלנו איתו – פונקציה אמורה להיות יחידה עצמאית, קטנה וארוזה.
                                                          \n", "היא אמורה להיות תלויה כמה שפחות בסביבה החיצונית.\n", "

                                                          \n", - "

                                                          \n", - "בתוך הפונקציה אנחנו מתייחסים למשתנים fat, protein ו־carbs, שאינם חלק מהפונקציה.
                                                          \n", - "ייתכן שבעתיד מישהו יעתיק את הפונקציה calculate_calories לתוכנית שלו, והמשתנים הללו לא יהיו מוגדרים בגוף התוכנית.
                                                          \n", + "

                                                          \n", + "בתוך הפונקציה אנחנו מתייחסים למשתנים fat, protein ו־carbs, שאינם חלק מהפונקציה.
                                                          \n", + "ייתכן שבעתיד מישהו יעתיק את הפונקציה calculate_calories לתוכנית שלו, והמשתנים הללו לא יהיו מוגדרים בגוף התוכנית.
                                                          \n", "במקרה כזה, לפונקציה לא יהיה מאיפה לקחת את הערכים והיא תקרוס.\n", "

                                                          " ] @@ -378,8 +378,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                          \n", - "הדרך להתמודד עם הבעיה הזו היא לחייב את הפונקציה לקבל באופן מסודר את הנתונים האלו מבחוץ.
                                                          \n", + "

                                                          \n", + "הדרך להתמודד עם הבעיה הזו היא לחייב את הפונקציה לקבל באופן מסודר את הנתונים האלו מבחוץ.
                                                          \n", "נראה דוגמה:\n", "

                                                          " ] @@ -399,13 +399,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                          \n", - "שימו לב לכותרת הפונקציה.
                                                          \n", - "הכנסנו לשם את שמות 3 המשתנים הדרושים להרצת הפונקציה.
                                                          \n", - "אם תרצו, תוכלו להסתכל על זה כ\"הקלט שנדרש עבור הפונקציה\", או במקרה שלנו: \"הנתונים שדרושים כדי לחשב את כמות הקלוריות במוצר\".
                                                          \n", + "

                                                          \n", + "שימו לב לכותרת הפונקציה.
                                                          \n", + "הכנסנו לשם את שמות 3 המשתנים הדרושים להרצת הפונקציה.
                                                          \n", + "אם תרצו, תוכלו להסתכל על זה כ\"הקלט שנדרש עבור הפונקציה\", או במקרה שלנו: \"הנתונים שדרושים כדי לחשב את כמות הקלוריות במוצר\".
                                                          \n", "החלק הזה שהוספנו לפונקציה נקרא הפרמטרים של הפונקציה: כל אחד מהנתונים carbs, fat ו־protein הוא פרמטר.\n", "

                                                          \n", - "

                                                          \n", + "

                                                          \n", "השם התיאורטי והמפונפן שמתכנתים משתמשים בו עבור השילוב של שם הפונקציה עם שמות הפרמטרים שלה נקרא חתימת הפונקציה.\n", "

                                                          " ] @@ -414,9 +414,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                          \n", + "איך תראה הקריאה לפונקציה עכשיו?
                                                          \n", + "אותו דבר, רק שבתוך הסוגריים נכתוב את הערכים שעבורם נרצה לחשב את כמות הקלוריות, לפי הסדר של הפרמטרים.
                                                          \n", "הערכים שנעביר בתוך הקריאה לפונקציה נקראים ארגומנטים.\n", "

                                                          " ] @@ -434,8 +434,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                          \n", - "אם כך, בארוחה שבה 50 גרם פחמימות, 90 גרם שומן ו־20 גרם חלבון, יש כ־1,090 קלוריות.
                                                          \n", + "

                                                          \n", + "אם כך, בארוחה שבה 50 גרם פחמימות, 90 גרם שומן ו־20 גרם חלבון, יש כ־1,090 קלוריות.
                                                          \n", "

                                                          " ] }, @@ -443,7 +443,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                          \n", + "

                                                          \n", "נסכם את מה שעשינו עד עכשיו ונרענן את הטרמינולוגיה שלנו:\n", "

                                                          " ] @@ -472,16 +472,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                          \n", - "
                                                          \n", - " \"אזהרה!\" \n", - "
                                                          \n", - "
                                                          \n", - "

                                                          \n", - " מותר שבתוך פונקציה יוגדר משתנה ששמו זהה למשתנה שנמצא מחוץ לפונקציה.
                                                          \n", + "

                                                          \n", + "
                                                          \n", + "\"אזהרה!\"\n", + "
                                                          \n", + "
                                                          \n", + "

                                                          \n", + " מותר שבתוך פונקציה יוגדר משתנה ששמו זהה למשתנה שנמצא מחוץ לפונקציה.
                                                          \n", " מתכנתים רבים מעדיפים להימנע מכך כדי למנוע באגים.\n", "

                                                          \n", - "
                                                          \n", + "
                                                          \n", "
                                                          " ] }, @@ -489,17 +489,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                          ערך החזרה

                                                          " + "###

                                                          ערך החזרה

                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                          " ] }, @@ -507,14 +507,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                          \n", - "יש לצורת עבודה כזו יתרונות משמעותיים.
                                                          \n", + "

                                                          \n", + "יש לצורת עבודה כזו יתרונות משמעותיים.
                                                          \n", "אם הפונקציה תחזיר ערך מספרי, נוכל לעשות בו שימוש בפונקציות אחרות כדי לבצע פעולות המשך על התוצאה, כמו נניח: \n", "

                                                          \n", - "
                                                            \n", - "
                                                          1. לחשב כמה זמן אנחנו צריכים ללכת כדי לשרוף את כמות הקלוריות שצרכנו.
                                                          2. \n", - "
                                                          3. לחשב כמה סופגניות היינו יכולים לאכול במקום הארוחה שחישבנו את כמות הקלוריות בה.
                                                          4. \n", - "
                                                          5. לחשב אם נמכרו השנה מספיק המבורגרים של מקדונלדס כדי להשיג אנרגיה המשתווה בעוצמתה לפצצה שנחתה על הירושימה.
                                                          6. \n", + "
                                                              \n", + "
                                                            1. לחשב כמה זמן אנחנו צריכים ללכת כדי לשרוף את כמות הקלוריות שצרכנו.
                                                            2. \n", + "
                                                            3. לחשב כמה סופגניות היינו יכולים לאכול במקום הארוחה שחישבנו את כמות הקלוריות בה.
                                                            4. \n", + "
                                                            5. לחשב אם נמכרו השנה מספיק המבורגרים של מקדונלדס כדי להשיג אנרגיה המשתווה בעוצמתה לפצצה שנחתה על הירושימה.
                                                            6. \n", "
                                                            " ] }, @@ -522,8 +522,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "אוקיי, על פניו יש דרך פשוטה למדי לטפל בזה.
                                                            \n", + "

                                                            \n", + "אוקיי, על פניו יש דרך פשוטה למדי לטפל בזה.
                                                            \n", "בואו ננסה להפעיל את הפונקציה, ואז ניגש לערך calories שנמצא בתוכה!\n", "

                                                            " ] @@ -545,10 +545,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "מממ... זה לא עבד כמצופה.
                                                            \n", - "הסיבה שלא הצלחנו לקבל את התוכן של המשתנה calories מתוך הפונקציה, היא בגלל העיקרון שפונקציה היא קופסה סגורה.
                                                            \n", - "לכן, משתנים שמוגדרים בתוך הפונקציה זמינים אך ורק בתוכה, ונעלמים כשהיא מסיימת לרוץ.
                                                            \n", + "

                                                            \n", + "מממ... זה לא עבד כמצופה.
                                                            \n", + "הסיבה שלא הצלחנו לקבל את התוכן של המשתנה calories מתוך הפונקציה, היא בגלל העיקרון שפונקציה היא קופסה סגורה.
                                                            \n", + "לכן, משתנים שמוגדרים בתוך הפונקציה זמינים אך ורק בתוכה, ונעלמים כשהיא מסיימת לרוץ.
                                                            \n", "

                                                            " ] }, @@ -556,8 +556,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "אז איך בכל זאת אפשר לקבל את תוצאת החישוב שלנו מתוך פונקציה?
                                                            \n", + "

                                                            \n", + "אז איך בכל זאת אפשר לקבל את תוצאת החישוב שלנו מתוך פונקציה?
                                                            \n", "הביטו על הפונקציה הבאה:\n", "

                                                            " ] @@ -577,9 +577,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "עוד לפני שאתייחס למילת המפתח החדשה return, שימו לב כמה נעים לקרוא את הפונקציה הזו.
                                                            \n", - "הפונקציה מתמקדת אך ורק במה שהיא אמורה לעשות, ואפשר להבין בקלות מה המטרה שלה ומה היא מבצעת.
                                                            \n", + "

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

                                                            " ] @@ -588,7 +588,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", + "

                                                            \n", "ננסה לקרוא לפונקציה החדשה שהגדרנו, ונראה מה יקרה:\n", "

                                                            " ] @@ -606,9 +606,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "מעניין! הפונקציה ממש החזירה לנו ערך.
                                                            \n", - "זה אומר שהצלחנו לקבל מתוך הפונקציה נתון ממשי שאפשר לעבוד איתו.
                                                            \n", + "

                                                            \n", + "מעניין! הפונקציה ממש החזירה לנו ערך.
                                                            \n", + "זה אומר שהצלחנו לקבל מתוך הפונקציה נתון ממשי שאפשר לעבוד איתו.
                                                            \n", "בואו נשחק עם זה:\n", "

                                                            " ] @@ -627,10 +627,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                            " ] @@ -649,7 +649,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", + "

                                                            \n", "נוכל להשתמש ברעיון הזה כדי לכתוב את הקוד בצורה קריאה יותר – נשמור את הערך שהפונקציה החזירה לנו בצד, ונשתמש בו:\n", "

                                                            " ] @@ -669,7 +669,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", + "

                                                            \n", "זה הזמן לראות את התוכנית שלנו מוכנה, עם כל הטרמינולוגיה עליה:\n", "

                                                            " ] @@ -699,16 +699,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            עקרונות נוספים

                                                            " + "###

                                                            עקרונות נוספים

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "העיקרון האחרון שניגע בו הוא העיקרון של החזרה מיידית.
                                                            \n", - "ברגע שפונקציה מגיעה לשורה שבה כתוב return, היא תחזיר ערך ותסיים את ריצתה באותה שורה.
                                                            \n", + "

                                                            \n", + "העיקרון האחרון שניגע בו הוא העיקרון של החזרה מיידית.
                                                            \n", + "ברגע שפונקציה מגיעה לשורה שבה כתוב return, היא תחזיר ערך ותסיים את ריצתה באותה שורה.
                                                            \n", "בואו נראה דוגמה:\n", "

                                                            " ] @@ -731,8 +731,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "במקרה הזה, הערך היחיד שחזר הוא 6.
                                                            \n", + "

                                                            \n", + "במקרה הזה, הערך היחיד שחזר הוא 6.
                                                            \n", "הסיבה לכך היא שאחרי השורה return number + 1, הפונקציה החזירה ערך והפסיקה לרוץ.\n", "

                                                            " ] @@ -741,16 +741,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            דוגמה נוספת

                                                            " + "###

                                                            דוגמה נוספת

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                            \n", + "לפניכם דוגמה של פונקציה שמחשבת את הערך המוחלט של מספר.
                                                            \n", + "לצורך הדוגמה הזו, הערך המוחלט של מספר מוגדר כמרחק שלו מהמספר אפס.
                                                            \n", "למשל, הערך המוחלט של 6 הוא 6, והערך המוחלט של -4 הוא 4.\n", "

                                                            " ] @@ -773,17 +773,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                            \n", - "
                                                            \n", - " \"תרגול\" \n", - "
                                                            \n", - "
                                                            \n", - "

                                                            \n", - " תרגול:\n", - " כתבו פונקציה שמקבלת שני מספרים ומחזירה את הגדול מביניהם.
                                                            \n", + "

                                                            \n", + "
                                                            \n", + "\"תרגול\"\n", + "
                                                            \n", + "
                                                            \n", + "

                                                            \n", + "תרגול:\n", + " כתבו פונקציה שמקבלת שני מספרים ומחזירה את הגדול מביניהם.
                                                            \n", " רוצים אתגר? פתרו את התרגיל ב־4 שורות.\n", "

                                                            \n", - "
                                                            \n", + "
                                                            \n", "
                                                            " ] }, @@ -791,16 +791,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            מזהים?

                                                            " + "###

                                                            מזהים?

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "ייתכן שלא שמתם לב, אבל אתם כבר מכירים פונקציות מועילות ואפילו יצא לכם להשתמש בהן!
                                                            \n", - "לדוגמה, הפונקציה print שמטרתה להדפיס למסך הודעה שהיא מקבלת כארגומנט,
                                                            \n", + "

                                                            \n", + "ייתכן שלא שמתם לב, אבל אתם כבר מכירים פונקציות מועילות ואפילו יצא לכם להשתמש בהן!
                                                            \n", + "לדוגמה, הפונקציה print שמטרתה להדפיס למסך הודעה שהיא מקבלת כארגומנט,
                                                            \n", "או הפונקציה type שמטרתה להחזיר את סוג המשתנה שהיא מקבלת כארגומנט.\n", "

                                                            " ] @@ -809,9 +809,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "עכשיו, כשאתם כבר מבינים איך עובדות פונקציות, הגיע הזמן להכיר פונקציה חדשה: len.
                                                            \n", - "הפונקציה הזו מקבלת מחרוזת – ומחזירה את האורך שלה.
                                                            \n", + "

                                                            \n", + "עכשיו, כשאתם כבר מבינים איך עובדות פונקציות, הגיע הזמן להכיר פונקציה חדשה: len.
                                                            \n", + "הפונקציה הזו מקבלת מחרוזת – ומחזירה את האורך שלה.
                                                            \n", "בואו ננסה:\n", "

                                                            " ] @@ -839,23 +839,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##
                                                            מטרות
                                                            או: למה לי להשתמש בפונקציות בכלל
                                                            " + "##
                                                            מטרות
                                                            או: למה לי להשתמש בפונקציות בכלל
                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            קְרִיאוּת

                                                            " + "###

                                                            קְרִיאוּת

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                            \n", + "פונקציות מחלקות את הקוד שלנו לקטעים קטנים ובעלי שם, שיש מאחוריהם רעיון אחד שקל לקרוא ולתפוס.
                                                            \n", + "חלוקה לקטעים קטנים מאפשרת לנו לעקוב ביעילות אחרי מבנה התוכנית.
                                                            \n", "כשנרצה לערוך חלק מסוים בתוכנית בשלב כלשהו – נדע בקלות ובמהירות איזה קטע בקוד צריך לשנות.\n", "

                                                            " ] @@ -864,16 +864,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            מניעת חזרה

                                                            " + "###

                                                            מניעת חזרה

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "פונקציות עוזרות לנו למנוע מצבים שבהם היינו צריכים לכתוב קוד כמה פעמים.
                                                            \n", - "זה מועיל מכיוון שזה מאפשר לנו להשתמש מאוד מהר בקוד שכבר כתבנו בעבר.
                                                            \n", + "

                                                            \n", + "פונקציות עוזרות לנו למנוע מצבים שבהם היינו צריכים לכתוב קוד כמה פעמים.
                                                            \n", + "זה מועיל מכיוון שזה מאפשר לנו להשתמש מאוד מהר בקוד שכבר כתבנו בעבר.
                                                            \n", "סיבה נוספת שיש להזכיר לחיוב, היא שתחזוקת הקוד קלה במידה ניכרת כשמבצעים שינוי במקום אחד מוגדר, במקום במקומות רבים ברחבי הקוד.\n", "

                                                            " ] @@ -882,14 +882,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                            מונחים

                                                            " + "##

                                                            מונחים

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                            \n", + "
                                                            \n", "
                                                            כותרת הפונקציה
                                                            השורה הראשונה בהגדרת הפונקציה. מתחילה ב־def, וכוללת את שם הפונקציה ואת שמות הפרמטרים שלה.
                                                            \n", "
                                                            שם הפונקציה
                                                            שם שמתאר היטב את פעולתה של הפונקציה. אמור להתחיל בפעולה, כמו get_account_number.
                                                            \n", "
                                                            פרמטרים
                                                            החלק שבתוך הסוגריים בכותרת הפונקציה. רשימה מופרדת בפסיקים של שמות המשתנים שימולאו בערכים מבחוץ, כדי שהפונקציה תוכל לבצע חישובים בעזרתם.
                                                            \n", @@ -905,19 +905,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                            לסיכום

                                                            " + "##

                                                            לסיכום

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "פונקציה היא מעין יחידת תוכנה בסיסית וקטנה.
                                                            \n", - "היא עוזרת לנו לחלק את התוכנה שלנו לתתי־משימות, ועושה אותה לקריאה יותר ולקלה יותר לתחזוקה.
                                                            \n", - "את הפונקציה אנחנו מגדירים בעזרת כותרת הפונקציה, שמכילה את מילת המפתח def, ואז את שם הפונקציה ואת הפרמטרים שהיא אמורה לקבל.
                                                            \n", - "מייד לאחר כותרת הפונקציה נגדיר בהזחה את גוף הפונקציה – שכולל את החישובים או את הפעולות שהפונקציה צריכה לבצע,
                                                            \n", - "ובסוף נבצע החזרה לערך ההחזרה שיופיע אחרי מילת המפתח return.
                                                            \n", + "

                                                            \n", + "פונקציה היא מעין יחידת תוכנה בסיסית וקטנה.
                                                            \n", + "היא עוזרת לנו לחלק את התוכנה שלנו לתתי־משימות, ועושה אותה לקריאה יותר ולקלה יותר לתחזוקה.
                                                            \n", + "את הפונקציה אנחנו מגדירים בעזרת כותרת הפונקציה, שמכילה את מילת המפתח def, ואז את שם הפונקציה ואת הפרמטרים שהיא אמורה לקבל.
                                                            \n", + "מייד לאחר כותרת הפונקציה נגדיר בהזחה את גוף הפונקציה – שכולל את החישובים או את הפעולות שהפונקציה צריכה לבצע,
                                                            \n", + "ובסוף נבצע החזרה לערך ההחזרה שיופיע אחרי מילת המפתח return.
                                                            \n", "כדי להשתמש בפונקציה נקרא לפונקציה בהמשך הקוד על ידי כתיבת השם שלה, ובתוך סוגריים נפרט את הארגומנטים, שהם הערכים שנרצה להעביר לפונקציה.\n", "

                                                            " ] @@ -926,9 +926,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "חשוב לזכור!
                                                            \n", - "המשתנים בתוך הפונקציה אינם נגישים מבחוץ, כיוון שהיא נחשבת יחידה סגורה.
                                                            \n", + "

                                                            \n", + "חשוב לזכור!
                                                            \n", + "המשתנים בתוך הפונקציה אינם נגישים מבחוץ, כיוון שהיא נחשבת יחידה סגורה.
                                                            \n", "כמו כן, ברגע שהפונקציה מריצה שורה שבה כתוב return, היא מחזירה ערך וריצתה נפסקת.\n", "

                                                            " ] @@ -937,24 +937,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                            תרגול

                                                            " + "##

                                                            תרגול

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            תרגיל לדוגמה: מרתון

                                                            " + "###

                                                            תרגיל לדוגמה: מרתון

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "דני מתאמן למרתון הקרוב. הוא מתחיל להתכונן על אש נמוכה, ורץ אתמול 5 קילומטרים.
                                                            \n", - "כתבו פונקציה שמקבלת כמה שעות לקח לדני לגמוע את 5 הקילומטרים הללו, ומחשבת מה קצב הריצה הממוצע של דני, בקמ\"ש.
                                                            \n", - "כתבו פונקציה נוספת שבודקת אם דני יכול להשלים מרתון בתוך 3 שעות.
                                                            \n", + "

                                                            \n", + "דני מתאמן למרתון הקרוב. הוא מתחיל להתכונן על אש נמוכה, ורץ אתמול 5 קילומטרים.
                                                            \n", + "כתבו פונקציה שמקבלת כמה שעות לקח לדני לגמוע את 5 הקילומטרים הללו, ומחשבת מה קצב הריצה הממוצע של דני, בקמ\"ש.
                                                            \n", + "כתבו פונקציה נוספת שבודקת אם דני יכול להשלים מרתון בתוך 3 שעות.
                                                            \n", "אורכו של מסלול מרתון הוא 42.195 קילומטר.\n", "

                                                            " ] @@ -963,9 +963,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "ניתן לחשב באיזו מהירות (בקמ\"ש) דני רץ אם ניקח את כמות הקילומטרים שעבר, ונחלק אותה בכמות השעות שרץ.
                                                            \n", - "ניתן לחשב כמה זמן יקח לדני לרוץ מסלול מסוים, אם ניקח את המרחק בקילומטרים שרץ ונחלק אותו במהירות של דני (בקמ\"ש).
                                                            \n", + "

                                                            \n", + "ניתן לחשב באיזו מהירות (בקמ\"ש) דני רץ אם ניקח את כמות הקילומטרים שעבר, ונחלק אותה בכמות השעות שרץ.
                                                            \n", + "ניתן לחשב כמה זמן יקח לדני לרוץ מסלול מסוים, אם ניקח את המרחק בקילומטרים שרץ ונחלק אותו במהירות של דני (בקמ\"ש).
                                                            \n", "ניתן לחשב כמה קילומטרים דני ירוץ בזמן נתון, אם ניקח את המהירות שלו בקמ\"ש ונכפיל אותה בזמן שלקח לו לרוץ את המרחק הזה.\n", "

                                                            " ] @@ -987,7 +987,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", + "

                                                            \n", "הפתרון מופיע בתחתית המחברת.\n", "

                                                            " ] @@ -996,14 +996,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            האריך במילים

                                                            " + "###

                                                            האריך במילים

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", + "

                                                            \n", "כתבו פונקציה שמקבלת 3 מחרוזות כארגומנטים ומחזירה את המחרוזת הארוכה יותר מביניהן.\n", "

                                                            " ] @@ -1012,29 +1012,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            פיזבאז

                                                            " + "###

                                                            פיזבאז

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", + "

                                                            \n", "זוהי גרסה של תרגיל פופולרי בראיונות עבודה.\n", "

                                                            \n", - "

                                                            \n", - "כתבו פונקציה שמקבלת מספר.
                                                            \n", - "אם המספר מתחלק ב־3 ללא שארית, הדפיסו Fizz.
                                                            \n", - "אם המספר מתחלק ב־5 ללא שארית, הדפיסו Buzz.
                                                            \n", - "אם המספר מתחלק גם ב־3 וגם ב־5 ללא שארית, הדפיסו FizzBuzz.
                                                            \n", + "

                                                            \n", + "כתבו פונקציה שמקבלת מספר.
                                                            \n", + "אם המספר מתחלק ב־3 ללא שארית, הדפיסו Fizz.
                                                            \n", + "אם המספר מתחלק ב־5 ללא שארית, הדפיסו Buzz.
                                                            \n", + "אם המספר מתחלק גם ב־3 וגם ב־5 ללא שארית, הדפיסו FizzBuzz.
                                                            \n", "אם המספר לא מתחלק ב־3 ולא מתחלק ב־5, הדפיסו את המספר עצמו.\n", "

                                                            \n", - "\n", - "

                                                            \n", + "

                                                            \n", " לדוגמה,\n", - " עבור המספר 9 הדפיסו Fizz,
                                                            \n", - " עבור המספר 10 הדפיסו Buzz,
                                                            \n", - " עבור המספר 15 הדפיסו FizzBuzz,
                                                            \n", + " עבור המספר 9 הדפיסו Fizz,
                                                            \n", + " עבור המספר 10 הדפיסו Buzz,
                                                            \n", + " עבור המספר 15 הדפיסו FizzBuzz,
                                                            \n", " ועבור המספר 7 הדפיסו 7.\n", "

                                                            " ] @@ -1043,16 +1042,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            מספר הפוך

                                                            " + "###

                                                            מספר הפוך

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "כתבו פונקציה שמקבלת מספר דו־ספרתי שספרת האחדות שלו שונה מ־0.
                                                            \n", - "הפונקציה תחזיר את המספר הפוך.
                                                            \n", + "

                                                            \n", + "כתבו פונקציה שמקבלת מספר דו־ספרתי שספרת האחדות שלו שונה מ־0.
                                                            \n", + "הפונקציה תחזיר את המספר הפוך.
                                                            \n", "לדוגמה: עבור 53 הפונקציה תחזיר 35. עבור 19 הפונקציה תחזיר 91. עבור 91 הפונקציה תחזיר 19.\n", "

                                                            " ] @@ -1061,23 +1060,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            מפענח הצפנים

                                                            " + "###

                                                            מפענח הצפנים

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                            \n", - "
                                                            \n", - " \"אזהרה!\" \n", - "
                                                            \n", - "
                                                            \n", - "

                                                            \n", - " זהו תרגיל ברמת קושי גבוהה, שמערב נושאים רבים.
                                                            \n", + "

                                                            \n", + "
                                                            \n", + "\"אזהרה!\"\n", + "
                                                            \n", + "
                                                            \n", + "

                                                            \n", + " זהו תרגיל ברמת קושי גבוהה, שמערב נושאים רבים.
                                                            \n", " הרגישו בנוח להיעזר במתרגלים שלכם.\n", "

                                                            \n", - "
                                                            \n", + "
                                                            \n", "
                                                            " ] }, @@ -1085,17 +1084,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "הצופן לכספת הביתית שלכם הוא 4812. בנו משחק בול־פגיעה שמאפשר למשתמש לנסות לנחש את הצופן.
                                                            \n", - "למשתמש יש 3 ניסיונות לנחש נכונה את הצופן שלכם לפני שמופעלת אזעקה.
                                                            \n", - "כחלק ממנגנון ההגנה מאיבוד הסיסמה של הכספת, היא מציגה כמה ספרות נכונות המשתמש הזין אחרי כל ניחוש.
                                                            \n", - "אפשרו למשתמש להזין קוד 3 פעמים, וכתבו לו בכל ניסיון כמה מתוך הספרות שהזין באמת קיימות בקוד הנכון, לאו דווקא בסדר שהקיש.
                                                            \n", - "אם לא הצליח אחרי 3 ניסיונות, הדפיסו שהאזעקה הופעלה וסיימו את התוכנית.
                                                            \n", + "

                                                            \n", + "הצופן לכספת הביתית שלכם הוא 4812. בנו משחק בול־פגיעה שמאפשר למשתמש לנסות לנחש את הצופן.
                                                            \n", + "למשתמש יש 3 ניסיונות לנחש נכונה את הצופן שלכם לפני שמופעלת אזעקה.
                                                            \n", + "כחלק ממנגנון ההגנה מאיבוד הסיסמה של הכספת, היא מציגה כמה ספרות נכונות המשתמש הזין אחרי כל ניחוש.
                                                            \n", + "אפשרו למשתמש להזין קוד 3 פעמים, וכתבו לו בכל ניסיון כמה מתוך הספרות שהזין באמת קיימות בקוד הנכון, לאו דווקא בסדר שהקיש.
                                                            \n", + "אם לא הצליח אחרי 3 ניסיונות, הדפיסו שהאזעקה הופעלה וסיימו את התוכנית.
                                                            \n", "

                                                            \n", - "

                                                            \n", - "לדוגמה, אם המשתמש הקיש בניסיון הראשון 0634, הדפיסו לו שרק אחת הספרות שניחש נכונה.
                                                            \n", - "אם המשתמש הקיש בסיבוב השני 1234, הדפיסו לו ש־3 ספרות תואמות את הקוד המקורי.
                                                            \n", - "אם המשתמש הקיש בסיבוב השלישי 1284, הדפיסו לו ש־4 ספרות תואמות את הקוד המקורי, ואז הדפיסו לו שהופעלה האזעקה.
                                                            \n", + "

                                                            \n", + "לדוגמה, אם המשתמש הקיש בניסיון הראשון 0634, הדפיסו לו שרק אחת הספרות שניחש נכונה.
                                                            \n", + "אם המשתמש הקיש בסיבוב השני 1234, הדפיסו לו ש־3 ספרות תואמות את הקוד המקורי.
                                                            \n", + "אם המשתמש הקיש בסיבוב השלישי 1284, הדפיסו לו ש־4 ספרות תואמות את הקוד המקורי, ואז הדפיסו לו שהופעלה האזעקה.
                                                            \n", "אם המשתמש הקיש באחד הסיבובים 4812, הדפיסו שהכספת נפתחה בהצלחה וסיימו את התוכנית מייד.\n", "

                                                            " ] @@ -1104,17 +1103,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            סכום מספרים

                                                            " + "###

                                                            סכום מספרים

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "קבלו מספר וחשבו את העצרת שלו – מכפלת כל המספרים עד אותו מספר.
                                                            \n", - "לדוגמה, 5 עצרת שווה ל־1 כפול 2 כפול 3 כפול 4 כפול 5, והתוצאה היא 120.
                                                            \n", - "זהירות! זה תרגיל בונוס, והוא קשה מאוד. מאוד. מאוד מאוד. אנחנו לא אומרים סתם. הוא לא חובה ומיועד לאנשים שרוצים לאתגר את עצמם. מאוד.
                                                            \n", + "

                                                            \n", + "קבלו מספר וחשבו את העצרת שלו – מכפלת כל המספרים עד אותו מספר.
                                                            \n", + "לדוגמה, 5 עצרת שווה ל־1 כפול 2 כפול 3 כפול 4 כפול 5, והתוצאה היא 120.
                                                            \n", + "זהירות! זה תרגיל בונוס, והוא קשה מאוד. מאוד. מאוד מאוד. אנחנו לא אומרים סתם. הוא לא חובה ומיועד לאנשים שרוצים לאתגר את עצמם. מאוד.
                                                            \n", "

                                                            " ] }, @@ -1122,7 +1121,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            פתרון התרגול לדוגמה: מרתון

                                                            " + "###

                                                            פתרון התרגול לדוגמה: מרתון

                                                            " ] }, { @@ -1155,7 +1154,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", + "

                                                            \n", "בואו ננקה, נסדר ונהפוך דברים ליותר כלליים:\n", "

                                                            " ] diff --git a/week2/4_Lists.ipynb b/week2/4_Lists.ipynb index 04ef3ca..3ed0171 100644 --- a/week2/4_Lists.ipynb +++ b/week2/4_Lists.ipynb @@ -4,29 +4,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                                            רשימות

                                                            " + "#

                                                            רשימות

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                            הגדרה

                                                            " + "##

                                                            הגדרה

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "רשימה, כשמה כן היא, מייצגת אוסף מסודר של ערכים. רשימות יהיו סוג הנתונים הראשון שנכיר בפייתון, שמטרתו היא לקבץ ערכים.
                                                            \n", + "

                                                            \n", + "רשימה, כשמה כן היא, מייצגת אוסף מסודר של ערכים. רשימות יהיו סוג הנתונים הראשון שנכיר בפייתון, שמטרתו היא לקבץ ערכים.
                                                            \n", "הרעיון מוכר לנו מהיום־יום: רשימת פריטים לקנייה בסופר שמסודרת לפי הא–ב, או רשימת ההופעות בקיץ הקרוב המסודרת לפי תאריך.\n", "

                                                            " ] @@ -35,8 +35,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "נסו לדמיין רשימה כמסדרון ארוך, שבו עומדים בתור אחד אחרי השני איברים מסוגים שאנחנו מכירים בפייתון.
                                                            \n", + "

                                                            \n", + "נסו לדמיין רשימה כמסדרון ארוך, שבו עומדים בתור אחד אחרי השני איברים מסוגים שאנחנו מכירים בפייתון.
                                                            \n", "אם נשתמש בדימוי הלייזרים שנתנו למשתנים בשבוע הקודם, אפשר להגיד שמדובר בלייזר שמצביע לשורת לייזרים, שבה כל לייזר מצביע על ערך כלשהו.\n", "

                                                            " ] @@ -46,37 +46,35 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                            012345
                                                            \"David Ben-Gurion\"\"Moshe Sharett\"\"David Ben-Gurion\"\"Levi Eshkol\"\"Yigal Alon\"\"Golda Meir\"
                                                            -6-5-4-3-2-1
                                                            012345
                                                            \"David Ben-Gurion\"\"Moshe Sharett\"\"David Ben-Gurion\"\"Levi Eshkol\"\"Yigal Alon\"\"Golda Meir\"
                                                            -6-5-4-3-2-1
                                                            \n", - "\n", - "
                                                            \n", - "\n", - "

                                                            \n", + "
                                                            \n", + "

                                                            \n", " דוגמה לרשימה: 6 ראשי הממשלה הראשונים בישראל לפי סדר כהונתם, משמאל לימין\n", "

                                                            " ] @@ -85,38 +83,38 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                            דוגמאות

                                                            " + "##

                                                            דוגמאות

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                              \n", - "
                                                            1. רשימת שמות ראשי הממשלה במדינת ישראל לפי סדר כהונתם.
                                                            2. \n", - "
                                                            3. רשימת הגילים של התלמידים בכיתה, מהמבוגר לצעיר.
                                                            4. \n", - "
                                                            5. רשימת שמות של התקליטים שיש לי בארון, מסודרת מהתקליט השמאלי לימני.
                                                            6. \n", - "
                                                            7. רשימה שבה כל איבר מייצג אם לראש הממשלה שנמצא בתא התואם ברשימה הקודמת היו משקפיים.
                                                            8. \n", - "
                                                            9. האיברים 42, 8675309, 73, -40 ו־186282 בסדר הזה.
                                                            10. \n", - "
                                                            11. רשימה של תחזית מזג האוויר ב־7 הימים הקרובים. כל איבר ברשימה הוא בפני עצמו רשימה, שמכילה שני איברים: הראשון הוא מה תהיה הטמפרטורה הממוצעת, והשני הוא מה תהיה הלחות הממוצעת.
                                                            12. \n", - "
                                                                " + "
                                                                  \n", + "
                                                                1. רשימת שמות ראשי הממשלה במדינת ישראל לפי סדר כהונתם.
                                                                2. \n", + "
                                                                3. רשימת הגילים של התלמידים בכיתה, מהמבוגר לצעיר.
                                                                4. \n", + "
                                                                5. רשימת שמות של התקליטים שיש לי בארון, מסודרת מהתקליט השמאלי לימני.
                                                                6. \n", + "
                                                                7. רשימה שבה כל איבר מייצג אם לראש הממשלה שנמצא בתא התואם ברשימה הקודמת היו משקפיים.
                                                                8. \n", + "
                                                                9. האיברים 42, 8675309, 73, -40 ו־186282 בסדר הזה.
                                                                10. \n", + "
                                                                11. רשימה של תחזית מזג האוויר ב־7 הימים הקרובים. כל איבר ברשימה הוא בפני עצמו רשימה, שמכילה שני איברים: הראשון הוא מה תהיה הטמפרטורה הממוצעת, והשני הוא מה תהיה הלחות הממוצעת.
                                                                12. \n", + "
                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                  \n", - "
                                                                  \n", - " \"תרגול\" \n", - "
                                                                  \n", - "
                                                                  \n", - "

                                                                  \n", - " תרגול:\n", - " הרשימות שהוצגו למעלה הן רשימות הומוגניות, כאלו שכל האיברים שבהן הם מאותו סוג.
                                                                  \n", + "

                                                                  \n", + "
                                                                  \n", + "\"תרגול\"\n", + "
                                                                  \n", + "
                                                                  \n", + "

                                                                  \n", + "תרגול:\n", + " הרשימות שהוצגו למעלה הן רשימות הומוגניות, כאלו שכל האיברים שבהן הם מאותו סוג.
                                                                  \n", " כתבו עבור כל אחת מהרשימות שהוצגו בדוגמה מה סוג הנתונים שיישמר בהן.\n", "

                                                                  \n", - "
                                                                  \n", + "
                                                                  \n", "
                                                                  " ] }, @@ -124,15 +122,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                  \n", - "
                                                                  \n", - " \"תרגול\" \n", - "
                                                                  \n", - "
                                                                  \n", - "

                                                                  \n", - " תרגול:\n", + "

                                                                  \n", + "
                                                                  \n", + "\"תרגול\"\n", + "
                                                                  \n", + "
                                                                  \n", + "

                                                                  \n", + "תרגול:\n", " נסו לתת דוגמה לעוד 3 רשימות שבהן נתקלתם לאחרונה.

                                                                  \n", - "
                                                                  \n", + "
                                                                  \n", "
                                                                  " ] }, @@ -140,14 +138,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                  רשימות בקוד

                                                                  " + "##

                                                                  רשימות בקוד

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "רשימות הן אחד מסוגי הנתונים הכיפיים ביותר בפייתון, וזאת בזכות הגמישות האדירה שיש לנו בתכנות עם רשימות.\n", "

                                                                  " ] @@ -156,14 +154,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הגדרת רשימה" + "### הגדרת רשימה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "נגדיר בעזרת פייתון את הרשימה שפגשנו למעלה – 6 ראשי הממשלה הראשונים מאז קום המדינה:\n", "

                                                                  " ] @@ -181,13 +179,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "מה התרחש בקוד?
                                                                  \n", - "התחלנו את הגדרת הרשימה באמצעות התו [.
                                                                  \n", - "מייד אחרי התו הזה הכנסנו איברים לרשימה לפי הסדר הרצוי, כאשר כל איבר מופרד ממשנהו בפסיק (,).
                                                                  \n", - "במקרה שלנו, כל איבר הוא מחרוזת המייצגת ראש ממשלה. הכנסנו את ראשי הממשלה לרשימה לפי סדר כהונתם.
                                                                  \n", - "שימו לב שהרשימה מכילה איבר מסוים פעמיים – מכאן שרשימה היא מבנה נתונים שתומך בחזרות.
                                                                  \n", - "לסיום, נסגור את הגדרת הרשימה באמצעות התו ].
                                                                  \n", + "

                                                                  \n", + "מה התרחש בקוד?
                                                                  \n", + "התחלנו את הגדרת הרשימה באמצעות התו [.
                                                                  \n", + "מייד אחרי התו הזה הכנסנו איברים לרשימה לפי הסדר הרצוי, כאשר כל איבר מופרד ממשנהו בפסיק (,).
                                                                  \n", + "במקרה שלנו, כל איבר הוא מחרוזת המייצגת ראש ממשלה. הכנסנו את ראשי הממשלה לרשימה לפי סדר כהונתם.
                                                                  \n", + "שימו לב שהרשימה מכילה איבר מסוים פעמיים – מכאן שרשימה היא מבנה נתונים שתומך בחזרות.
                                                                  \n", + "לסיום, נסגור את הגדרת הרשימה באמצעות התו ].
                                                                  \n", "

                                                                  " ] }, @@ -213,7 +211,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "נוכל להגדיר רשימה של המספרים הטבעיים עד 7:\n", "

                                                                  " ] @@ -231,9 +229,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                  " ] @@ -242,7 +240,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "לשם הדוגמה, נגדיר רשימה הטרוגנית:\n", "

                                                                  " ] @@ -260,7 +258,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "נוכל אפילו להגדיר רשימה ריקה, שבה אין איברים כלל:

                                                                  " ] }, @@ -277,17 +275,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                  גישה לאיברי הרשימה

                                                                  " + "###

                                                                  גישה לאיברי הרשימה

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "לכל תא ברשימה יש מספר, שמאפשר לנו להתייחס לאיבר שנמצא באותו תא.
                                                                  \n", - "הדבר דומה ללייזר שעליו יש מדבקת שם (\"שמות ראשי ממשלה\"), והוא מצביע על שורת לייזרים שעל התווית שלהם מופיע מספר המתאר את מיקומם בשורה.
                                                                  \n", - "התא השמאלי ביותר ברשימה ממוספר כ־0, התא שנמצא אחריו (מימינו) מקבל את המספר 1, וכך הלאה עד לסוף הרשימה.
                                                                  \n", + "

                                                                  \n", + "לכל תא ברשימה יש מספר, שמאפשר לנו להתייחס לאיבר שנמצא באותו תא.
                                                                  \n", + "הדבר דומה ללייזר שעליו יש מדבקת שם (\"שמות ראשי ממשלה\"), והוא מצביע על שורת לייזרים שעל התווית שלהם מופיע מספר המתאר את מיקומם בשורה.
                                                                  \n", + "התא השמאלי ביותר ברשימה ממוספר כ־0, התא שנמצא אחריו (מימינו) מקבל את המספר 1, וכך הלאה עד לסוף הרשימה.
                                                                  \n", "המספור של כל תא נקרא המיקום שלו ברשימה, או האינדקס שלו.\n", "

                                                                  " ] @@ -296,7 +294,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "נגדיר את רשימת שמות התקליטים שיש לי בבית:\n", "

                                                                  " ] @@ -315,8 +313,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "בהנחה שאנחנו מתים על Guardians of the Galaxy, נוכל לנסות להשיג מהרשימה את Awesome Mix Vol. 1.
                                                                  \n", + "

                                                                  \n", + "בהנחה שאנחנו מתים על Guardians of the Galaxy, נוכל לנסות להשיג מהרשימה את Awesome Mix Vol. 1.
                                                                  \n", "כדי לעשות זאת, נציין את שם הרשימה שממנה אנחנו רוצים לקבל את האיבר, ומייד לאחר מכן את מיקומו ברשימה בסוגריים מרובעים.\n", "

                                                                  " ] @@ -334,18 +332,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                  \n", - "
                                                                  \n", - " \"אזהרה!\" \n", - "
                                                                  \n", - "
                                                                  \n", - "

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

                                                                  \n", + "
                                                                  \n", + "\"אזהרה!\"\n", + "
                                                                  \n", + "
                                                                  \n", + "

                                                                  \n", + " התא הראשון ממוספר 0, ולא 1.
                                                                  \n", + " יש לכך סיבות טובות, אבל פעמים רבות תרגישו שהמספור הזה לא טבעי ועלול ליצור באגים, שהם קטעי קוד שמתנהגים אחרת משציפה המתכנת.
                                                                  \n", + " כפועל יוצא, המיקום ברשימה של התא האחרון לא יהיה כאורך הרשימה, אלא כאורך הרשימה פחות אחד.
                                                                  \n", " משמע: ברשימה שבה 3 איברים, מספרו של התא האחרון יהיה 2.\n", "

                                                                  \n", - "
                                                                  \n", + "
                                                                  \n", "
                                                                  " ] }, @@ -354,10 +352,10 @@ "metadata": {}, "source": [ "
                                                                  \n", - " \"תמונה\n", - "
                                                                  \n", - " רשימת (חלק מ)התקליטים בארון שלי, מסודרת מהתקליט השמאלי לימני.
                                                                  \n", - "
                                                                  \n", + "\"תמונה\n", + "
                                                                  \n", + " רשימת (חלק מ)התקליטים בארון שלי, מסודרת מהתקליט השמאלי לימני.
                                                                  \n", + "
                                                                  \n", "
                                                                  " ] }, @@ -365,10 +363,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "כפי שניתן לראות בתמונה, פייתון מנסה לעזור לנו ומאפשרת לנו לגשת לאיברים גם מהסוף.
                                                                  \n", - "חוץ מהמספור הרגיל שראינו קודם, אפשר לגשת לאיברים מימין לשמאל באמצעות מספור שלילי.
                                                                  \n", - "האיבר האחרון יקבל את המספר -1, זה שלפניו (משמאלו) יקבל -2 וכן הלאה. \n", + "

                                                                  \n", + "כפי שניתן לראות בתמונה, פייתון מנסה לעזור לנו ומאפשרת לנו לגשת לאיברים גם מהסוף.
                                                                  \n", + "חוץ מהמספור הרגיל שראינו קודם, אפשר לגשת לאיברים מימין לשמאל באמצעות מספור שלילי.
                                                                  \n", + "האיבר האחרון יקבל את המספר -1, זה שלפניו (משמאלו) יקבל -2 וכן הלאה. \n", "

                                                                  " ] }, @@ -387,7 +385,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "אם נרצה לגשת שוב לאותו דיסק, אבל הפעם מהסוף, נוכל לכתוב זאת כך:\n", "

                                                                  " ] @@ -405,8 +403,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "כדאי לזכור שהתוכן של כל אחד מהתאים הוא ערך לכל דבר.
                                                                  \n", + "

                                                                  \n", + "כדאי לזכור שהתוכן של כל אחד מהתאים הוא ערך לכל דבר.
                                                                  \n", "יש לו סוג, ואפשר לבצע עליו פעולות כמו שלמדנו עד עכשיו:\n", "

                                                                  " ] @@ -433,7 +431,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "לסיום, נראה שבדיוק כמו במחרוזות, נוכל לבדוק את אורך הרשימה על ידי שימוש בפונקציה len.\n", "

                                                                  " ] @@ -452,17 +450,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                  \n", - "
                                                                  \n", - " \"אזהרה!\" \n", - "
                                                                  \n", - "
                                                                  \n", - "

                                                                  \n", - " אם ננסה לגשת לתא שאינו קיים, נקבל IndexError.
                                                                  \n", - " זה בדרך כלל קורה כשאנחנו שוכחים להתחיל לספור מ־0.
                                                                  \n", + "

                                                                  \n", + "
                                                                  \n", + "\"אזהרה!\"\n", + "
                                                                  \n", + "
                                                                  \n", + "

                                                                  \n", + " אם ננסה לגשת לתא שאינו קיים, נקבל IndexError.
                                                                  \n", + " זה בדרך כלל קורה כשאנחנו שוכחים להתחיל לספור מ־0.
                                                                  \n", " אם השגיאה הזו מופיעה כשאתם מתעסקים עם רשימות, חשבו איפה בקוד פניתם לתא שאינו קיים.\n", "

                                                                  \n", - "
                                                                  \n", + "
                                                                  \n", "
                                                                  " ] }, @@ -470,15 +468,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                  השמה ברשימות

                                                                  " + "###

                                                                  השמה ברשימות

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "לפעמים נרצה לשנות את הערך של האיברים ברשימה.
                                                                  \n", + "

                                                                  \n", + "לפעמים נרצה לשנות את הערך של האיברים ברשימה.
                                                                  \n", "נפנה ללייזר מסוים בשורת הלייזרים שלנו, ונבקש ממנו להצביע לערך חדש:\n", "

                                                                  " ] @@ -498,14 +496,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                  אופרטורים חשבוניים על רשימות

                                                                  " + "###

                                                                  אופרטורים חשבוניים על רשימות

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "אופרטורים שהכרנו כשלמדנו על מחרוזות, יעבדו נהדר גם על רשימות.\n", "

                                                                  " ] @@ -514,7 +512,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "כפי ש־+ משרשר בין מחרוזות, הוא יודע לשרשר גם בין רשימות:\n", "

                                                                  " ] @@ -541,7 +539,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "וכפי ש־* משרשר מחרוזת לעצמה כמות מסוימת של פעמים, כך הוא יפעל גם עם רשימות:\n", "

                                                                  " ] @@ -559,7 +557,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "אפשר גם לשלב:\n", "

                                                                  " ] @@ -577,9 +575,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "שימו לב שכל אופרטור שתשימו ליד הרשימה מתייחס לרשימה בלבד, ולא לאיברים שבתוכה.
                                                                  \n", - "משמע + 5 לא יוסיף לכם 5 לכל אחד מהאיברים, אלא ייכשל כיוון שפייתון לא יודעת לחבר רשימה למספר שלם.
                                                                  \n", + "

                                                                  \n", + "שימו לב שכל אופרטור שתשימו ליד הרשימה מתייחס לרשימה בלבד, ולא לאיברים שבתוכה.
                                                                  \n", + "משמע + 5 לא יוסיף לכם 5 לכל אחד מהאיברים, אלא ייכשל כיוון שפייתון לא יודעת לחבר רשימה למספר שלם.
                                                                  \n", "

                                                                  " ] }, @@ -596,8 +594,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "שימו לב גם שהפעלת אופרטור על רשימה לא גורמת לשינוי הרשימה, אלא רק מחזירה ערך.
                                                                  \n", + "

                                                                  \n", + "שימו לב גם שהפעלת אופרטור על רשימה לא גורמת לשינוי הרשימה, אלא רק מחזירה ערך.
                                                                  \n", "כדי לשנות ממש את הרשימה, נצטרך להשתמש בהשמה:\n", "

                                                                  " ] @@ -637,14 +635,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                  אופרטורים השוואתיים על רשימות

                                                                  " + "###

                                                                  אופרטורים השוואתיים על רשימות

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "נגדיר את רשימת האנשים שנכחו בכיתה ביום ראשון, שני, שלישי ורביעי:\n", "

                                                                  " ] @@ -665,8 +663,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "רשימות תומכות בכל אופרטורי ההשוואה שלמדנו עד כה.
                                                                  \n", + "

                                                                  \n", + "רשימות תומכות בכל אופרטורי ההשוואה שלמדנו עד כה.
                                                                  \n", "נתחיל בקל ביותר. בואו נבדוק באיזה יום הרכב התלמידים בכיתה היה זהה להרכב התלמידים שהיה בה ביום ראשון:\n", "

                                                                  " ] @@ -686,7 +684,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "האם משה נכח בכיתה ביום שלישי? \n", "

                                                                  " ] @@ -706,7 +704,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "נוכיח שמאסטר ספלינטר הבריז באותו יום: \n", "

                                                                  " ] @@ -724,7 +722,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "ולסיום, בואו נבדוק איזו גרסה חדשה יותר: \n", "

                                                                  " ] @@ -744,8 +742,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "כדי לבצע השוואה בין רשימות, פייתון מנסה להשוות את האיבר הראשון מהרשימה הראשונה לאיבר הראשון מהרשימה השנייה.
                                                                  \n", + "

                                                                  \n", + "כדי לבצע השוואה בין רשימות, פייתון מנסה להשוות את האיבר הראשון מהרשימה הראשונה לאיבר הראשון מהרשימה השנייה.
                                                                  \n", "אם יש \"תיקו\", היא תעבור לאיבר השני בכל רשימה, כך עד סוף הרשימה.\n", "

                                                                  " ] @@ -754,16 +752,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                  רשימה של רשימות

                                                                  " + "###

                                                                  רשימה של רשימות

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                  \n", + " לעיתים דברים בחיים האמיתיים הם מורכבים מדי מכדי לייצג אותם ברשימה סטנדרטית.
                                                                  \n", + " הרבה פעמים נשים לב שיוקל לנו אם ניצור רשימה שבה כל תא הוא רשימה בפני עצמו.
                                                                  הרעיון הזה ייצור לנו רשימה של רשימות.
                                                                  \n", " ניקח לדוגמה את הרשימות שהגדרנו למעלה, שמתארות מי נכח בכל יום בכיתה:\n", "

                                                                  " ] @@ -784,7 +782,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", " אנחנו רואים לפנינו רשימה של ימים, שקל להכניס לרשימה אחת גדולה: \n", "

                                                                  " ] @@ -804,114 +802,112 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", - " \n", + "\n", - " \n", + "\n", - " \n", + "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                  0123
                                                                  \n", + "
                                                                  0123
                                                                  \n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                  012
                                                                  \"Moshe\"\"Dukasit\"\"Michelangelo\"
                                                                  -3-2-1
                                                                  012
                                                                  \"Moshe\"\"Dukasit\"\"Michelangelo\"
                                                                  -3-2-1
                                                                  \n", - "
                                                                  \n", + "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                  012
                                                                  \"Moshe\"\"Dukasit\"\"Splinter\"
                                                                  -3-2-1
                                                                  012
                                                                  \"Moshe\"\"Dukasit\"\"Splinter\"
                                                                  -3-2-1
                                                                  \n", - "
                                                                  \n", + "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                  012
                                                                  \"Moshe\"\"Dukasit\"\"Michelangelo\"
                                                                  -3-2-1
                                                                  012
                                                                  \"Moshe\"\"Dukasit\"\"Michelangelo\"
                                                                  -3-2-1
                                                                  \n", - "
                                                                  \n", + "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                  0123
                                                                  \"Moshe\"\"Dukasit\"\"Michelangelo\"\"Splinter\"
                                                                  -4-3-2-1
                                                                  0123
                                                                  \"Moshe\"\"Dukasit\"\"Michelangelo\"\"Splinter\"
                                                                  -4-3-2-1
                                                                  \n", - "
                                                                  -4-3-2-1
                                                                  -4-3-2-1
                                                                  \n", - "\n", - "
                                                                  \n", - "\n", - "

                                                                  \n", + "
                                                                  \n", + "

                                                                  \n", " דוגמה לרשימה של רשימות: נוכחות התלמידים בימי ראשון עד רביעי\n", "

                                                                  " ] @@ -920,7 +916,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", " השורה שכתבנו למעלה זהה לחלוטין לשורה הבאה, שבה אנחנו מגדירים רשימה אחת שכוללת את רשימות התלמידים שנכחו בכיתה בכל יום. \n", "

                                                                  " ] @@ -938,7 +934,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "נוכל לקבל את רשימת התלמידים שנכחו ביום ראשון בצורה הבאה:\n", "

                                                                  " ] @@ -956,7 +952,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", "ואת התלמיד האחרון שנכח ביום ראשון בצורה הבאה:\n", "

                                                                  " ] @@ -977,18 +973,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - " אם קשה לכם לדמיין את זה, עשו זאת בשלבים.
                                                                  \n", + "

                                                                  \n", + " אם קשה לכם לדמיין את זה, עשו זאת בשלבים.
                                                                  \n", " בדקו מה יש ב־pupils, אחרי זה מה מחזיר pupils[0], ואז נסו לקחת ממנו את האיבר האחרון, pupils[0][-1].\n", - "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - "כדי להבין טוב יותר איך רשימה של רשימות מתנהגת, חשוב להבין את התוצאות של הביטויים הבוליאניים הבאים.
                                                                  \n", + "

                                                                  \n", + "כדי להבין טוב יותר איך רשימה של רשימות מתנהגת, חשוב להבין את התוצאות של הביטויים הבוליאניים הבאים.
                                                                  \n", "זה קצת מבלבל, אבל אני סומך עליכם שתחזיקו מעמד:\n", "

                                                                  " ] @@ -1013,13 +1009,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                    \n", - "
                                                                  1. הביטוי הבוליאני בשורה 1 מחזיר False, כיוון שכל אחד מהאיברים ברשימה pupils הוא רשימה, ואף אחד מהם אינו המחרוזת \"Moshe\".
                                                                  2. \n", - "
                                                                  3. הביטוי הבוליאני בשורה 2 מחזיר True, כיוון שהאיבר הראשון ב־pupils הוא רשימה שמכילה את המחרוזת \"Moshe\".
                                                                  4. \n", - "
                                                                  5. הביטוי הבוליאני בשורה 3 מחזיר False, כיוון שאין בתוך pupils רשימה שאלו בדיוק הערכים שלה. יש אומנם רשימה שמכילה את האיברים האלו, אבל השאלה הייתה האם הרשימה הגדולה (pupils) מכילה איבר ששווה בדיוק ל־['Moshe', 'Splinter'].
                                                                  6. \n", - "
                                                                  7. הביטוי הבוליאני בשורה 4 מחזיר False, כיוון שברשימה האחרונה בתוך pupils אין איבר שהוא הרשימה [\"Moshe\", \"Splinter\"].
                                                                  8. \n", - "
                                                                  9. הביטוי הבוליאני בשורה 5 מחזיר True, כיוון שיש רשימה ישירות בתוך pupils שאלו הם ערכיה.
                                                                  10. \n", - "
                                                                  11. הביטוי הבוליאני בשורה 6 מחזיר False, כיוון שברשימה הראשונה בתוך pupils אין איבר שהוא הרשימה הזו.
                                                                  12. \n", + "
                                                                      \n", + "
                                                                    1. הביטוי הבוליאני בשורה 1 מחזיר False, כיוון שכל אחד מהאיברים ברשימה pupils הוא רשימה, ואף אחד מהם אינו המחרוזת \"Moshe\".
                                                                    2. \n", + "
                                                                    3. הביטוי הבוליאני בשורה 2 מחזיר True, כיוון שהאיבר הראשון ב־pupils הוא רשימה שמכילה את המחרוזת \"Moshe\".
                                                                    4. \n", + "
                                                                    5. הביטוי הבוליאני בשורה 3 מחזיר False, כיוון שאין בתוך pupils רשימה שאלו בדיוק הערכים שלה. יש אומנם רשימה שמכילה את האיברים האלו, אבל השאלה הייתה האם הרשימה הגדולה (pupils) מכילה איבר ששווה בדיוק ל־['Moshe', 'Splinter'].
                                                                    6. \n", + "
                                                                    7. הביטוי הבוליאני בשורה 4 מחזיר False, כיוון שברשימה האחרונה בתוך pupils אין איבר שהוא הרשימה [\"Moshe\", \"Splinter\"].
                                                                    8. \n", + "
                                                                    9. הביטוי הבוליאני בשורה 5 מחזיר True, כיוון שיש רשימה ישירות בתוך pupils שאלו הם ערכיה.
                                                                    10. \n", + "
                                                                    11. הביטוי הבוליאני בשורה 6 מחזיר False, כיוון שברשימה הראשונה בתוך pupils אין איבר שהוא הרשימה הזו.
                                                                    12. \n", "
                                                                    " ] }, @@ -1027,8 +1023,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                    \n", - "זכרו שעבור פייתון אין שום דבר מיוחד ברשימה של רשימות. היא בסך הכול רשימה רגילה, שכל אחד מאיבריה הוא רשימה.
                                                                    \n", + "

                                                                    \n", + "זכרו שעבור פייתון אין שום דבר מיוחד ברשימה של רשימות. היא בסך הכול רשימה רגילה, שכל אחד מאיבריה הוא רשימה.
                                                                    \n", "מבחינתה אין הבדל בין רשימה כזו לכל רשימה אחרת.\n", "

                                                                    " ] @@ -1037,26 +1033,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                    המונח Iterable

                                                                    " + "##

                                                                    המונח Iterable

                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                    \n", - "באתרי אינטרנט ובתיעוד של פייתון אנחנו נפגש פעמים רבות עם המילה Iterable.
                                                                    \n", - "בקורס נשתמש במונח הזה פעמים רבות כדי להבין טוב יותר איך פייתון מתנהגת.
                                                                    \n", - "נגדיר ערך כ־iterable אם ניתן לפרק אותו לכלל האיברים שלו.
                                                                    \n", + "

                                                                    \n", + "באתרי אינטרנט ובתיעוד של פייתון אנחנו נפגש פעמים רבות עם המילה Iterable.
                                                                    \n", + "בקורס נשתמש במונח הזה פעמים רבות כדי להבין טוב יותר איך פייתון מתנהגת.
                                                                    \n", + "נגדיר ערך כ־iterable אם ניתן לפרק אותו לכלל האיברים שלו.
                                                                    \n", "

                                                                    \n", - "

                                                                    \n", - "עד כה אנחנו מכירים 2 סוגי משתנים שעונים להגדרה iterables: רשימות ומחרוזות.
                                                                    \n", - "ניתן לפרק רשימה לכל האיברים שמרכיבים אותה, וניתן לפרק מחרוזת לכל התווים שמרכיבים אותה.
                                                                    \n", + "

                                                                    \n", + "עד כה אנחנו מכירים 2 סוגי משתנים שעונים להגדרה iterables: רשימות ומחרוזות.
                                                                    \n", + "ניתן לפרק רשימה לכל האיברים שמרכיבים אותה, וניתן לפרק מחרוזת לכל התווים שמרכיבים אותה.
                                                                    \n", "

                                                                    \n", - "

                                                                    \n", - "יש הרבה במשותף לכל הדברים שניתן להגיד עליהם שהם iterables:
                                                                    \n", - "על חלק גדול מה־iterables אפשר להפעיל פעולות שמתייחסות לכלל האיברים שבהם, כמו len שמראה את מספר האיברים בערך.
                                                                    \n", - "על חלק גדול מה־iterables יהיה אפשר גם להשתמש בסוגריים מרובעים כדי לגשת לאיבר מסוים שנמצא בהם.
                                                                    \n", + "

                                                                    \n", + "יש הרבה במשותף לכל הדברים שניתן להגיד עליהם שהם iterables:
                                                                    \n", + "על חלק גדול מה־iterables אפשר להפעיל פעולות שמתייחסות לכלל האיברים שבהם, כמו len שמראה את מספר האיברים בערך.
                                                                    \n", + "על חלק גדול מה־iterables יהיה אפשר גם להשתמש בסוגריים מרובעים כדי לגשת לאיבר מסוים שנמצא בהם.
                                                                    \n", "בעתיד נלמד על עוד דברים שמשותפים לרוב (או לכל) ה־iterables.\n", "

                                                                    " ] @@ -1065,14 +1061,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                    מונחים

                                                                    " + "##

                                                                    מונחים

                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                    \n", + "
                                                                    \n", "
                                                                    רשימה
                                                                    סוג משתנה שמטרתו לקבץ ערכים אחרים בסדר מסוים.
                                                                    \n", "
                                                                    תא
                                                                    מקום ברשימה שמכיל איבר כלשהו.
                                                                    \n", "
                                                                    מיקום
                                                                    מיקום של תא מסוים הוא המרחק שלו מהתא הראשון ברשימה, שמיקומו הוא 0. זהו מספר שמטרתו לאפשר גישה לתא מסוים ברשימה.
                                                                    \n", @@ -1088,45 +1084,45 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                    לסיכום

                                                                    " + "##

                                                                    לסיכום

                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                      \n", - "
                                                                    1. מספר האיברים ברשימה יכול להיות 0 (רשימה ריקה) או יותר.
                                                                    2. \n", - "
                                                                    3. לאיברים ברשימה יש סדר.
                                                                    4. \n", - "
                                                                    5. כל איבר ברשימה ממוספר החל מהאיבר הראשון שממוספר 0, ועד האיבר האחרון שמספרו הוא אורך הרשימה פחות אחד.
                                                                    6. \n", - "
                                                                    7. ניתן לגשת לאיבר גם לפי המיקום שלו וגם לפי המרחק שלו מסוף הרשימה, באמצעות התייחסות למיקום השלילי שלו.
                                                                    8. \n", - "
                                                                    9. איברים ברשימה יכולים לחזור על עצמם.
                                                                    10. \n", - "
                                                                    11. רשימה יכולה לכלול איברים מסוג אחד בלבד (רשימה הומוגנית) או מכמה סוגים שונים (רשימה הטרוגנית).
                                                                    12. \n", - "
                                                                    13. אורך הרשימה יכול להשתנות במהלך ריצת התוכנית.
                                                                    14. \n", - "
                                                                        " + "
                                                                          \n", + "
                                                                        1. מספר האיברים ברשימה יכול להיות 0 (רשימה ריקה) או יותר.
                                                                        2. \n", + "
                                                                        3. לאיברים ברשימה יש סדר.
                                                                        4. \n", + "
                                                                        5. כל איבר ברשימה ממוספר החל מהאיבר הראשון שממוספר 0, ועד האיבר האחרון שמספרו הוא אורך הרשימה פחות אחד.
                                                                        6. \n", + "
                                                                        7. ניתן לגשת לאיבר גם לפי המיקום שלו וגם לפי המרחק שלו מסוף הרשימה, באמצעות התייחסות למיקום השלילי שלו.
                                                                        8. \n", + "
                                                                        9. איברים ברשימה יכולים לחזור על עצמם.
                                                                        10. \n", + "
                                                                        11. רשימה יכולה לכלול איברים מסוג אחד בלבד (רשימה הומוגנית) או מכמה סוגים שונים (רשימה הטרוגנית).
                                                                        12. \n", + "
                                                                        13. אורך הרשימה יכול להשתנות במהלך ריצת התוכנית.
                                                                        14. \n", + "
                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                          תרגול

                                                                          " + "##

                                                                          תרגול

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                          סדר בבית המשפט!

                                                                          " + "###

                                                                          סדר בבית המשפט!

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - "כתבו קוד שיסדר את רשימת נשיאי בית המשפט לפי סדר אלפבתי.
                                                                          \n", - "זה אכן אמור להיות מסורבל מאוד. בעתיד נלמד לכתוב קוד מוצלח יותר לבעיה הזו.
                                                                          \n", + "

                                                                          \n", + "כתבו קוד שיסדר את רשימת נשיאי בית המשפט לפי סדר אלפבתי.
                                                                          \n", + "זה אכן אמור להיות מסורבל מאוד. בעתיד נלמד לכתוב קוד מוצלח יותר לבעיה הזו.
                                                                          \n", "השתמשו באינדקסים, ושמרו ערכים בצד במשתנים.\n", "

                                                                          " ] @@ -1144,7 +1140,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", + "

                                                                          \n", "בונוס: כתבו קטע קוד שבודק שהרשימה (שמכילה 5 איברים) אכן מסודרת.\n", "

                                                                          " ] @@ -1153,15 +1149,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                          מה זה משובחה בכלל?

                                                                          " + "###

                                                                          מה זה משובחה בכלל?

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - " לפניכם רשימה של שמות טעמי גלידה שנמצאים בדוכן הגלידה השכונתי.
                                                                          \n", + "

                                                                          \n", + " לפניכם רשימה של שמות טעמי גלידה שנמצאים בדוכן הגלידה השכונתי.
                                                                          \n", " קבלו מהמשתמש קיפיק את הטעם האהוב עליו, והדפיסו למשתמש האם הטעם שלו נמכר בדוכן.\n", "

                                                                          \n" ] @@ -1179,15 +1175,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                          מה רש\"י?

                                                                          " + "###

                                                                          מה רש\"י?

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - " לפניכם כמה ביטויים.
                                                                          \n", + "

                                                                          \n", + " לפניכם כמה ביטויים.
                                                                          \n", " רשמו לעצמכם מה תהיה תוצאת כל ביטוי, ורק אז הריצו אותו.\n", "

                                                                          " ] diff --git a/week2/5_String_Methods.ipynb b/week2/5_String_Methods.ipynb index 3bfa6c8..7453616 100644 --- a/week2/5_String_Methods.ipynb +++ b/week2/5_String_Methods.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                                                          מחרוזות – חלק 2

                                                                          " + "#

                                                                          מחרוזות – חלק 2

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                          הברחת מחרוזות

                                                                          " + "##

                                                                          הברחת מחרוזות

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - "לפעמים נרצה שהמחרוזת שלנו תעשה \"דברים מיוחדים\" – כמו לרדת שורה באמצע המחרוזת או לעשות ריווח גדול באמצעות ↹ TAB (לצורך טבלאות, לדוגמה).
                                                                          \n", - "המחשב מתייחס להזחה ולשורה חדשה כתווים של ממש, ועבור כל \"תו מיוחד\" שכזה יצרו רצף של תווים שמייצג אותו.
                                                                          \n", + "

                                                                          \n", + "לפעמים נרצה שהמחרוזת שלנו תעשה \"דברים מיוחדים\" – כמו לרדת שורה באמצע המחרוזת או לעשות ריווח גדול באמצעות ↹ TAB (לצורך טבלאות, לדוגמה).
                                                                          \n", + "המחשב מתייחס להזחה ולשורה חדשה כתווים של ממש, ועבור כל \"תו מיוחד\" שכזה יצרו רצף של תווים שמייצג אותו.
                                                                          \n", "לדוגמה, כשנדע מהו רצף התווים שמייצג שורה חדשה, נוכל לכתוב אותו כחלק מהמחרוזת, וכאשר נדפיס אותה נראה ירידת שורה במקום רצף התווים.\n", "

                                                                          " ] @@ -36,8 +36,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - "נלמד את שני התווים המיוחדים שדיברנו עליהם – \\n הוא תו שמסמן ירידת שורה, ו־\\t מסמן ריווח גדול.
                                                                          \n", + "

                                                                          \n", + "נלמד את שני התווים המיוחדים שדיברנו עליהם – \\n הוא תו שמסמן ירידת שורה, ו־\\t מסמן ריווח גדול.
                                                                          \n", "איך נכניס אותם בקוד? פשוט נשלב אותם כחלק מהמחרוזת במקומות שבהם בא לנו שיופיעו:\n", "

                                                                          " ] @@ -55,7 +55,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", + "

                                                                          \n", "רצפי התווים האלו משתמשים בסימן \\ (\"Backslash\", לוכסן שמאלי) כדי לסמן תו מיוחד, והם נפוצים גם בשפות אחרות שאינן פייתון.

                                                                          " ] }, @@ -63,8 +63,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - "נשתמש ב־\\' במחרוזת שבה הסימן שמתחיל ומסיים את המחרוזת הוא '. שימוש דומה נעשה עבור \\\":
                                                                          \n", + "

                                                                          \n", + "נשתמש ב־\\' במחרוזת שבה הסימן שמתחיל ומסיים את המחרוזת הוא '. שימוש דומה נעשה עבור \\\":
                                                                          \n", "

                                                                          " ] }, @@ -90,8 +90,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - "לפעמים גם נרצה פשוט לרשום את התו \\. לצורך כך, נשתמש פעמיים בתו הזה.
                                                                          \n", + "

                                                                          \n", + "לפעמים גם נרצה פשוט לרשום את התו \\. לצורך כך, נשתמש פעמיים בתו הזה.
                                                                          \n", "השוו את שתי המחרוזות הבאות, לדוגמה:\n", "

                                                                          " ] @@ -118,7 +118,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", + "

                                                                          \n", "נוכל גם להבריח את המחרוזת כולה באמצעות התו r לפני המחרוזת, במקרה שאנחנו לא רוצים להשתמש בתווים מיוחדים:\n", "

                                                                          " ] @@ -136,16 +136,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                          \n", - "
                                                                          \n", - " \"טיפ!\" \n", - "
                                                                          \n", - "
                                                                          \n", - "

                                                                          \n", - " פייתון, בניגוד לבני אדם, מסתכלת על תווים מיוחדים כמו \\n ו־\\t כתו אחד.
                                                                          \n", + "

                                                                          \n", + "
                                                                          \n", + "\"טיפ!\"\n", + "
                                                                          \n", + "
                                                                          \n", + "

                                                                          \n", + " פייתון, בניגוד לבני אדם, מסתכלת על תווים מיוחדים כמו \\n ו־\\t כתו אחד.
                                                                          \n", " נסו לבדוק מה ה־len שלהם כדי להיווכח בעצמכם.\n", "

                                                                          \n", - "
                                                                          \n", + "
                                                                          \n", "
                                                                          " ] }, @@ -153,16 +153,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                          \n", - "
                                                                          \n", - " \"אזהרה!\" \n", - "
                                                                          \n", - "
                                                                          \n", - "

                                                                          \n", - " פייתון לא מתמודדת טוב עם התו \\ בסוף המחרוזת.
                                                                          \n", + "

                                                                          \n", + "
                                                                          \n", + "\"אזהרה!\"\n", + "
                                                                          \n", + "
                                                                          \n", + "

                                                                          \n", + " פייתון לא מתמודדת טוב עם התו \\ בסוף המחרוזת.
                                                                          \n", " אם הגעתם למצב שבו זה קורה, פשוט הבריחו את ה־\\ עם \\ נוסף.\n", "

                                                                          \n", - "
                                                                          \n", + "
                                                                          \n", "
                                                                          " ] }, @@ -170,17 +170,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                          \n", - "
                                                                          \n", - " \"תרגול\" \n", - "
                                                                          \n", - "
                                                                          \n", - "

                                                                          \n", - " תרגול:\n", - " במשבצת שמתחתיי מצוטט חלק מהנאום המפורסם של מרטין לותר קינג, \"I Have A Dream\".
                                                                          \n", + "

                                                                          \n", + "
                                                                          \n", + "\"תרגול\"\n", + "
                                                                          \n", + "
                                                                          \n", + "

                                                                          \n", + "תרגול:\n", + " במשבצת שמתחתיי מצוטט חלק מהנאום המפורסם של מרטין לותר קינג, \"I Have A Dream\".
                                                                          \n", " הדפיסו אותו בעזרת משפט print בודד.\n", "

                                                                          \n", - "
                                                                          \n", + "
                                                                          \n", "
                                                                          " ] }, @@ -199,17 +199,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                          מחרוזת קשוחה

                                                                          " + "##

                                                                          מחרוזת קשוחה

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - "לפעמים אנחנו פשוט רוצים שפייתון תתמודד עם גוש מלל שהדבקנו.
                                                                          \n", - "לפייתון יש פתרון נהדר: היא עובדת גם אם המלל מפוצל לכמה שורות (היא תכניס תווי \\n ותפצל לשורות בעצמה), וגם במקרים בהם יש תווים כמו ' או \".
                                                                          \n", - "פתרון זה נקרא \"מחרוזת קשוחה\" (אוקיי, למען האמת, אף אחד לא קורא לה ככה חוץ ממני), וכדי להשתמש בה יש להקליד 3 פעמים את התו \" או את התו ' משני צידי המחרוזת.
                                                                          \n", + "

                                                                          \n", + "לפעמים אנחנו פשוט רוצים שפייתון תתמודד עם גוש מלל שהדבקנו.
                                                                          \n", + "לפייתון יש פתרון נהדר: היא עובדת גם אם המלל מפוצל לכמה שורות (היא תכניס תווי \\n ותפצל לשורות בעצמה), וגם במקרים בהם יש תווים כמו ' או \".
                                                                          \n", + "פתרון זה נקרא \"מחרוזת קשוחה\" (אוקיי, למען האמת, אף אחד לא קורא לה ככה חוץ ממני), וכדי להשתמש בה יש להקליד 3 פעמים את התו \" או את התו ' משני צידי המחרוזת.
                                                                          \n", "

                                                                          " ] }, @@ -217,7 +217,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", + "

                                                                          \n", "נראה דוגמה:

                                                                          " ] }, @@ -254,17 +254,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                          \n", - "
                                                                          \n", - " \"תרגול\" \n", - "
                                                                          \n", - "
                                                                          \n", - "

                                                                          \n", - " תרגול:\n", - " בשנת 1963 נשא ג'ון קנדי את נאומו \"אני ברלינאי\". הטקסט המלא שלו מופיע כאן.
                                                                          \n", + "

                                                                          \n", + "
                                                                          \n", + "\"תרגול\"\n", + "
                                                                          \n", + "
                                                                          \n", + "

                                                                          \n", + "תרגול:\n", + " בשנת 1963 נשא ג'ון קנדי את נאומו \"אני ברלינאי\". הטקסט המלא שלו מופיע כאן.
                                                                          \n", " השתמשו בפקודת print בודדת כדי להדפיס את הנאום כולו.\n", "

                                                                          \n", - "
                                                                          \n", + "
                                                                          \n", "
                                                                          " ] }, @@ -272,16 +272,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                          מחרוזות מעוצבות

                                                                          " + "##

                                                                          מחרוזות מעוצבות

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - "עד כה שרשרנו מחרוזות בזהירות בעזרת סימן השרשור +.
                                                                          \n", - "דרך נוספת לעשות זאת היא בעזרת fstring, או בשמן המלא, formatted strings.
                                                                          \n", + "

                                                                          \n", + "עד כה שרשרנו מחרוזות בזהירות בעזרת סימן השרשור +.
                                                                          \n", + "דרך נוספת לעשות זאת היא בעזרת fstring, או בשמן המלא, formatted strings.
                                                                          \n", "נראה דוגמה:\n", "

                                                                          " ] @@ -300,7 +300,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", + "

                                                                          \n", "שרשור כמו שאנחנו מכירים עד כה:\n", "

                                                                          " ] @@ -318,7 +318,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", + "

                                                                          \n", "שימוש ב־fstrings:\n", "

                                                                          " ] @@ -336,7 +336,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", + "

                                                                          \n", "כדאי לשים לב לנקודות הבאות:\n", "

                                                                          " ] @@ -345,11 +345,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                            \n", - "
                                                                          • כדי להשתמש ב־fstrings, הוספנו את התו f לפני המחרוזת.
                                                                          • \n", - "
                                                                          • כדי לציין שם של משתנה שאנחנו רוצים להדפיס, השתמשנו בסוגריים מסולסלים סביב שם המשתנה.
                                                                          • \n", - "
                                                                          • בשימוש ב־fstrings, לא היינו צריכים לבצע המרה לפני שהשתמשנו במשתנה מסוג שלם.
                                                                          • \n", - "
                                                                          • מן הסתם, ניתן להשתמש ב־fstrings גם למטרות נוספות מלבד הדפסה.
                                                                          • \n", + "
                                                                              \n", + "
                                                                            • כדי להשתמש ב־fstrings, הוספנו את התו f לפני המחרוזת.
                                                                            • \n", + "
                                                                            • כדי לציין שם של משתנה שאנחנו רוצים להדפיס, השתמשנו בסוגריים מסולסלים סביב שם המשתנה.
                                                                            • \n", + "
                                                                            • בשימוש ב־fstrings, לא היינו צריכים לבצע המרה לפני שהשתמשנו במשתנה מסוג שלם.
                                                                            • \n", + "
                                                                            • מן הסתם, ניתן להשתמש ב־fstrings גם למטרות נוספות מלבד הדפסה.
                                                                            • \n", "
                                                                            " ] }, @@ -357,25 +357,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                            פעולות על מחרוזות

                                                                            " + "##

                                                                            פעולות על מחרוזות

                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                            הגדרה

                                                                            " + "###

                                                                            הגדרה

                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                            \n", - "עד כה למדנו פונקציות שעובדות על סוגים שונים של נתונים. אנחנו קוראים להן בשמן, ואז מעבירים להן את הנתון שעליו רוצים לפעול.
                                                                            \n", - "type, לדוגמה, יודעת לעבוד על כל נתון שנעביר לה ולהחזיר לנו את הסוג שלו.
                                                                            \n", - "רעיון דומה בתכנות נקרא \"פעולה\", או method (מתודה).
                                                                            \n", - "בניגוד לפונקציות, שם הפעולה משויך לסוג הנתון שעליו אנחנו הולכים להפעיל את הפעולה.
                                                                            \n", + "

                                                                            \n", + "עד כה למדנו פונקציות שעובדות על סוגים שונים של נתונים. אנחנו קוראים להן בשמן, ואז מעבירים להן את הנתון שעליו רוצים לפעול.
                                                                            \n", + "type, לדוגמה, יודעת לעבוד על כל נתון שנעביר לה ולהחזיר לנו את הסוג שלו.
                                                                            \n", + "רעיון דומה בתכנות נקרא \"פעולה\", או method (מתודה).
                                                                            \n", + "בניגוד לפונקציות, שם הפעולה משויך לסוג הנתון שעליו אנחנו הולכים להפעיל את הפעולה.
                                                                            \n", "

                                                                            " ] }, @@ -383,9 +383,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                            \n", - "בעתיד נלמד לעומק יותר על ההבדלים בין פונקציה לפעולה, והם יישמעו לנו מופשטים פחות. עד אז אתם פטורים מלדעת את הטריוויה הזו.
                                                                            \n", - "דבר שכדאי לדעת הוא שהפעולות שנראה עכשיו עובדות רק על מחרוזות, ולא על טיפוסים אחרים.
                                                                            \n", + "

                                                                            \n", + "בעתיד נלמד לעומק יותר על ההבדלים בין פונקציה לפעולה, והם יישמעו לנו מופשטים פחות. עד אז אתם פטורים מלדעת את הטריוויה הזו.
                                                                            \n", + "דבר שכדאי לדעת הוא שהפעולות שנראה עכשיו עובדות רק על מחרוזות, ולא על טיפוסים אחרים.
                                                                            \n", "

                                                                            " ] }, @@ -393,8 +393,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                            \n", - " בשורות הבאות, נשחק עם דוגמאות של פעולות ונראה מה הן עושות בתאים שיבואו לאחר מכן.
                                                                            \n", + "

                                                                            \n", + " בשורות הבאות, נשחק עם דוגמאות של פעולות ונראה מה הן עושות בתאים שיבואו לאחר מכן.
                                                                            \n", " אם נבחין בתא שיש צורך להסביר מה קרה בו – יצורף הסבר מעל התא.\n", "

                                                                            " ] @@ -403,15 +403,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                            לנקות רעשים מסביב

                                                                            " + "###

                                                                            לנקות רעשים מסביב

                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                            \n", - " פעמים רבות, בין אם בקבלת קלט מהמשתמש ובין אם במחרוזות שקיבלנו ממקור חיצוני כלשהו, נתקל בתווים מיותרים שמקיפים את המחרוזת שלנו.
                                                                            \n", + "

                                                                            \n", + " פעמים רבות, בין אם בקבלת קלט מהמשתמש ובין אם במחרוזות שקיבלנו ממקור חיצוני כלשהו, נתקל בתווים מיותרים שמקיפים את המחרוזת שלנו.
                                                                            \n", " הפעולה strip עוזרת לנו להסיר אותם.\n", "

                                                                            " ] @@ -420,7 +420,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                            \n", + "

                                                                            \n", " בצורתה הפשוטה, כשלא מעבירים לה ארגומנטים, היא תסיר את כל הרווחים, האנטרים והטאבים שנמצאים סביב המחרוזת:\n", "

                                                                            " ] @@ -441,7 +441,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                            \n", + "

                                                                            \n", " כאשר מעבירים לה מחרוזת כארגומנט, היא תבצע את האלגוריתם הבא:\n", "

                                                                            " ] @@ -450,17 +450,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                              \n", - "
                                                                            1. עבור על כל תו מתחילת המחרוזת:\n", + "
                                                                                \n", + "
                                                                              1. עבור על כל תו מתחילת המחרוזת:\n", "
                                                                                  \n", - "
                                                                                • כל עוד התו נמצא בארגומנט – מחק אותו והמשך
                                                                                • \n", - "
                                                                                \n", - "
                                                                              2. \n", - "
                                                                              3. עבור על כל תו מסוף המחרוזת:\n", + "
                                                                              4. כל עוד התו נמצא בארגומנט – מחק אותו והמשך
                                                                              5. \n", + "
                                                                          \n", + "\n", + "
                                                                        15. עבור על כל תו מסוף המחרוזת:\n", "
                                                                            \n", - "
                                                                          • כל עוד התו נמצא בארגומנט – מחק אותו והמשך
                                                                          • \n", - "
                                                                          \n", - "
                                                                        16. \n", + "
                                                                        17. כל עוד התו נמצא בארגומנט – מחק אותו והמשך
                                                                        18. \n", + "
                                                        \n", + "\n", "
                                                    " ] }, @@ -478,7 +478,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    מְצִיאוֹת וּמְצִיאוֹת

                                                    " + "###

                                                    מְצִיאוֹת וּמְצִיאוֹת

                                                    " ] }, { @@ -494,8 +494,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - " נמצא את המקומות שבהם נמצאות המילים המוזרות.
                                                    \n", + "

                                                    \n", + " נמצא את המקומות שבהם נמצאות המילים המוזרות.
                                                    \n", " הפעולות find ו־index יחזירו לנו את המיקום (האינדקס) של תת־מחרוזת בתוך מחרוזת אחרת:\n", "

                                                    " ] @@ -531,8 +531,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "אז רגע, למה צריך 2 מתודות אם הן עושות אותו דבר?
                                                    \n", + "

                                                    \n", + "אז רגע, למה צריך 2 מתודות אם הן עושות אותו דבר?
                                                    \n", " אם המחרוזת לא נמצאה, find תחזיר לנו -1, בעוד ש־index תחזיר לנו שגיאה. \n", "

                                                    " ] @@ -559,15 +559,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                    \n", - "
                                                    \n", - " \"אזהרה!\" \n", - "
                                                    \n", - "
                                                    \n", - "

                                                    \n", + "

                                                    \n", + "
                                                    \n", + "\"אזהרה!\"\n", + "
                                                    \n", + "
                                                    \n", + "

                                                    \n", " הפעולות הללו יחזירו רק את התוצאה הראשונה.\n", "

                                                    \n", - "
                                                    \n", + "
                                                    \n", "
                                                    " ] }, @@ -575,16 +575,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                    \n", - "
                                                    \n", - " \"אזהרה!\" \n", - "
                                                    \n", - "
                                                    \n", - "

                                                    \n", - " אינטואיטיבית, נראה שנכון תמיד להשתמש בפעולה find, אך אליה וקוץ בה.
                                                    \n", + "

                                                    \n", + "
                                                    \n", + "\"אזהרה!\"\n", + "
                                                    \n", + "
                                                    \n", + "

                                                    \n", + " אינטואיטיבית, נראה שנכון תמיד להשתמש בפעולה find, אך אליה וקוץ בה.
                                                    \n", " כשאנחנו בטוחים שאמורה לחזור תוצאה, עדיף להשתמש ב־index כדי לדעת מאיפה מגיעה השגיאה בתוכנית שלנו ולטפל בה במהירות.\n", "

                                                    \n", - "
                                                    \n", + "
                                                    \n", "
                                                    " ] }, @@ -592,19 +592,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                    \n", - "
                                                    \n", - " \"תרגול\" \n", - "
                                                    \n", - "
                                                    \n", - "

                                                    \n", - " תרגול:\n", - " קבלו מהמשתמש שתי מחרוזות.
                                                    \n", - " אם המחרוזת השנייה נמצאת לפני אמצע המחרוזת הראשונה, הדפיסו \"Yes!\"
                                                    \n", - " אם המחרוזת השנייה לא נמצאת לפני אמצע המחרוזת הראשונה, הדפיסו \"No!\"
                                                    \n", + "

                                                    \n", + "
                                                    \n", + "\"תרגול\"\n", + "
                                                    \n", + "
                                                    \n", + "

                                                    \n", + "תרגול:\n", + " קבלו מהמשתמש שתי מחרוזות.
                                                    \n", + " אם המחרוזת השנייה נמצאת לפני אמצע המחרוזת הראשונה, הדפיסו \"Yes!\"
                                                    \n", + " אם המחרוזת השנייה לא נמצאת לפני אמצע המחרוזת הראשונה, הדפיסו \"No!\"
                                                    \n", " בונוס לגיבורים ולגיבורות: נסו להשתמש בשתי הפעולות, index ו־find.\n", "

                                                    \n", - "
                                                    \n", + "
                                                    \n", "
                                                    " ] }, @@ -612,7 +612,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    משחקים עם גודלי אותיות

                                                    " + "###

                                                    משחקים עם גודלי אותיות

                                                    " ] }, { @@ -673,8 +673,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "חשוב לזכור שהפעולות לא משנות את המשתנה.
                                                    \n", + "

                                                    \n", + "חשוב לזכור שהפעולות לא משנות את המשתנה.
                                                    \n", "אם רוצים לשנות אותו, יש להשתמש בהשמה.\n", "

                                                    " ] @@ -692,15 +692,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    סופרים סתם

                                                    " + "###

                                                    סופרים סתם

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "אם נרצה לבדוק כמה פעמים תת־מחרוזת נמצאת בתוך המחרוזת שלנו, נשתמש בפעולה count.
                                                    \n", + "

                                                    \n", + "אם נרצה לבדוק כמה פעמים תת־מחרוזת נמצאת בתוך המחרוזת שלנו, נשתמש בפעולה count.
                                                    \n", "ננסה להבין כמה פעמים מילים מעניינות הופיעו בנאום גטיסברג המפורסם:\n", "

                                                    " ] @@ -722,8 +722,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "ראשית, נעשה טריק מוכר. נשתמש בפעולה lower כדי להעיף את האותיות הגדולות.
                                                    \n", + "

                                                    \n", + "ראשית, נעשה טריק מוכר. נשתמש בפעולה lower כדי להעיף את האותיות הגדולות.
                                                    \n", "בצורה הזו, count תספור לנו גם את המילים שנכתבו באותיות רישיות:\n", "

                                                    " ] @@ -741,7 +741,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", + "

                                                    \n", "עכשיו נבדוק כמה פעמים השתמש לינקולן בכל אחת מהמילים: we, nation ו־dedicated.

                                                    " ] }, @@ -776,15 +776,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    החלפה

                                                    " + "###

                                                    החלפה

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "פעולה מאוד נפוצה היא replace, שעוזרת לנו להחליף את כל המופעים של תת־מחרוזת אחת באחרת.
                                                    \n", + "

                                                    \n", + "פעולה מאוד נפוצה היא replace, שעוזרת לנו להחליף את כל המופעים של תת־מחרוזת אחת באחרת.
                                                    \n", "לדוגמה, ניקח את הברידג' השני בשיר הנפלא של הביטלס, Hey Jude, ונחליף את כל המופעים של Jude ב־Dude: \n", "

                                                    " ] @@ -815,7 +815,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", + "

                                                    \n", "שימו לב לתווים המוזרים באמצע. אלו ירידות השורה שעליהן למדנו בשיעור. אל דאגה – הן לא יופיעו כשנדפיס את המחרוזת.\n", "

                                                    " ] @@ -833,7 +833,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", + "

                                                    \n", "רק נזכיר שהפעולה לא משנה את המחרוזת עצמה, וכדי לשנות אותה נצטרך לבצע השמה.\n", "

                                                    " ] @@ -866,15 +866,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    הפרד ומשול

                                                    " + "###

                                                    הפרד ומשול

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "לעיתים קרובות נרצה להפריד את הטקסט שלנו לחלקים.
                                                    \n", + "

                                                    \n", + "לעיתים קרובות נרצה להפריד את הטקסט שלנו לחלקים.
                                                    \n", "הפעולה split מאפשרת לנו לעשות את זה, ולקבל רשימה של האיברים המופרדים:\n", "

                                                    " ] @@ -901,8 +901,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "בסוגריים כתבנו מה אנחנו רוצים שיהיה התו, או סדרת התווים, שתהיה אחראית להפרדה בין האיברים.
                                                    \n", + "

                                                    \n", + "בסוגריים כתבנו מה אנחנו רוצים שיהיה התו, או סדרת התווים, שתהיה אחראית להפרדה בין האיברים.
                                                    \n", "שימו לב שקיבלנו רשימה לכל דבר:\n", "

                                                    " ] @@ -929,8 +929,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "דרך נוספת להשתמש ב־split היא לא להעביר לה כלום ברשימת הארגומנטים.
                                                    \n", + "

                                                    \n", + "דרך נוספת להשתמש ב־split היא לא להעביר לה כלום ברשימת הארגומנטים.
                                                    \n", "במקרה כזה, split תפצל לנו את המחרוזת לפי רווחים, שורות חדשות וטאבים.\n", "

                                                    " ] @@ -961,8 +961,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "הפעולה הזו שימושית בטירוף ונראה אותה עוד הרבה.
                                                    \n", + "

                                                    \n", + "הפעולה הזו שימושית בטירוף ונראה אותה עוד הרבה.
                                                    \n", "היא מאפשרת לנו לקבל מידע רב על כמות גדולה של מלל.\n", "

                                                    " ] @@ -971,16 +971,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    חבר ומשול

                                                    " + "###

                                                    חבר ומשול

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "לפעמים אנחנו רוצים לעשות את הפעולה ההפוכה מפיצול – איחוד!
                                                    \n", - "הפעולה join מקבלת כארגומנט רשימה, ופועלת על המחרוזת שתחבר בין איבר לאיבר.
                                                    \n", + "

                                                    \n", + "לפעמים אנחנו רוצים לעשות את הפעולה ההפוכה מפיצול – איחוד!
                                                    \n", + "הפעולה join מקבלת כארגומנט רשימה, ופועלת על המחרוזת שתחבר בין איבר לאיבר.
                                                    \n", "נראה דוגמה: \n", "

                                                    " ] @@ -1000,7 +1000,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", + "

                                                    \n", "ואם אנחנו כבר שם, קצת כבוד לספר הישראלי, הכבש השישה־עשר:\n", "

                                                    " ] @@ -1021,14 +1021,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    אני, בוליאני

                                                    " + "###

                                                    אני, בוליאני

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", + "

                                                    \n", "אחד הטריקים השימושיים הוא לבדוק אם המחרוזת שלנו מתחילה או מסתיימת בתת־מחרוזת אחרת.\n", "

                                                    " ] @@ -1087,18 +1087,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                    \n", - "
                                                    \n", - " \"תרגול\" \n", - "
                                                    \n", - "
                                                    \n", - "

                                                    \n", - " תרגול:\n", - " קבלו מהמשתמש נתיב לקובץ מסוים שנמצא על המחשב שלו, ובדקו האם הסיומת שלו היא .docx
                                                    \n", - " הדפיסו לו הודעה מתאימה.
                                                    \n", + "

                                                    \n", + "
                                                    \n", + "\"תרגול\"\n", + "
                                                    \n", + "
                                                    \n", + "

                                                    \n", + "תרגול:\n", + " קבלו מהמשתמש נתיב לקובץ מסוים שנמצא על המחשב שלו, ובדקו האם הסיומת שלו היא .docx
                                                    \n", + " הדפיסו לו הודעה מתאימה.
                                                    \n", " דוגמה לנתיב תקין: C:\\My Documents\\Resume.docx.\n", "

                                                    \n", - "
                                                    \n", + "
                                                    \n", "
                                                    " ] }, @@ -1106,15 +1106,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                    \n", - "
                                                    \n", - " \"אזהרה!\" \n", - "
                                                    \n", - "
                                                    \n", - "

                                                    \n", + "

                                                    \n", + "
                                                    \n", + "\"אזהרה!\"\n", + "
                                                    \n", + "
                                                    \n", + "

                                                    \n", " יש נטייה לשכוח את ה־s אחרי ה־end או את ה־start ב־endswith וב־startswith.\n", "

                                                    \n", - "
                                                    \n", + "
                                                    \n", "
                                                    " ] }, @@ -1122,7 +1122,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", + "

                                                    \n", "נוכל גם לבדוק אם המחרוזת שלנו היא מסוג מסוים:\n", "

                                                    " ] @@ -1179,22 +1179,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                    תרגול

                                                    " + "##

                                                    תרגול

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    נאום גטיסברג

                                                    " + "###

                                                    נאום גטיסברג

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "השתמשו בטקסט של נאום גטיסברג ובדקו כמה מילים יש בו.
                                                    \n", + "

                                                    \n", + "השתמשו בטקסט של נאום גטיסברג ובדקו כמה מילים יש בו.
                                                    \n", "בדקו כמה פעמים הופיעו המילים we, here, great, nation ו־dedicated, וחשבו מה שיעורן באחוזים בטקסט כולו. \n", "

                                                    " ] @@ -1216,7 +1216,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", + "

                                                    \n", "כדי לחשב את שיעורן באחוזים: סִכְמוּ את מספר הפעמים שכל מילה מופיעה בטקסט. הכפילו מספר זה במאה וחלקו בסך המילים בטקסט.\n", "

                                                    " ] @@ -1225,16 +1225,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                    חצי חיים

                                                    " + "###

                                                    חצי חיים

                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                    \n", - "קבלו מהמשתמש מילה מסוימת ומשפט.
                                                    \n", - "בדקו שתחילת המילה מופיעה לפני החצי של המשפט.
                                                    \n", + "

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

                                                    " ] @@ -1243,10 +1243,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                      \n", - "
                                                    • המילה Love במשפט I Love Chocolate תחזיר True, כיוון שהמילה Love מתחילה במקום 2, ואורך חצי המשפט הוא 8.
                                                    • \n", - "
                                                    • המילה salad במשפט This is the best salad in town תחזיר False, כיוון שהמילה salad מתחילה במקום 17, ואורך חצי המשפט הוא 15.
                                                    • \n", - "
                                                    • המילה Meow במשפט \"All you need is Love\" תחזיר False, כיוון שהמילה Meow לא נמצאת בשירים של הביטלס (וחבל שכך).
                                                    • \n", + "
                                                        \n", + "
                                                      • המילה Love במשפט I Love Chocolate תחזיר True, כיוון שהמילה Love מתחילה במקום 2, ואורך חצי המשפט הוא 8.
                                                      • \n", + "
                                                      • המילה salad במשפט This is the best salad in town תחזיר False, כיוון שהמילה salad מתחילה במקום 17, ואורך חצי המשפט הוא 15.
                                                      • \n", + "
                                                      • המילה Meow במשפט \"All you need is Love\" תחזיר False, כיוון שהמילה Meow לא נמצאת בשירים של הביטלס (וחבל שכך).
                                                      • \n", "
                                                      " ] }, @@ -1254,15 +1254,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                      שיחדש

                                                      " + "###

                                                      שיחדש

                                                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                      \n", - "בספר המרתק של ג'ורג' אורוול, 1984, הסלוגן של מפלגת השלטון הוא מלחמה היא שלום, חירות היא עבדות, בורות היא כוח.
                                                      \n", + "

                                                      \n", + "בספר המרתק של ג'ורג' אורוול, 1984, הסלוגן של מפלגת השלטון הוא מלחמה היא שלום, חירות היא עבדות, בורות היא כוח.
                                                      \n", "קבלו טקסט מהמשתמש, והחליפו את המילים לפי המילון הבא:\n", "

                                                      " ] @@ -1271,10 +1271,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                        \n", - "
                                                      • war תוחלף ל־peace
                                                      • \n", - "
                                                      • freedom תוחלף ל־slavery
                                                      • \n", - "
                                                      • ignorance תוחלף ל־strength
                                                      • \n", + "
                                                          \n", + "
                                                        • war תוחלף ל־peace
                                                        • \n", + "
                                                        • freedom תוחלף ל־slavery
                                                        • \n", + "
                                                        • ignorance תוחלף ל־strength
                                                        • \n", "
                                                        " ] }, @@ -1282,7 +1282,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", + "

                                                        \n", "לצורך התרגיל, הניחו שהקלט שהזין המשתמש הוא באותיות קטנות בלבד.\n", "

                                                        " ] diff --git a/week2/6_Documentation.ipynb b/week2/6_Documentation.ipynb index b1c1cfb..7b9c629 100644 --- a/week2/6_Documentation.ipynb +++ b/week2/6_Documentation.ipynb @@ -4,29 +4,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                                        תיעוד

                                                        " + "#

                                                        תיעוד

                                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                        הגדרה

                                                        " + "##

                                                        הגדרה

                                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "בעולם התכנות, בניגוד לשיעורי היסטוריה בתיכון, אנחנו שמים דגש על היכולות השונות של המתכנת ופחות על הזיכרון שלו בנוגע לפרטים קטנים.
                                                        \n", + "

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

                                                        " ] @@ -35,10 +35,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                        " ] @@ -47,16 +47,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                        תיעוד בפייתון

                                                        " + "##

                                                        תיעוד בפייתון

                                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                        \n", + "לפייתון יש אתר תיעוד מרשים ומלא במידע. רוב המידע המתועד באתר כתוב בצורה טובה ונהירה.
                                                        \n", + "באתר ישנה תיבת חיפוש, ואפילו מדריך כניסה עבור מתחילים, שמתבסס על ידע מסוים בתכנות.
                                                        \n", "רוב מתכנתי הפייתון משתמשים באתר התיעוד הזה כמדריך עזר, ופונים אליו כשהם צריכים פרטים נוספים בקשר לרעיון שכבר קיים אצלם בראש.\n", "

                                                        " ] @@ -65,16 +65,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                        רשימת פעולות

                                                        " + "###

                                                        רשימת פעולות

                                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "בשיעור הקודם למדנו שלכל סוג נתונים (כמו str או int) יש פעולות ששייכות לו.
                                                        \n", - "עבור מחרוזות, לדוגמה, אנחנו מכירים פעולות כמו str.count ו־str.replace.
                                                        \n", + "

                                                        \n", + "בשיעור הקודם למדנו שלכל סוג נתונים (כמו str או int) יש פעולות ששייכות לו.
                                                        \n", + "עבור מחרוזות, לדוגמה, אנחנו מכירים פעולות כמו str.count ו־str.replace.
                                                        \n", "כדי לקבל את רשימת הפעולות עבור סוג נתונים מסוים נשתמש בפונקציה dir():\n", "

                                                        " ] @@ -92,8 +92,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "התוצאה היא רשימה של כל הפעולות שאפשר להפעיל על str.
                                                        \n", + "

                                                        \n", + "התוצאה היא רשימה של כל הפעולות שאפשר להפעיל על str.
                                                        \n", "בשלב הזה, אמליץ לכם להתעלם מפעולות ברשימה ששמן מתחיל בקו תחתון.\n", "

                                                        " ] @@ -102,8 +102,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "טריק נוסף שכנראה נוח יותר, זמין בסביבות פיתוח רבות שיצא לכם לעבוד בהן.
                                                        \n", + "

                                                        \n", + "טריק נוסף שכנראה נוח יותר, זמין בסביבות פיתוח רבות שיצא לכם לעבוד בהן.
                                                        \n", "הטריק הוא ציון סוג הנתון או המשתנה שאתם עובדים עליו, הסימן \"נקודה\" ואז לחיצה על ↹ TAB.\n", "

                                                        " ] @@ -127,15 +127,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תיעוד על פעולה או על פונקציה" + "### תיעוד על פעולה או על פונקציה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "במקרה שנרצה לחפש פרטים נוספים על אחת הפונקציות או הפעולות (נניח len, או str.upper()), התיעוד של פייתון הוא מקור מידע נהדר לכך.
                                                        \n", + "

                                                        \n", + "במקרה שנרצה לחפש פרטים נוספים על אחת הפונקציות או הפעולות (נניח len, או str.upper()), התיעוד של פייתון הוא מקור מידע נהדר לכך.
                                                        \n", "אם אנחנו נמצאים בתוך המחברת, יש טריק נחמד לקבל חלק מהתיעוד הזה בצורה מהירה – פשוט נרשום בתא קוד את שם הפונקציה, ואחריו סימן שאלה:\n", "

                                                        " ] @@ -153,8 +153,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", - "ברגע שנריץ את התא, תקפוץ לנו חלונית עם מידע נוסף על הפונקציה.
                                                        \n", + "

                                                        \n", + "ברגע שנריץ את התא, תקפוץ לנו חלונית עם מידע נוסף על הפונקציה.
                                                        \n", "אם אנחנו רוצים לקבל מידע על פעולה, נכתוב את סוג הערך שעליו אנחנו רוצים לבצע אותה (נניח, str):\n", "

                                                        " ] @@ -176,15 +176,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                        \n", - "
                                                        \n", - " \"אזהרה!\" \n", - "
                                                        \n", - "
                                                        \n", - "

                                                        \n", + "

                                                        \n", + "
                                                        \n", + "\"אזהרה!\"\n", + "
                                                        \n", + "
                                                        \n", + "

                                                        \n", " קריאה לפונקציה, קרי הוספת התווים () לפני סימן השאלה, תפעיל את הפונקציה או הפעולה במקום לתת לכם עזרה.\n", "

                                                        \n", - "
                                                        \n", + "
                                                        \n", "
                                                        " ] }, @@ -192,14 +192,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                        \n", + "

                                                        \n", "בתוך חלונית העזרה שתיפתח במחברת נראה שורות המכילות פרטים מעניינים:\n", "

                                                        \n", - "
                                                          \n", - "
                                                        • Signature – חתימת הפעולה או הפונקציה, הכוללת את השם שלה ואת הפרמטרים שלה.
                                                        • \n", - "
                                                        • Docstring – כמה מילים שמתארות היטב מה הפונקציה עושה, ולעיתים נותנות מידע נוסף על הפרמטרים.
                                                        • \n", + "
                                                            \n", + "
                                                          • Signature – חתימת הפעולה או הפונקציה, הכוללת את השם שלה ואת הפרמטרים שלה.
                                                          • \n", + "
                                                          • Docstring – כמה מילים שמתארות היטב מה הפונקציה עושה, ולעיתים נותנות מידע נוסף על הפרמטרים.
                                                          • \n", "
                                                          \n", - "

                                                          \n", + "

                                                          \n", "לעת עתה, נתעלם מהרכיבים self, * או / שיופיעו מדי פעם בשדה Signature.\n", "

                                                          " ] @@ -208,22 +208,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                          משאבי עזרה נוספים

                                                          " + "##

                                                          משאבי עזרה נוספים

                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                          \n", - "עולם התכנות הוא אדיר בממדיו, וקיימים משאבים נהדרים שמטרתם לעזור למתכנת.
                                                          \n", + "

                                                          \n", + "עולם התכנות הוא אדיר בממדיו, וקיימים משאבים נהדרים שמטרתם לעזור למתכנת.
                                                          \n", "לפניכם כמה מהפופולריים שבהם:\n", "

                                                          \n", - "
                                                            \n", - "
                                                          • Google – חפשו היטב את השאלה שלכם ב־Google. מתכנת טוב עושה את זה פעמים רבות ביום. קרוב לוודאי שמישהו בעולם כבר נתקל בעבר בבעיה שלכם.
                                                          • \n", - "
                                                          • התיעוד של פייתון – כולל הרבה מידע, ולעיתים דוגמאות מועילות.
                                                          • \n", - "
                                                          • Stack Overflow – אחד האתרים הכי מוכרים בעולם הפיתוח, המכיל מערכת שאלות ותשובות עם דירוג בנוגע לכל מה שקשור בתכנות.
                                                          • \n", - "
                                                          • GitHub – אתר שבו אנשים מנהלים את הקוד שלהם ומשתפים אותו עם אחרים. יש בו שורת חיפוש, והוא מעולה לצורך מציאת דוגמאות לשימוש בקוד.
                                                          • \n", + "
                                                              \n", + "
                                                            • Google – חפשו היטב את השאלה שלכם ב־Google. מתכנת טוב עושה את זה פעמים רבות ביום. קרוב לוודאי שמישהו בעולם כבר נתקל בעבר בבעיה שלכם.
                                                            • \n", + "
                                                            • התיעוד של פייתון – כולל הרבה מידע, ולעיתים דוגמאות מועילות.
                                                            • \n", + "
                                                            • Stack Overflow – אחד האתרים הכי מוכרים בעולם הפיתוח, המכיל מערכת שאלות ותשובות עם דירוג בנוגע לכל מה שקשור בתכנות.
                                                            • \n", + "
                                                            • GitHub – אתר שבו אנשים מנהלים את הקוד שלהם ומשתפים אותו עם אחרים. יש בו שורת חיפוש, והוא מעולה לצורך מציאת דוגמאות לשימוש בקוד.
                                                            • \n", "
                                                            " ] }, @@ -231,14 +231,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                            תרגול

                                                            " + "##

                                                            תרגול

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", + "

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

                                                            " ] @@ -247,16 +247,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            סידור רשימה

                                                            " + "###

                                                            סידור רשימה

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - "לפניכם רשימת המספרים הטבעיים מ־1 עד 10 בסדר מבולבל.
                                                            \n", - "האם תוכלו לסדר אותה בשורה אחת של קוד, ולהדפיס אותה בשורה אחת נוספת?
                                                            \n", + "

                                                            \n", + "לפניכם רשימת המספרים הטבעיים מ־1 עד 10 בסדר מבולבל.
                                                            \n", + "האם תוכלו לסדר אותה בשורה אחת של קוד, ולהדפיס אותה בשורה אחת נוספת?
                                                            \n", "הפלט שיודפס על המסך צריך להיות: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].\n", "

                                                            " ] @@ -274,31 +274,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                            הספרייה של דיואי

                                                            " + "###

                                                            הספרייה של דיואי

                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                            \n", - " שיטת דיואי משמשת לחלוקת ספרים לתחומי תוכן.
                                                            \n", - " כך, קטגוריה 000 המכילה ספרות כללית הנוגעת למדעי המחשב, מידע ועבודות כלליות, 500 היא ספרות הנוגעת למדע טהור ו־700 היא ספרות הנוגעת לאומנות.
                                                            \n", - " בתוך כל קטגוריה יש תתי־קטגוריות נוספות, כמו 004 שמתעסקת בעיבוד מידע, 005 שמתעסקת בתכנות, או 755 שמתעסקת באומנות בדת.
                                                            \n", - " קבלו מהמשתמש שם ספר, ואת הקטגוריה שאליה הוא משתייך.
                                                            \n", - " אם משתמש הקליד מספר שאינו בעל 3 ספרות, כמו \"4\", הניחו שהמשתמש התכוון להקליד 004 והשלימו עבורו את המלאכה.
                                                            \n", + "

                                                            \n", + "שיטת דיואי משמשת לחלוקת ספרים לתחומי תוכן.
                                                            \n", + " כך, קטגוריה 000 המכילה ספרות כללית הנוגעת למדעי המחשב, מידע ועבודות כלליות, 500 היא ספרות הנוגעת למדע טהור ו־700 היא ספרות הנוגעת לאומנות.
                                                            \n", + " בתוך כל קטגוריה יש תתי־קטגוריות נוספות, כמו 004 שמתעסקת בעיבוד מידע, 005 שמתעסקת בתכנות, או 755 שמתעסקת באומנות בדת.
                                                            \n", + " קבלו מהמשתמש שם ספר, ואת הקטגוריה שאליה הוא משתייך.
                                                            \n", + " אם משתמש הקליד מספר שאינו בעל 3 ספרות, כמו \"4\", הניחו שהמשתמש התכוון להקליד 004 והשלימו עבורו את המלאכה.
                                                            \n", " הדפיסו למשתמש את מספר הקטגוריה אחרי התיקון, או \"קטגוריה שגויה\" אם הקלט שהוזן לא היה מספרי.\n", "

                                                            \n", - "

                                                            \n", + "

                                                            \n", "לדוגמה:\n", "

                                                            \n", - "
                                                              \n", - "
                                                            • אם משתמש הקליד 5, הדפיסו לו 005.
                                                            • \n", - "
                                                            • אם משתמש הקליד 007, הדפיסו לו 007.
                                                            • \n", - "
                                                            • אם משתמש הקליד 70, הדפיסו לו 070.
                                                            • \n", - "
                                                            • אם משתמש הקליד 700, הדפיסו לו 700.
                                                            • \n", - "
                                                            • אם משתמש הקליד -1, הדפיסו לו \"Wrong Category\".
                                                            • \n", - "
                                                            • אם משתמש הקליד Art, הדפיסו לו \"Wrong Category\".
                                                            • \n", + "
                                                                \n", + "
                                                              • אם משתמש הקליד 5, הדפיסו לו 005.
                                                              • \n", + "
                                                              • אם משתמש הקליד 007, הדפיסו לו 007.
                                                              • \n", + "
                                                              • אם משתמש הקליד 70, הדפיסו לו 070.
                                                              • \n", + "
                                                              • אם משתמש הקליד 700, הדפיסו לו 700.
                                                              • \n", + "
                                                              • אם משתמש הקליד -1, הדפיסו לו \"Wrong Category\".
                                                              • \n", + "
                                                              • אם משתמש הקליד Art, הדפיסו לו \"Wrong Category\".
                                                              • \n", "
                                                              \n" ] }, diff --git a/week2/7_Summary.ipynb b/week2/7_Summary.ipynb index 49e393c..39650f2 100644 --- a/week2/7_Summary.ipynb +++ b/week2/7_Summary.ipynb @@ -4,39 +4,38 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                                              תרגילים

                                                              " + "#

                                                              תרגילים

                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                              מערכת בנק

                                                              " + "##

                                                              מערכת בנק

                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                              • שם המשתמש באותיות קטנות ומייד אחריו שם המשתמש באותיות גדולות.\n", + "

                                                                \n", + "בתרגיל הזה נכתוב מערכת מעט חכמה יותר לבנק.
                                                                \n", + " נבנה אותה בשלבים באמצעות חלוקה לפונקציות.
                                                                \n", + "בשלב הראשון נבנה פונקציה למחולל סיסמאות, שמקבלת שם משתמש ומחזירה סיסמה.
                                                                \n", + "הסיסמה תורכב כך עבור שם משתמש נתון:
                                                                \n", + "

                                                                • שם המשתמש באותיות קטנות ומייד אחריו שם המשתמש באותיות גדולות.\n", "
                                                                • הוספת האות \"X\" מימין לשם המשתמש, כמספר התווים בשם המשתמש.
                                                                \n", "

                                                                \n", - "

                                                                שימו לב כי שם המשתמש יכול לכלול ספרות וסימנים, נוסף על אותיות.
                                                                \n", - " כמו כן, לא נאפשר שם משתמש שהוא מחרוזת ריקה. במקרה זה החזירו מחרוזת ריקה.
                                                                \n", - "
                                                                לדוגמה, עבור שם המשתמש 'stam' המחולל יחזיר את הסיסמה: 'stamSTAMXXXX'
                                                                הריצו את הפונקציה על 4 דוגמאות נוספות לפחות, באורכים שונים, ובדקו שקיבלתם פלט כמצופה.

                                                                " + "

                                                                שימו לב כי שם המשתמש יכול לכלול ספרות וסימנים, נוסף על אותיות.
                                                                \n", + " כמו כן, לא נאפשר שם משתמש שהוא מחרוזת ריקה. במקרה זה החזירו מחרוזת ריקה.
                                                                \n", + "
                                                                לדוגמה, עבור שם המשתמש 'stam' המחולל יחזיר את הסיסמה: 'stamSTAMXXXX'
                                                                הריצו את הפונקציה על 4 דוגמאות נוספות לפחות, באורכים שונים, ובדקו שקיבלתם פלט כמצופה.

                                                                " ] }, { @@ -52,15 +51,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                הריצו את הפונקציה כך: password_generator('stam')" + "

                                                                הריצו את הפונקציה כך: password_generator('stam')

                                                                " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                \n", - "login('stam', 'stamSTAMXXXX')
                                                                Welcome stam!

                                                                login('stam', 'mats')
                                                                Wrong Password!" + "

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

                                                                \n", + "login('stam', 'stamSTAMXXXX')
                                                                Welcome stam!

                                                                login('stam', 'mats')
                                                                Wrong Password!" ] }, { @@ -76,9 +75,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                כתבו פונקציה שמחזירה True\n", - " אם בוצע חיבור מוצלח, אחרת החזירו False.
                                                                \n", - "פונקציה זו דומה מאוד לפונקציה הקודמת שכתבתם, רק שהיא אינה מדפיסה דבר.
                                                                במקום ההדפסה יוחזר ערך בוליאני מתאים.
                                                                לדוגמה:


                                                                login('stam', 'stamSTAMXXXX')
                                                                True
                                                                login('stam', 'mats')
                                                                False
                                                                " + "

                                                                כתבו פונקציה שמחזירה True\n", + " אם בוצע חיבור מוצלח, אחרת החזירו False.
                                                                \n", + "פונקציה זו דומה מאוד לפונקציה הקודמת שכתבתם, רק שהיא אינה מדפיסה דבר.
                                                                במקום ההדפסה יוחזר ערך בוליאני מתאים.
                                                                לדוגמה:


                                                                login('stam', 'stamSTAMXXXX')
                                                                True
                                                                login('stam', 'mats')
                                                                False
                                                                " ] }, { @@ -94,8 +93,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                \n", - " כעת ענו על השאלה הקודמת באמצעות הפונקציה שכתבתם בסעיף זה, כלומר כתבו פונקציה שמשתמשת בפונקציה המחזירה ערך בוליאני ומדפיסה בהתאם להוראת מהסעיף הקודם.
                                                                רמז: השתמשו בערך ההחזרה של הפונקציה מהסעיף הקודם, בתוך if.

                                                                \n" + "

                                                                \n", + " כעת ענו על השאלה הקודמת באמצעות הפונקציה שכתבתם בסעיף זה, כלומר כתבו פונקציה שמשתמשת בפונקציה המחזירה ערך בוליאני ומדפיסה בהתאם להוראת מהסעיף הקודם.
                                                                רמז: השתמשו בערך ההחזרה של הפונקציה מהסעיף הקודם, בתוך if.

                                                                \n" ] }, { @@ -111,19 +110,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                כעת נרחיב את מערכת הבנק שלנו.
                                                                \n", - " נניח כי לכל לקוח יש בחשבון הבנק 500 ש\"ח.
                                                                \n", - " באמצעות הפוקנציות הקודמות שכתבנו נממש את התוכנית הבאה:
                                                                \n", - "

                                                                  \n", - "
                                                                • נבקש מהמשתמש שם משתמש וסיסמה.
                                                                • \n", - "
                                                                • נאמת את שם המשתמש והסיסמה בעזרת מחולל הסיסמאות. אם האימות הצליח נדפיס: \n", - " ?Login succeeded. How much you'd like to withdraw
                                                                  \n", + "

                                                                  כעת נרחיב את מערכת הבנק שלנו.
                                                                  \n", + " נניח כי לכל לקוח יש בחשבון הבנק 500 ש\"ח.
                                                                  \n", + " באמצעות הפוקנציות הקודמות שכתבנו נממש את התוכנית הבאה:
                                                                  \n", + "

                                                                    \n", + "
                                                                  • נבקש מהמשתמש שם משתמש וסיסמה.
                                                                  • \n", + "
                                                                  • נאמת את שם המשתמש והסיסמה בעזרת מחולל הסיסמאות. אם האימות הצליח נדפיס: \n", + " ?Login succeeded. How much you'd like to withdraw
                                                                    \n", " אחרת נדפיס: .Login failed
                                                                  • \n", - "
                                                                  • כיון שלמשתמש יש 500 ש\"ח בחשבון, עלינו לוודא שסכום המשיכה אינו גבוה מ־500 ש\"ח. אם הסכום אכן גבוה מ־500 ש\"ח נדפיס: \n", + "
                                                                  • כיון שלמשתמש יש 500 ש\"ח בחשבון, עלינו לוודא שסכום המשיכה אינו גבוה מ־500 ש\"ח. אם הסכום אכן גבוה מ־500 ש\"ח נדפיס: \n", " .Withdrawal denied
                                                                  • \n", - "
                                                                  • כמו כן, עלינו לוודא כי הסכום אינו שלילי או 0. במקרה זה נדפיס: \n", + "
                                                                  • כמו כן, עלינו לוודא כי הסכום אינו שלילי או 0. במקרה זה נדפיס: \n", " .Invalid amount
                                                                  • \n", - "
                                                                  • אם הסכום חוקי, נדפיס: \n", + "
                                                                  • אם הסכום חוקי, נדפיס: \n", " .(Please take your money (amount asked). Your balance is: (amount left in balance
                                                                  • \n", "
                                                                  \n", "

                                                                  " @@ -133,25 +132,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  ציירו תחילה על דף תרשים זרימה של הקוד – תרשים מעויינים ללא קוד.\n", - "זה יעזור לכם במימוש.ציירו תחילה על דף תרשים זרימה של הקוד – תרשים מעויינים ללא קוד.\n", + "זה יעזור לכם במימוש.</p

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                  דוגמאות:

                                                                  " + "###

                                                                  דוגמאות:

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", - " Insert username: stam
                                                                  \n", - " Insert password: stamSTAMXXXX
                                                                  \n", - " Login succeeded. How much you'd like to withdraw? 200
                                                                  \n", + "

                                                                  \n", + " Insert username: stam
                                                                  \n", + " Insert password: stamSTAMXXXX
                                                                  \n", + " Login succeeded. How much you'd like to withdraw? 200
                                                                  \n", " Please take your money (200NIS). Your balance is: 300NIS.\n", "

                                                                  " ] @@ -160,12 +159,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", " דוגמה לסיסמה שגויה:\n", "

                                                                  \n", - "

                                                                  \n", - " Insert username: stam
                                                                  \n", - " Insert password: mats
                                                                  \n", + "

                                                                  \n", + " Insert username: stam
                                                                  \n", + " Insert password: mats
                                                                  \n", " Login failed.\n", "

                                                                  " ] @@ -174,14 +173,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  \n", + "

                                                                  \n", " דוגמה למשיכה לא חוקית:\n", "

                                                                  \n", - "\n", - "

                                                                  \n", - " Insert username: stam
                                                                  \n", - " Insert password: stamSTAMXXXX
                                                                  \n", - " Login succeeded. How much you'd like to withdraw? 600
                                                                  \n", + "

                                                                  \n", + " Insert username: stam
                                                                  \n", + " Insert password: stamSTAMXXXX
                                                                  \n", + " Login succeeded. How much you'd like to withdraw? 600
                                                                  \n", " Withdrawal denied.\n", "

                                                                  " ] @@ -190,12 +188,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  דוגמה למשיכה של 0 ש\"ח:

                                                                  \n", - "\n", - "

                                                                  \n", - " Insert username: stam
                                                                  \n", - " Insert password: stamSTAMXXXX
                                                                  \n", - " Login succeeded. How much you'd like to withdraw? 0
                                                                  \n", + "

                                                                  דוגמה למשיכה של 0 ש\"ח:

                                                                  \n", + "

                                                                  \n", + " Insert username: stam
                                                                  \n", + " Insert password: stamSTAMXXXX
                                                                  \n", + " Login succeeded. How much you'd like to withdraw? 0
                                                                  \n", " Invalid amount.\n", "

                                                                  " ] @@ -213,9 +210,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                  \n", + " לאחרונה עלתה דרישה לשכלל את הבנק שלנו, כך שרק מספר מצומצם של לקוחות יוכלו לגשת לבנק.
                                                                  \n", + " הגדירו רשימה של שמות של לקוחות שעבורם יתאפשר החיבור.
                                                                  \n", " עבור לקוחות שאינם ברשימה יכתוב הבנק You are not a customer of the bank.\n", "

                                                                  " ] @@ -233,19 +230,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                  מתודות של מחרוזות

                                                                  " + "##

                                                                  מתודות של מחרוזות

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  ניזכר בכמה פעולות של מחרוזות:
                                                                  לכל אחד מהתרגילים הבאים הריצו את הדוגמה וכתבו בעצמכם 3 דוגמאות נוספות. הסבירו לעצמכם מה עושה כל מתודה למחרוזת שהיא מקבלת.
                                                                  \n", - "אם תרצו להיזכר מה עושה מתודה מסוימת תוכלו להריץ אותה כך:

                                                                  \n", + "

                                                                  ניזכר בכמה פעולות של מחרוזות:
                                                                  לכל אחד מהתרגילים הבאים הריצו את הדוגמה וכתבו בעצמכם 3 דוגמאות נוספות. הסבירו לעצמכם מה עושה כל מתודה למחרוזת שהיא מקבלת.
                                                                  \n", + "אם תרצו להיזכר מה עושה מתודה מסוימת תוכלו להריץ אותה כך:

                                                                  \n", "str.method-name?\n", - "

                                                                  לדוגמה:

                                                                  \n", - "str.split?
                                                                  \n", - "

                                                                  הריצו את התא הבא לקבלת מידע על המתודה split:

                                                                  \n" + "

                                                                  לדוגמה:

                                                                  \n", + "str.split?
                                                                  \n", + "

                                                                  הריצו את התא הבא לקבלת מידע על המתודה split:

                                                                  \n" ] }, { @@ -594,47 +591,46 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                  שעון עולמי

                                                                  " + "##

                                                                  שעון עולמי

                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                  בשאלה זו נכתוב גרסה של שעון עולמי התומך ב־4 אזורי זמן:
                                                                  \n", - "\n", - "

                                                                    \n", - "
                                                                  • תל אביב – TLV
                                                                  • \n", - "
                                                                  • לונדון – LDN
                                                                  • \n", - "
                                                                  • ניו יורק – NYC
                                                                  • \n", - "
                                                                  • טוקיו – TYO
                                                                  • \n", + "

                                                                    בשאלה זו נכתוב גרסה של שעון עולמי התומך ב־4 אזורי זמן:
                                                                    \n", + "

                                                                      \n", + "
                                                                    • תל אביב – TLV
                                                                    • \n", + "
                                                                    • לונדון – LDN
                                                                    • \n", + "
                                                                    • ניו יורק – NYC
                                                                    • \n", + "
                                                                    • טוקיו – TYO
                                                                    • \n", "
                                                                    \n", - "\n", - "

                                                                    \n", - "אם נקבל תל אביב, נחזיר את השעה בתוספת 3 שעות.
                                                                    \n", - "אם נקבל ניו יורק נחזיר את השעה פחות 4.
                                                                    \n", - "אם נקבל טוקיו נחזיר את השעה ועוד 9.
                                                                    \n", + "

                                                                    \n", + "אם נקבל תל אביב, נחזיר את השעה בתוספת 3 שעות.
                                                                    \n", + "אם נקבל ניו יורק נחזיר את השעה פחות 4.
                                                                    \n", + "אם נקבל טוקיו נחזיר את השעה ועוד 9.
                                                                    \n", "בכל מקרה אחר נחזיר את השעה כמו שקיבלנו אותה.\n", - "

                                                                    \n" + "

                                                                    \n", + "

                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                    השעון שלנו בתרגיל זה הוא שעון 24 שעות בפורמט HH:MM.

                                                                    \n", - "

                                                                    תחילה, כתבו פונקציה המקבלת את השעה בפורמט HH:MM, ומקבלת את מספר השעות שיש להוסיף או להוריד מהשעה הנתונה, ומחזירה את השעה המעודכנת.


                                                                    \n", - "time_shift(\"08:44\", 1)
                                                                    \n", - "\"09:44\"
                                                                    \n", - "time_shift(\"07:31\", -2)
                                                                    \n", + "

                                                                    השעון שלנו בתרגיל זה הוא שעון 24 שעות בפורמט HH:MM.

                                                                    \n", + "

                                                                    תחילה, כתבו פונקציה המקבלת את השעה בפורמט HH:MM, ומקבלת את מספר השעות שיש להוסיף או להוריד מהשעה הנתונה, ומחזירה את השעה המעודכנת.


                                                                    \n", + "time_shift(\"08:44\", 1)
                                                                    \n", + "\"09:44\"
                                                                    \n", + "time_shift(\"07:31\", -2)
                                                                    \n", "\"05:31\"\n", - "

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


                                                                    \n", - "time_shift(\"32:12\", 4)
                                                                    \n", + "

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


                                                                    \n", + "time_shift(\"32:12\", 4)
                                                                    \n", "\"Invalid time inserted\"\n", - "

                                                                    נוסף לכך, עליכם לתמוך במעברים בין יממות. כלומר עליכם לבצע נכון פעולות מסוג זה:


                                                                    \n", - "time_shift(\"23:30\", 2)
                                                                    \n", - "\"01:30\"
                                                                    \n", - "time_shift(\"04:13\", -5)
                                                                    \n", + "

                                                                    נוסף לכך, עליכם לתמוך במעברים בין יממות. כלומר עליכם לבצע נכון פעולות מסוג זה:


                                                                    \n", + "time_shift(\"23:30\", 2)
                                                                    \n", + "\"01:30\"
                                                                    \n", + "time_shift(\"04:13\", -5)
                                                                    \n", "\"23:13\"" ] }, @@ -651,36 +647,35 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                    רמזים

                                                                    " + "##

                                                                    רמזים

                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                    פונקציות שימושיות:\n", - "
                                                                    split – מתודה של string.
                                                                    \n", - " האופרטור % (מודולו) – חשבו עם איזה מספר צריך לעשות מודולו.
                                                                    \n", - " zfill – השתמשו בה במקרה שהשעה חד־ספרתית (לדוגמה 1:05 תהפוך ל־01:05)
                                                                    \n", - " \n", - "

                                                                    רמזים נוספים:
                                                                    \n", - " מומלץ להמיר את השעה מ־string ל־int ואז לבצע את פעולות החשבון, ולבסוף להמיר חזרה ל־string\n", - " \n", - "

                                                                    " + "

                                                                    פונקציות שימושיות:\n", + "
                                                                    split – מתודה של string.
                                                                    \n", + " האופרטור % (מודולו) – חשבו עם איזה מספר צריך לעשות מודולו.
                                                                    \n", + "zfill – השתמשו בה במקרה שהשעה חד־ספרתית (לדוגמה 1:05 תהפוך ל־01:05)
                                                                    \n", + "

                                                                    רמזים נוספים:
                                                                    \n", + "מומלץ להמיר את השעה מ־string ל־int ואז לבצע את פעולות החשבון, ולבסוף להמיר חזרה ל־string\n", + "\n", + "

                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                    כעת כתבו פונקציה המקבלת שני פרמטרים – שעה ואזור זמן ובאמצעות הפונקציה מהתרגיל הקודם מחזירה את השעה באזור הזמן המבוקש.\n", - "
                                                                    \n", + "

                                                                    כעת כתבו פונקציה המקבלת שני פרמטרים – שעה ואזור זמן ובאמצעות הפונקציה מהתרגיל הקודם מחזירה את השעה באזור הזמן המבוקש.\n", + "
                                                                    \n", " לדוגמה:\n", "

                                                                    \n", - "

                                                                    \n", - " convert_to_timezone(\"10:34\", \"TLV\")\n", - "
                                                                    \n", - " \"13:34\"\n", + "

                                                                    \n", + "convert_to_timezone(\"10:34\", \"TLV\")\n", + "
                                                                    \n", + "\"13:34\"\n", "

                                                                    " ] }, @@ -697,26 +692,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## אורכי רשימות" + "## אורכי רשימות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                    \n", + "

                                                                    \n", " כתבו תוכנית שמקבלת 2 רשימות שונות, ומדפיסה:\n", "

                                                                    \n", - "\n", - "
                                                                      \n", - "
                                                                    • \"Same length\" אם הן באותו אורך.
                                                                    • \n", - "
                                                                    • \"Not same length\" אם הן באורך שונה.
                                                                    • \n", - "
                                                                    • \"Got empty list\" אם רשימה שקיבלנו היא באורך 0.
                                                                    • \n", + "
                                                                        \n", + "
                                                                      • \"Same length\" אם הן באותו אורך.
                                                                      • \n", + "
                                                                      • \"Not same length\" אם הן באורך שונה.
                                                                      • \n", + "
                                                                      • \"Got empty list\" אם רשימה שקיבלנו היא באורך 0.
                                                                      • \n", "
                                                                      \n", - "\n", - "

                                                                      \n", - " לדוגמה – אם קיבלנו 2 רשימות ריקות, נדפיס:
                                                                      \n", - " \n", + "

                                                                      \n", + " לדוגמה – אם קיבלנו 2 רשימות ריקות, נדפיס:
                                                                      \n", + "\n", " \"Got empty list\"\n", " \"Got empty list\"\n", " \"Same length\"\n", @@ -737,41 +730,37 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מיקומים" + "## מיקומים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                      \n", - "כתבו פונקציה שמקבלת רשימה של רשימות.
                                                                      \n", - "אם הרשימה החיצונית לא באורך 6, הפונקציה תדפיס Only lists of length 6 are allowed.
                                                                      \n", + "

                                                                      \n", + "כתבו פונקציה שמקבלת רשימה של רשימות.
                                                                      \n", + "אם הרשימה החיצונית לא באורך 6, הפונקציה תדפיס Only lists of length 6 are allowed.
                                                                      \n", "הפונקציה תדפיס \"Yes!\" אם אחד מהבאים מתקיים:\n", "

                                                                      \n", - "\n", - "
                                                                        \n", - "
                                                                      • אורך הרשימה במקום ה־0 שווה לאורך הרשימה במקום ה־4
                                                                      • \n", - "
                                                                      • אורך הרשימה במקום ה־3 שווה לאורך הרשימה במקום ה־2 וה־1
                                                                      • \n", - "
                                                                      • אורך הרשימה במקום ה־5 שווה לאורך הרשימה במקום ה־3
                                                                      • \n", + "
                                                                          \n", + "
                                                                        • אורך הרשימה במקום ה־0 שווה לאורך הרשימה במקום ה־4
                                                                        • \n", + "
                                                                        • אורך הרשימה במקום ה־3 שווה לאורך הרשימה במקום ה־2 וה־1
                                                                        • \n", + "
                                                                        • אורך הרשימה במקום ה־5 שווה לאורך הרשימה במקום ה־3
                                                                        • \n", "
                                                                        \n", - " \n", - "

                                                                        \n", - "הפונקציה תדפיס \"Yes!\" עבור כל תנאי שמתקיים, גם אם קיים יותר מאחד כזה.
                                                                        \n", - "לדוגמה, עבור:
                                                                        \n", - "multi = [[0], [1], [2], [3], [4], [5]]
                                                                        \n", + "

                                                                        \n", + "הפונקציה תדפיס \"Yes!\" עבור כל תנאי שמתקיים, גם אם קיים יותר מאחד כזה.
                                                                        \n", + "לדוגמה, עבור:
                                                                        \n", + "multi = [[0], [1], [2], [3], [4], [5]]
                                                                        \n", "כל התנאים מתקיימים, ולכן נדפיס \"Yes!\" 3 פעמים.\n", "

                                                                        \n", - "\n", - "

                                                                        \n", + "

                                                                        \n", "כתבו לפחות 3 דוגמאות שונות שמדגימות:\n", "

                                                                        \n", - "\n", - "
                                                                          \n", - "
                                                                        • אפס הדפסות
                                                                        • \n", - "
                                                                        • הדפסה אחת
                                                                        • \n", - "
                                                                        • שתי הדפסות
                                                                        • \n", - "
                                                                        • שלוש הדפסות
                                                                        • \n", + "
                                                                            \n", + "
                                                                          • אפס הדפסות
                                                                          • \n", + "
                                                                          • הדפסה אחת
                                                                          • \n", + "
                                                                          • שתי הדפסות
                                                                          • \n", + "
                                                                          • שלוש הדפסות
                                                                          • \n", "
                                                                          " ] }, diff --git a/week3/1_While_Loops.ipynb b/week3/1_While_Loops.ipynb index 8bc7883..620fe3a 100644 --- a/week3/1_While_Loops.ipynb +++ b/week3/1_While_Loops.ipynb @@ -4,31 +4,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                                                          לולאות

                                                                          " + "#

                                                                          לולאות

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                          הקדמה

                                                                          " + "##

                                                                          הקדמה

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - " זהו בוקר אפלולי וגשום של יום ראשון. השמיים אפורים ואתם במיטה מתחת לפוך המפנק שלכם, מתפללים שאתם עדיין בתוך החלום המתוק ההוא.
                                                                          \n", - " השעה היא 7:30. השעון המעורר מנגן שוב את השיר שפעם היה האהוב עליכם, והיום מעלה בכם אסוציאציות קשות שמערבות את הטלפון החכם שלכם ופטיש כבד מאוד.
                                                                          \n", - " הפגישה שלכם תתקיים בשעה 9:00, ואתם יודעים בוודאות שתספיקו להגיע בזמן אם תתעוררו בשעה 8:00 ותמהרו מאוד.
                                                                          \n", + "

                                                                          \n", + " זהו בוקר אפלולי וגשום של יום ראשון. השמיים אפורים ואתם במיטה מתחת לפוך המפנק שלכם, מתפללים שאתם עדיין בתוך החלום המתוק ההוא.
                                                                          \n", + " השעה היא 7:30. השעון המעורר מנגן שוב את השיר שפעם היה האהוב עליכם, והיום מעלה בכם אסוציאציות קשות שמערבות את הטלפון החכם שלכם ופטיש כבד מאוד.
                                                                          \n", + " הפגישה שלכם תתקיים בשעה 9:00, ואתם יודעים בוודאות שתספיקו להגיע בזמן אם תתעוררו בשעה 8:00 ותמהרו מאוד.
                                                                          \n", " היד מושטת לכפתור ה\"נודניק\" שיפעיל שוב את השעון המעורר שלכם בעוד 10 דקות. ועוד פעם. ושוב.\n", "

                                                                          " ] @@ -37,9 +37,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - " אם נתאר את האלגוריתם שלפיו פעלתם, נוכל להגיד כך:
                                                                          \n", - " כל עוד השעון מצלצל, והשעה היא לפני 8:00, לחץ על כפתור הנודניק בשעון.
                                                                          \n", + "

                                                                          \n", + " אם נתאר את האלגוריתם שלפיו פעלתם, נוכל להגיד כך:
                                                                          \n", + "כל עוד השעון מצלצל, והשעה היא לפני 8:00, לחץ על כפתור הנודניק בשעון.
                                                                          \n", " נצייר את דרך הפעולה שלכם:\n", "

                                                                          " ] @@ -49,8 +49,8 @@ "metadata": {}, "source": [ "
                                                                          \n", - " \"התרשים\n", - "
                                                                          \n", + "\"התרשים\n", + "
                                                                          \n", " תרשים הזרימה של שעון מעורר בבוקר מדכא.\n", "
                                                                          \n", "
                                                                          " @@ -60,18 +60,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                          \n", - "
                                                                          \n", - " \"תרגול\" \n", - "
                                                                          \n", - "
                                                                          \n", - "

                                                                          \n", - " תרגול:\n", - " נסו לשרטט אלגוריתם להטלת 6 בקובייה.
                                                                          \n", - " כל עוד לא התקבל 6 בקובייה, הטילו את הקובייה מחדש.
                                                                          \n", + "

                                                                          \n", + "
                                                                          \n", + "\"תרגול\"\n", + "
                                                                          \n", + "
                                                                          \n", + "

                                                                          \n", + "תרגול:\n", + " נסו לשרטט אלגוריתם להטלת 6 בקובייה.
                                                                          \n", + " כל עוד לא התקבל 6 בקובייה, הטילו את הקובייה מחדש.
                                                                          \n", " כשקיבלתם 6 בקובייה, פִּצְחוּ בצהלולים בקול גדול.\n", "

                                                                          \n", - "
                                                                          \n", + "
                                                                          \n", "
                                                                          " ] }, @@ -79,16 +79,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                          הגדרה

                                                                          " + "##

                                                                          הגדרה

                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                          \n", - "המבנה ששרטטנו זה עתה נקרא לולאה.
                                                                          \n", - "נשתמש בלולאה כשנרצה לחזור על פעולה מספר פעמים שלאו דווקא ידוע לנו מראש.
                                                                          \n", + "

                                                                          \n", + "המבנה ששרטטנו זה עתה נקרא לולאה.
                                                                          \n", + "נשתמש בלולאה כשנרצה לחזור על פעולה מספר פעמים שלאו דווקא ידוע לנו מראש.
                                                                          \n", "אם ננסה לנתח את הלולאה כרעיון, נגלה שכל לולאה מורכבת מ־4 חלקים מרכזיים:\n", "

                                                                          " ] @@ -97,11 +97,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                            \n", - "
                                                                          1. אתחול הסביבה – הגדרת ערכים שבהם נשתמש בלולאה.
                                                                          2. \n", - "
                                                                          3. תנאי הלולאה – ביטוי בוליאני. כל עוד הביטוי הזה שקול ל־True, גוף הלולאה ימשיך להתבצע.
                                                                          4. \n", - "
                                                                          5. גוף הלולאה – הפעולות שיקרו בכל פעם שתנאי הלולאה מתקיים.
                                                                          6. \n", - "
                                                                          7. צעד לקראת סוף הלולאה – הליך שמבטיח שהלולאה תסתיים.
                                                                          8. \n", + "
                                                                              \n", + "
                                                                            1. אתחול הסביבה – הגדרת ערכים שבהם נשתמש בלולאה.
                                                                            2. \n", + "
                                                                            3. תנאי הלולאה – ביטוי בוליאני. כל עוד הביטוי הזה שקול ל־True, גוף הלולאה ימשיך להתבצע.
                                                                            4. \n", + "
                                                                            5. גוף הלולאה – הפעולות שיקרו בכל פעם שתנאי הלולאה מתקיים.
                                                                            6. \n", + "
                                                                            7. צעד לקראת סוף הלולאה – הליך שמבטיח שהלולאה תסתיים.
                                                                            8. \n", "
                                                                            " ] }, @@ -109,20 +109,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                            \n", + "

                                                                            \n", "במקרה שלנו:\n", "

                                                                            \n", - "
                                                                              \n", - "
                                                                            1. שלב אתחול הסביבה כולל:\n", + "
                                                                                \n", + "
                                                                              1. שלב אתחול הסביבה כולל:\n", "
                                                                                  \n", - "
                                                                                1. הגדרת הצלצול הראשוני ל־7:30.
                                                                                2. \n", - "
                                                                                3. הגדרת שעת ההשכמה הסופית ל־8:00.
                                                                                4. \n", - "
                                                                                5. הגדרת ה\"נודניק\" לצלצל בעוד 10 דקות.
                                                                                6. \n", - "
                                                                                \n", - "
                                                                              2. \n", - "
                                                                              3. תנאי הלולאה יכול להיות השעון המעורר פועל וגם השעה היא לפני שעת ההשכמה הסופית.
                                                                              4. \n", - "
                                                                              5. גוף הלולאה יכול להיות לחיצה על הנודניק וחזרה לישון.
                                                                              6. \n", - "
                                                                              7. צעד לקראת סוף הלולאה הוא הזמן שעבר בין צלצול לצלצול, שמקרב אותנו לשעה 8:00.
                                                                              8. \n", + "
                                                                              9. הגדרת הצלצול הראשוני ל־7:30.
                                                                              10. \n", + "
                                                                              11. הגדרת שעת ההשכמה הסופית ל־8:00.
                                                                              12. \n", + "
                                                                              13. הגדרת ה\"נודניק\" לצלצל בעוד 10 דקות.
                                                                              14. \n", + "
                                                                              \n", + "
                                                                            2. \n", + "
                                                                            3. תנאי הלולאה יכול להיות השעון המעורר פועל וגם השעה היא לפני שעת ההשכמה הסופית.
                                                                            4. \n", + "
                                                                            5. גוף הלולאה יכול להיות לחיצה על הנודניק וחזרה לישון.
                                                                            6. \n", + "
                                                                            7. צעד לקראת סוף הלולאה הוא הזמן שעבר בין צלצול לצלצול, שמקרב אותנו לשעה 8:00.
                                                                            8. \n", "
                                                                            " ] }, @@ -130,21 +130,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                            \n", - "
                                                                            \n", - " \"תרגול\" \n", - "
                                                                            \n", - "
                                                                            \n", - "

                                                                            \n", + "

                                                                            \n", + "
                                                                            \n", + "\"תרגול\"\n", + "
                                                                            \n", + "
                                                                            \n", + "

                                                                            \n", " נסו לחשוב על דוגמה משלכם ללולאה כלשהי. פרקו אותה ל־4 הרעיונות המרכזיים שבהם דנו.\n", "

                                                                            \n", - "
                                                                            \n", - "
                                                                            \n", - "

                                                                            \n", - " חשוב!
                                                                            \n", + "

                                                                            \n", + "
                                                                            \n", + "

                                                                            \n", + "חשוב!
                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                            \n", - "
                                                                            \n", + "
                                                                            \n", "
                                                                            " ] }, @@ -152,18 +152,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                            דוגמאות

                                                                            " + "##

                                                                            דוגמאות

                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                            \n", + "קל לחשוב על דוגמאות ללולאות מחיי היום־יום.
                                                                            \n", + "כמעט בכל פעם שאנחנו אומרים \"עד ש־\" או \"כל עוד־\", אנחנו בונים לולאה במציאות.
                                                                            \n", + "בכל פעם שאנחנו חוזרים על משהו שוב ושוב, אנחנו פועלים לפי לולאה מסוימת שמניעה אותנו.
                                                                            \n", + "רוב חיי היום־יום שלנו מתנהלים בלולאות, וזו הסיבה שלולאות הן כלי חזק כל כך בתכנות.
                                                                            \n", "

                                                                            " ] }, @@ -171,7 +171,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                            \n", + "

                                                                            \n", "לפניכם כמה דוגמאות ללולאות:\n", "

                                                                            " ] @@ -180,12 +180,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                              \n", - "
                                                                            • בזמן הארוחה, המשך לאכול עד שאתה שבע.
                                                                            • \n", - "
                                                                            • התעורר מהשינה! כל עוד אתה עירני, המשך ללמוד פייתון.
                                                                            • \n", - "
                                                                            • פתח את הספר בעמוד הראשון. כל עוד לא קראת את כל העמודים בספר, קרא את העמוד הנוכחי ואז עבור לעמוד הבא.
                                                                            • \n", - "
                                                                            • כל עוד לא מצאת אישה שנקראת הרמיוני, גש למישהי אקראית בעלת שיער חום מתולתל ועיניים חומות שנמצאת על הרציף ושאל אותה אם היא הרמיוני.
                                                                            • \n", - "
                                                                            • בליל כל הקדושים, התחפש, צא החוצה, וכל עוד לא ביקרת בכל הבתים ברחוב: לך לבית, צלצל בפעמון, אמור \"ממתק או תעלול\", קח ממתק, אמור תודה ולך לבית הבא.
                                                                            • \n", + "
                                                                                \n", + "
                                                                              • בזמן הארוחה, המשך לאכול עד שאתה שבע.
                                                                              • \n", + "
                                                                              • התעורר מהשינה! כל עוד אתה עירני, המשך ללמוד פייתון.
                                                                              • \n", + "
                                                                              • פתח את הספר בעמוד הראשון. כל עוד לא קראת את כל העמודים בספר, קרא את העמוד הנוכחי ואז עבור לעמוד הבא.
                                                                              • \n", + "
                                                                              • כל עוד לא מצאת אישה שנקראת הרמיוני, גש למישהי אקראית בעלת שיער חום מתולתל ועיניים חומות שנמצאת על הרציף ושאל אותה אם היא הרמיוני.
                                                                              • \n", + "
                                                                              • בליל כל הקדושים, התחפש, צא החוצה, וכל עוד לא ביקרת בכל הבתים ברחוב: לך לבית, צלצל בפעמון, אמור \"ממתק או תעלול\", קח ממתק, אמור תודה ולך לבית הבא.
                                                                              • \n", "
                                                                              " ] }, @@ -193,16 +193,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                              \n", - "
                                                                              \n", - " \"תרגול\" \n", - "
                                                                              \n", - "
                                                                              \n", - "

                                                                              \n", - " תרגול:\n", + "

                                                                              \n", + "
                                                                              \n", + "\"תרגול\"\n", + "
                                                                              \n", + "
                                                                              \n", + "

                                                                              \n", + "תרגול:\n", " מצאו את 4 הרעיונות המרכזיים שעליהם דיברנו בכל אחת מהדוגמאות.\n", "

                                                                              \n", - "
                                                                              \n", + "
                                                                              \n", "
                                                                              " ] }, @@ -210,15 +210,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                              כתיבת לולאה

                                                                              " + "##

                                                                              כתיבת לולאה

                                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - "בסרט המוזיקלי Hans Christian Andersen מ־1952, מופיע השיר Inchworm, ושרים בו כך:\n", + "

                                                                              \n", + "בסרט המוזיקלי Hans Christian Andersen מ־1952, מופיע השיר Inchworm, ושרים בו כך:\n", "

                                                                              " ] }, @@ -227,10 +227,10 @@ "metadata": {}, "source": [ "
                                                                              \n", - " Two and two are four
                                                                              \n", - " Four and four are eight
                                                                              \n", - " Eight and eight are sixteen
                                                                              \n", - " Sixteen and sixteen are thirty-two
                                                                              \n", + " Two and two are four
                                                                              \n", + " Four and four are eight
                                                                              \n", + " Eight and eight are sixteen
                                                                              \n", + " Sixteen and sixteen are thirty-two
                                                                              \n", "
                                                                              " ] }, @@ -238,8 +238,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - "זה הזמן לכתוב Inchworm משלנו.
                                                                              \n", + "

                                                                              \n", + "זה הזמן לכתוב Inchworm משלנו.
                                                                              \n", "נשרטט איך כתיבת לולאה עבור שיר שכזה תיראה:\n", "

                                                                              " ] @@ -249,8 +249,8 @@ "metadata": {}, "source": [ "
                                                                              \n", - " \"מתחילים\n", - "
                                                                              \n", + "\"מתחילים\n", + "
                                                                              \n", " תרשים זרימה שמתאר את התוכנית שנבנה להדפסת השיר Inchworm.\n", "
                                                                              \n", "
                                                                              " @@ -260,19 +260,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", + "

                                                                              \n", "במקרה שלנו:\n", "

                                                                              \n", - "
                                                                                \n", - "
                                                                              1. שלב אתחול הסביבה הוא השלב שבו נגדיר משתנה עם הערך הראשון להדפסה: 2.
                                                                              2. \n", - "
                                                                              3. תנאי הלולאה בודק אם אנחנו בשורה האחרונה של השיר או לפניה.
                                                                              4. \n", - "
                                                                              5. גוף הלולאה כולל:\n", + "
                                                                                  \n", + "
                                                                                1. שלב אתחול הסביבה הוא השלב שבו נגדיר משתנה עם הערך הראשון להדפסה: 2.
                                                                                2. \n", + "
                                                                                3. תנאי הלולאה בודק אם אנחנו בשורה האחרונה של השיר או לפניה.
                                                                                4. \n", + "
                                                                                5. גוף הלולאה כולל:\n", "
                                                                                    \n", - "
                                                                                  1. הגדרת משתנה שמכיל את סכום שני המספרים.
                                                                                  2. \n", - "
                                                                                  3. הדפסת שורה בשיר לפי הערך שחישבנו.
                                                                                  4. \n", - "
                                                                                  \n", - "
                                                                                6. \n", - "
                                                                                7. הצעד לקראת סוף הלולאה במקרה שלנו הוא קידום המשתנה שמכיל את המספר הנוכחי.
                                                                                8. \n", + "
                                                                                9. הגדרת משתנה שמכיל את סכום שני המספרים.
                                                                                10. \n", + "
                                                                                11. הדפסת שורה בשיר לפי הערך שחישבנו.
                                                                                12. \n", + "
                                                                                \n", + "
                                                                              6. \n", + "
                                                                              7. הצעד לקראת סוף הלולאה במקרה שלנו הוא קידום המשתנה שמכיל את המספר הנוכחי.
                                                                              8. \n", "
                                                                              " ] }, @@ -280,7 +280,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", + "

                                                                              \n", "טוב, זה הזמן לקצת קוד, לא?\n", "

                                                                              " ] @@ -302,8 +302,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - "הקוד הזה משתמש במילת המפתח while כדי ליצור לולאה.
                                                                              \n", + "

                                                                              \n", + "הקוד הזה משתמש במילת המפתח while כדי ליצור לולאה.
                                                                              \n", "הלולאה תואמת לחלוטין את תיאור השלבים המילולי שמופיע מעליה.\n", "

                                                                              " ] @@ -312,7 +312,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", + "

                                                                              \n", "ננסה להיזכר איך נראית השורה הראשונה של השיר, וננסה להבין מה הקוד שנכתב למעלה אומר.\n", "

                                                                              " ] @@ -328,8 +328,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - "דבר ראשון, עלינו להכין את הסביבה לפני השימוש בלולאה.
                                                                              \n", + "

                                                                              \n", + "דבר ראשון, עלינו להכין את הסביבה לפני השימוש בלולאה.
                                                                              \n", "נשתמש במשתנה שישמור עבורנו את הערך המספרי שיעמוד בראש השורה הנוכחית:\n", "

                                                                              " ] @@ -347,11 +347,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - "המספר שפותח את השורה האחרונה בשיר הוא 16, ולכן נרצה שהלולאה תרוץ כל עוד המספר הנוכחי ששמרנו קטן מ־16 או שווה לו.
                                                                              \n", - "נרשום את מילת המפתח while, ואחריה ביטוי בוליאני שיקבע מתי גוף הלולאה ירוץ. נסיים בנקודתיים.
                                                                              \n", - "בכל פעם שהביטוי הבוליאני יהיה שווה ל־True, גוף הלולאה ירוץ.
                                                                              \n", - "בפעם הראשונה (והיחידה) שהביטוי הבוליאני יהיה שקול ל־False, גוף הלולאה לא יתבצע והתוכנית תמשיך לבצע את הקוד שנמצא אחרי הלולאה.
                                                                              \n", + "

                                                                              \n", + "המספר שפותח את השורה האחרונה בשיר הוא 16, ולכן נרצה שהלולאה תרוץ כל עוד המספר הנוכחי ששמרנו קטן מ־16 או שווה לו.
                                                                              \n", + "נרשום את מילת המפתח while, ואחריה ביטוי בוליאני שיקבע מתי גוף הלולאה ירוץ. נסיים בנקודתיים.
                                                                              \n", + "בכל פעם שהביטוי הבוליאני יהיה שווה ל־True, גוף הלולאה ירוץ.
                                                                              \n", + "בפעם הראשונה (והיחידה) שהביטוי הבוליאני יהיה שקול ל־False, גוף הלולאה לא יתבצע והתוכנית תמשיך לבצע את הקוד שנמצא אחרי הלולאה.
                                                                              \n", "

                                                                              " ] }, @@ -368,12 +368,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - "אחרי שכתבנו את התנאי, זה הזמן לכתוב מה אנחנו רוצים שיתבצע בכל פעם שהתנאי יתקיים.
                                                                              \n", + "

                                                                              \n", + "אחרי שכתבנו את התנאי, זה הזמן לכתוב מה אנחנו רוצים שיתבצע בכל פעם שהתנאי יתקיים.
                                                                              \n", "החלק הזה נקרא \"גוף הלולאה\", וכל הרצה שלו נקראת \"אִיטֶרַצְיָה\", או בעברית, \"חִזְרוּר\".\n", "

                                                                              \n", - "

                                                                              \n", - "נתחיל בהגדרת המספר שיודפס בסוף השורה, שהוא המספר בתחילת השורה ועוד עצמו.
                                                                              \n", + "

                                                                              \n", + "נתחיל בהגדרת המספר שיודפס בסוף השורה, שהוא המספר בתחילת השורה ועוד עצמו.
                                                                              \n", "שימו לב להזחה, שמציינת שחלק הקוד הזה שייך ללולאת ה־while ושהוא ירוץ בכל פעם שהביטוי הבוליאני שבראשה שקול ל־True.\n", "

                                                                              " ] @@ -391,7 +391,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", + "

                                                                              \n", "נדפיס את השורה עם הפרטים שיצרנו:\n", "

                                                                              " ] @@ -409,9 +409,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - "לסיום, לקראת הדפסת השורה הבאה, נקדם את המשתנה שמכיל את הערך שמודפס בתחילת כל שורה בשיר.
                                                                              \n", - "הפעולה הזו תכין את המשתנה לשורה הבאה, וגם תקדם את הלולאה לסופה.
                                                                              \n", + "

                                                                              \n", + "לסיום, לקראת הדפסת השורה הבאה, נקדם את המשתנה שמכיל את הערך שמודפס בתחילת כל שורה בשיר.
                                                                              \n", + "הפעולה הזו תכין את המשתנה לשורה הבאה, וגם תקדם את הלולאה לסופה.
                                                                              \n", "כיוון שתחילת כל שורה חדשה בשיר זהה לסוף השורה הקודמת, נוכל לרשום בפשטות:\n", "

                                                                              " ] @@ -429,20 +429,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                              סיכום ביניים

                                                                              " + "###

                                                                              סיכום ביניים

                                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - "כפי שראינו, לולאת while משתמשת בביטוי בוליאני כדי להחליט אם להריץ קוד מסוים.
                                                                              \n", - "היא בודקת אם הביטוי הבוליאני שקול ל־True, ואם כן, היא מריצה את קטע הקוד בגוף הלולאה.
                                                                              \n", - "כל עוד הביטוי הבוליאני המופיע ליד המילה while שקול ל־True, גוף הלולאה ימשיך לרוץ.
                                                                              \n", + "

                                                                              \n", + "כפי שראינו, לולאת while משתמשת בביטוי בוליאני כדי להחליט אם להריץ קוד מסוים.
                                                                              \n", + "היא בודקת אם הביטוי הבוליאני שקול ל־True, ואם כן, היא מריצה את קטע הקוד בגוף הלולאה.
                                                                              \n", + "כל עוד הביטוי הבוליאני המופיע ליד המילה while שקול ל־True, גוף הלולאה ימשיך לרוץ.
                                                                              \n", "כשהביטוי יהפוך להיות שקול ל־False, הלולאה תפסיק את ריצת הקוד בגוף הלולאה, והקוד שאחריה ימשיך לרוץ.\n", "

                                                                              \n", - "

                                                                              \n", + "

                                                                              \n", "הרעיון של while מקביל ל־if שגופו רץ וחוזר לראש התנאי פעם אחר פעם, עד שהביטוי הבוליאני שבראש התנאי שקול ל־False.\n", "

                                                                              " ] @@ -451,21 +451,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                              \n", - "
                                                                              \n", - " \"תרגול\" \n", - "
                                                                              \n", - "
                                                                              \n", - "

                                                                              \n", + "

                                                                              \n", + "
                                                                              \n", + "\"תרגול\"\n", + "
                                                                              \n", + "
                                                                              \n", + "

                                                                              \n", " כתבו קוד שמקבל מהמשתמש מספר שלם גדול מ־1, ומדפיס את כל המספרים מ־1 ועד המספר שנקלט.\n", "

                                                                              \n", - "
                                                                              \n", - "
                                                                              \n", - "

                                                                              \n", - " חשוב!
                                                                              \n", + "

                                                                              \n", + "
                                                                              \n", + "

                                                                              \n", + "חשוב!
                                                                              \n", " פתרו לפני שתמשיכו!\n", "

                                                                              \n", - "
                                                                              \n", + "
                                                                              \n", "
                                                                              " ] }, @@ -473,21 +473,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                              דוגמאות נוספות

                                                                              " + "###

                                                                              דוגמאות נוספות

                                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "####

                                                                              תרגילים חשבוניים

                                                                              " + "####

                                                                              תרגילים חשבוניים

                                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", + "

                                                                              \n", "לפניכם דוגמה של קוד שמחשב את סכום כל המספרים הטבעיים, מ־1 ועד למספר שהזין המשתמש.\n", "

                                                                              " ] @@ -514,16 +514,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                              \n", - "
                                                                              \n", - " \"תרגול\" \n", - "
                                                                              \n", - "
                                                                              \n", - "

                                                                              \n", - " הגדירו את 4 החלקים המופיעים בלולאה המופיעה בקוד מעלה.
                                                                              \n", + "

                                                                              \n", + "
                                                                              \n", + "\"תרגול\"\n", + "
                                                                              \n", + "
                                                                              \n", + "

                                                                              \n", + " הגדירו את 4 החלקים המופיעים בלולאה המופיעה בקוד מעלה.
                                                                              \n", " שרטטו כיצד היא עובדת.\n", "

                                                                              \n", - "
                                                                              \n", + "
                                                                              \n", "
                                                                              " ] }, @@ -531,19 +531,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "####

                                                                              מיקומים ברשימה

                                                                              " + "####

                                                                              מיקומים ברשימה

                                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - "לפניכם קוד שמקבל כקלט את מספר התלמידים בכיתה.
                                                                              \n", - "לאחר מכן, הוא מקבל כקלט את הציון של כל תלמיד במבחן האחרון.
                                                                              \n", + "

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

                                                                              \n", - "

                                                                              \n", + "

                                                                              \n", "שימו לב לשימוש שנעשה כאן בלולאות כדי לגשת למיקומי ערכים ברשימה.\n", "

                                                                              " ] @@ -582,15 +582,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                              \n", - "
                                                                              \n", - " \"תרגול\" \n", - "
                                                                              \n", - "
                                                                              \n", - "

                                                                              \n", + "

                                                                              \n", + "
                                                                              \n", + "\"תרגול\"\n", + "
                                                                              \n", + "
                                                                              \n", + "

                                                                              \n", " חשבו על דרך לממש את הקוד הזה עם לולאה אחת בלבד.\n", "

                                                                              \n", - "
                                                                              \n", + "
                                                                              \n", "
                                                                              " ] }, @@ -598,7 +598,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "####

                                                                              לולאה בתוך לולאה

                                                                              " + "####

                                                                              לולאה בתוך לולאה

                                                                              " ] }, { @@ -623,22 +623,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                              \n", - "
                                                                              \n", - " \"תרגול\" \n", - "
                                                                              \n", - "
                                                                              \n", - "

                                                                              \n", - " הסבירו לעצמכם כיצד הקוד הזה עובד.
                                                                              \n", + "

                                                                              \n", + "
                                                                              \n", + "\"תרגול\"\n", + "
                                                                              \n", + "
                                                                              \n", + "

                                                                              \n", + " הסבירו לעצמכם כיצד הקוד הזה עובד.
                                                                              \n", " במידת הצורך, הזינו את הקוד ב־PythonTutor כדי לראות מה הוא עושה.\n", "

                                                                              \n", - "
                                                                              \n", - "
                                                                              \n", - "

                                                                              \n", - " חשוב!
                                                                              \n", + "

                                                                              \n", + "
                                                                              \n", + "

                                                                              \n", + "חשוב!
                                                                              \n", " פתרו לפני שתמשיכו!\n", "

                                                                              \n", - "
                                                                              \n", + "
                                                                              \n", "
                                                                              " ] }, @@ -646,23 +646,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ניפוי שגיאות" + "## ניפוי שגיאות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                              לולאה אין־סופית

                                                                              " + "###

                                                                              לולאה אין־סופית

                                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                              \n", + " אם אתם חדשים בנושא הלולאות והתנסיתם בפתירת התרגילים, יש סיכוי לא רע שנתקעה לכם המחברת.
                                                                              \n", + " כשאנחנו מתעסקים עם לולאת while, יש סיכון ממשי שניצור בטעות לולאה שלא תסתיים לעולם.
                                                                              \n", " המצב שבו לולאה לא מסתיימת נקרא \"לולאה אין־סופית\", והוא נובע מכך שתנאי הלולאה שקול תמיד ל־True.\n", "

                                                                              " ] @@ -671,14 +671,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                              \n", - " ישנן שתי טעויות נפוצות שגורמות ללולאות להיות אין־סופיות.
                                                                              \n", + "

                                                                              \n", + " ישנן שתי טעויות נפוצות שגורמות ללולאות להיות אין־סופיות.
                                                                              \n", " זיהוי הטעות וטיפול בה יאפשרו ללולאה שלכם לעבוד כראוי:\n", "

                                                                              \n", - "\n", - "
                                                                                \n", - "
                                                                              • טעות בתנאי – אין מצב שבו הביטוי הבוליאני בראש הלולאה יהיה שקול ל־False.
                                                                              • \n", - "
                                                                              • טעות בקידום – לא בוצע צעד שיקדם את הלולאה לכיוון הסוף שלה, ועקב כך הביטוי הבוליאני נשאר שקול ל־True.
                                                                              • \n", + "
                                                                                  \n", + "
                                                                                • טעות בתנאי – אין מצב שבו הביטוי הבוליאני בראש הלולאה יהיה שקול ל־False.
                                                                                • \n", + "
                                                                                • טעות בקידום – לא בוצע צעד שיקדם את הלולאה לכיוון הסוף שלה, ועקב כך הביטוי הבוליאני נשאר שקול ל־True.
                                                                                • \n", "
                                                                                " ] }, @@ -686,9 +685,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                \n", - " אם ליד תא במחברת שלכם מופיעה כוכבית ותאים אחרים לא יכולים לרוץ, סימן שאותו תא עדיין רץ.
                                                                                \n", - " אם הוא רץ זמן רב מדי, יש סיכוי שמדובר בלולאה אין־סופית. אם זה אכן המצב, בחרו בסרגל הכלים של המחברת ב־\"Kernel\" ואז ב־\"Restart\".
                                                                                \n", + "

                                                                                \n", + " אם ליד תא במחברת שלכם מופיעה כוכבית ותאים אחרים לא יכולים לרוץ, סימן שאותו תא עדיין רץ.
                                                                                \n", + " אם הוא רץ זמן רב מדי, יש סיכוי שמדובר בלולאה אין־סופית. אם זה אכן המצב, בחרו בסרגל הכלים של המחברת ב־\"Kernel\" ואז ב־\"Restart\".
                                                                                \n", " פעולה זו תעצור את הריצה של המחברת שלכם, ותאפשר לכם לתקן את הקוד הבעייתי ולהריץ אותו מחדש.\n", "

                                                                                " ] @@ -697,7 +696,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                \n", + "

                                                                                \n", " הנה דוגמה ללולאה אין־סופית, בתוכנה שמטרתה לספור מ־1 עד 10:\n", "

                                                                                " ] @@ -718,15 +717,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                \n", - "
                                                                                \n", - " \"תרגול\" \n", - "
                                                                                \n", - "
                                                                                \n", - "

                                                                                \n", + "

                                                                                \n", + "
                                                                                \n", + "\"תרגול\"\n", + "
                                                                                \n", + "
                                                                                \n", + "

                                                                                \n", " למה הלולאה הזו אין־סופית? תקנו אותה כך שתפעל כראוי.\n", "

                                                                                \n", - "
                                                                                \n", + "
                                                                                \n", "
                                                                                " ] }, @@ -734,16 +733,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                הלולאה לא רצה

                                                                                " + "###

                                                                                הלולאה לא רצה

                                                                                " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                \n", - "המקרה ההפוך מלולאה אין־סופית הוא לולאה שפשוט לא רצה.
                                                                                \n", - "במילים אחרות – לולאה שתנאי הכניסה שלה שקול ל־False בהרצתה הראשונה.
                                                                                \n", + "

                                                                                \n", + "המקרה ההפוך מלולאה אין־סופית הוא לולאה שפשוט לא רצה.
                                                                                \n", + "במילים אחרות – לולאה שתנאי הכניסה שלה שקול ל־False בהרצתה הראשונה.
                                                                                \n", "במקרה הזה, ראוי לבדוק כיצד אתחלנו את הסביבה, ואם התנאי שכתבנו אכן עובד.\n", "

                                                                                " ] @@ -764,17 +763,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                \n", - "
                                                                                \n", - " \"תרגול\" \n", - "
                                                                                \n", - "
                                                                                \n", - "

                                                                                \n", - " את הלולאה הזו כתב מתכנת מפוזר במיוחד, ויש בה יותר מבעיה אחת.
                                                                                \n", - " מצאו את הבעיות, תקנו אותן והריצו את התוכנית.
                                                                                \n", + "

                                                                                \n", + "
                                                                                \n", + "\"תרגול\"\n", + "
                                                                                \n", + "
                                                                                \n", + "

                                                                                \n", + " את הלולאה הזו כתב מתכנת מפוזר במיוחד, ויש בה יותר מבעיה אחת.
                                                                                \n", + " מצאו את הבעיות, תקנו אותן והריצו את התוכנית.
                                                                                \n", " הפלט הרצוי, משמאל לימין, הוא: 8, 4, 2, 1.\n", "

                                                                                \n", - "
                                                                                \n", + "
                                                                                \n", "
                                                                                " ] }, @@ -782,18 +781,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                סטייה באחד

                                                                                " + "###

                                                                                סטייה באחד

                                                                                " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                \n", - " זאת טעות נפוצה מאוד, עד כדי כך שיש לה שם ואפילו ערך בוויקיפדיה!
                                                                                \n", + "

                                                                                \n", + " זאת טעות נפוצה מאוד, עד כדי כך שיש לה שם ואפילו ערך בוויקיפדיה!
                                                                                \n", " בשגיאה מסוג \"סטייה באחד\" (באנגלית: \"Off By One\") מתכנת שוכח לטפל במקרה האחרון, או מטפל במקרה אחד יותר מדי.\n", "

                                                                                \n", - "

                                                                                \n", + "

                                                                                \n", " נראה דוגמה:\n", "

                                                                                " ] @@ -819,15 +818,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                \n", - "
                                                                                \n", - " \"תרגול\" \n", - "
                                                                                \n", - "
                                                                                \n", - "

                                                                                \n", + "

                                                                                \n", + "
                                                                                \n", + "\"תרגול\"\n", + "
                                                                                \n", + "
                                                                                \n", + "

                                                                                \n", " מה הבעיה פה? כיצד ניתן לפתור אותה?\n", "

                                                                                \n", - "
                                                                                \n", + "
                                                                                \n", "
                                                                                " ] }, @@ -835,16 +834,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                טיפול בבאגים של לולאות

                                                                                " + "###

                                                                                טיפול בבאגים של לולאות

                                                                                " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                \n", - "לולאות הן כלי עוצמתי שמוסיף עניין רב לקוד.
                                                                                \n", - "עם זאת, לולאות עלולות להוסיף מקרים מיוחדים שגורמים לבאגים קשים לפענוח.
                                                                                \n", + "

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

                                                                                " ] @@ -853,10 +852,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                  \n", - "
                                                                                1. הדפסות לפני תחילת הלולאה – בדקו מה הערך של תנאי הלולאה, ומהם הערכים של כל אחד מהביטויים שמרכיבים אותו.
                                                                                2. \n", - "
                                                                                3. הדפסות בתוך הלולאה – בדקו מה קורה בתוך גוף הלולאה בכל איטרציה. האם הערכים של המשתנים הם אלו שצפיתם? כמה פעמים רץ גוף הלולאה?
                                                                                4. \n", - "
                                                                                5. הדפסות אחרי הלולאה – מה ערכם של המשתנים בסיום הלולאה? מה הערכים של המשתנים בתנאי הבוליאני? האם הלולאה סיימה את עבודה מוקדם מדי?
                                                                                6. \n", + "
                                                                                    \n", + "
                                                                                  1. הדפסות לפני תחילת הלולאה – בדקו מה הערך של תנאי הלולאה, ומהם הערכים של כל אחד מהביטויים שמרכיבים אותו.
                                                                                  2. \n", + "
                                                                                  3. הדפסות בתוך הלולאה – בדקו מה קורה בתוך גוף הלולאה בכל איטרציה. האם הערכים של המשתנים הם אלו שצפיתם? כמה פעמים רץ גוף הלולאה?
                                                                                  4. \n", + "
                                                                                  5. הדפסות אחרי הלולאה – מה ערכם של המשתנים בסיום הלולאה? מה הערכים של המשתנים בתנאי הבוליאני? האם הלולאה סיימה את עבודה מוקדם מדי?
                                                                                  6. \n", "
                                                                                  " ] }, @@ -864,14 +863,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                                  מונחים

                                                                                  " + "##

                                                                                  מונחים

                                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                  \n", + "
                                                                                  \n", "
                                                                                  אתחול
                                                                                  לא רק בלולאות – הגדרת משתנים לערכים התחלתיים לפני ביצוע פעולה כלשהי.
                                                                                  \n", "
                                                                                  תנאי הלולאה
                                                                                  ביטוי בוליאני שכל עוד הוא שקול ל־True, גוף הלולאה ירוץ.
                                                                                  \n", "
                                                                                  גוף הלולאה
                                                                                  השורות שירוצו כל עוד תנאי הלולאה מתקדם. גוף הלולאה כולל את הקידום.
                                                                                  \n", @@ -887,29 +886,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                                  תרגילים

                                                                                  " + "##

                                                                                  תרגילים

                                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                  It's the final...

                                                                                  " + "###

                                                                                  It's the final...

                                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                  \n", - "נתקעתם במסיבה שבה סופרים את השניות לאחור עד לכניסת השנה החדשה.
                                                                                  \n", - "עזרו למשתתפים המבולבלים שהתחילו לספור מוקדם מדי –
                                                                                  \n", - "קבלו את מספר השניות שנותרו עד חצות, והדפיסו עבורם את הספירה לאחור.
                                                                                  \n", + "

                                                                                  \n", + "נתקעתם במסיבה שבה סופרים את השניות לאחור עד לכניסת השנה החדשה.
                                                                                  \n", + "עזרו למשתתפים המבולבלים שהתחילו לספור מוקדם מדי –
                                                                                  \n", + "קבלו את מספר השניות שנותרו עד חצות, והדפיסו עבורם את הספירה לאחור.
                                                                                  \n", "בסוף הספירה, הדפיסו \"Happy new year!\"\n", "

                                                                                  \n", - "

                                                                                  \n", - "לדוגמה, עבור 4, הדפיסו:
                                                                                  \n", - " \n", + "

                                                                                  \n", + "לדוגמה, עבור 4, הדפיסו:
                                                                                  \n", + "\n", " 4\n", " 3\n", " 2\n", @@ -923,16 +922,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                  Play

                                                                                  " + "###

                                                                                  Play

                                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                  \n", - "ציירו פירמידה עומדת על הצד, כך שראשה יהיה בצד ימין.
                                                                                  \n", - "במהלך הקוד, קבלו מהמשתמש את אורך השורה שבה מצויר קודקוד הפירמידה.
                                                                                  \n", + "

                                                                                  \n", + "ציירו פירמידה עומדת על הצד, כך שראשה יהיה בצד ימין.
                                                                                  \n", + "במהלך הקוד, קבלו מהמשתמש את אורך השורה שבה מצויר קודקוד הפירמידה.
                                                                                  \n", "לדוגמה: בפירמידה שלפניכם, המשתמש הכניס 5 כאורך השורה שבה מצויר קודקוד הפירמידה.\n", "

                                                                                  " ] @@ -958,27 +957,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                  מפענח הצפנים 2

                                                                                  " + "###

                                                                                  מפענח הצפנים 2

                                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                  \n", - "הצופן לכספת הביתית שלכם הוא 4812. בנו משחק בול־פגיעה שמאפשר למשתמש לנסות לנחש את הצופן.
                                                                                  \n", - "למשתמש יש 3 ניסיונות לנחש נכונה את הקוד הסודי שלכם לפני שמופעלת אזעקה.
                                                                                  \n", - "כחלק ממנגנון ההגנה מאיבוד הסיסמה לכספת, הכספת מציגה כמה ספרות נכונות המשתמש הזין אחרי כל ניחוש.
                                                                                  \n", - "אפשרו למשתמש להזין קוד 3 פעמים, וכתבו לו בכל ניסיון כמה מתוך הספרות שהזין באמת קיימות בקוד הנכון, לאו דווקא בסדר שהקיש.
                                                                                  \n", - "אם לא הצליח אחרי 3 ניסיונות, הדפיסו שהאזעקה הופעלה וסיימו את התוכנית.
                                                                                  \n", + "

                                                                                  \n", + "הצופן לכספת הביתית שלכם הוא 4812. בנו משחק בול־פגיעה שמאפשר למשתמש לנסות לנחש את הצופן.
                                                                                  \n", + "למשתמש יש 3 ניסיונות לנחש נכונה את הקוד הסודי שלכם לפני שמופעלת אזעקה.
                                                                                  \n", + "כחלק ממנגנון ההגנה מאיבוד הסיסמה לכספת, הכספת מציגה כמה ספרות נכונות המשתמש הזין אחרי כל ניחוש.
                                                                                  \n", + "אפשרו למשתמש להזין קוד 3 פעמים, וכתבו לו בכל ניסיון כמה מתוך הספרות שהזין באמת קיימות בקוד הנכון, לאו דווקא בסדר שהקיש.
                                                                                  \n", + "אם לא הצליח אחרי 3 ניסיונות, הדפיסו שהאזעקה הופעלה וסיימו את התוכנית.
                                                                                  \n", "

                                                                                  \n", - "

                                                                                  \n", - "לדוגמה, אם המשתמש הקיש בניסיון הראשון 0634, הדפיסו לו שרק אחת הספרות שניחש נכונה.
                                                                                  \n", - "אם המשתמש הקיש בניסיון השני 1234, הדפיסו לו ש־3 ספרות תואמות לקוד המקורי.
                                                                                  \n", - "אם המשתמש הקיש בניסיון השלישי 1284, הדפיסו לו ש־4 ספרות תואמות לקוד המקורי, ואז הדפיסו לו שהופעלה האזעקה.
                                                                                  \n", + "

                                                                                  \n", + "לדוגמה, אם המשתמש הקיש בניסיון הראשון 0634, הדפיסו לו שרק אחת הספרות שניחש נכונה.
                                                                                  \n", + "אם המשתמש הקיש בניסיון השני 1234, הדפיסו לו ש־3 ספרות תואמות לקוד המקורי.
                                                                                  \n", + "אם המשתמש הקיש בניסיון השלישי 1284, הדפיסו לו ש־4 ספרות תואמות לקוד המקורי, ואז הדפיסו לו שהופעלה האזעקה.
                                                                                  \n", "אם המשתמש הקיש באחד הניסיונות 4812, הדפיסו שהכספת נפתחה בהצלחה וסיימו את התוכנית מייד.\n", "

                                                                                  \n", - "

                                                                                  \n", + "

                                                                                  \n", "השתמשו בלולאות.\n", "

                                                                                  " ] @@ -987,23 +986,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                  כמו קולץ בישבן

                                                                                  " + "###

                                                                                  כמו קולץ בישבן

                                                                                  " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                  \n", - "נגדיר כלל: אם מספר הוא זוגי, נחלק אותו ב־2. אם מספר הוא אי־זוגי, נכפיל אותו ב־3 ונוסיף לו 1.
                                                                                  \n", - "לפי השערת קולץ, אם ניקח מספר חיובי שלם ונשתמש עליו פעמים רבות בכלל הזה, תמיד נגיע בסופו של דבר למספר 1.
                                                                                  \n", + "

                                                                                  \n", + "נגדיר כלל: אם מספר הוא זוגי, נחלק אותו ב־2. אם מספר הוא אי־זוגי, נכפיל אותו ב־3 ונוסיף לו 1.
                                                                                  \n", + "לפי השערת קולץ, אם ניקח מספר חיובי שלם ונשתמש עליו פעמים רבות בכלל הזה, תמיד נגיע בסופו של דבר למספר 1.
                                                                                  \n", "לדוגמה, אם ניקח את המספר 52, נקבל את שרשרת הפעולות הבאה:\n", "

                                                                                  \n", - "
                                                                                    \n", - "
                                                                                  • 52 זוגי, ולכן נחלק ב־2. נקבל 26.
                                                                                  • \n", - "
                                                                                  • 26 זוגי, ולכן נחלק ב־2. נקבל 13.
                                                                                  • \n", - "
                                                                                  • 13 הוא אי־זוגי, ולכן נכפיל ב־3 ונוסיף 1. נקבל 40.
                                                                                  • \n", - "
                                                                                  • וכך הלאה.
                                                                                  • \n", + "
                                                                                      \n", + "
                                                                                    • 52 זוגי, ולכן נחלק ב־2. נקבל 26.
                                                                                    • \n", + "
                                                                                    • 26 זוגי, ולכן נחלק ב־2. נקבל 13.
                                                                                    • \n", + "
                                                                                    • 13 הוא אי־זוגי, ולכן נכפיל ב־3 ונוסיף 1. נקבל 40.
                                                                                    • \n", + "
                                                                                    • וכך הלאה.
                                                                                    • \n", "
                                                                                    " ] }, @@ -1018,8 +1017,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                    \n", - "כתבו פונקציה שמקבלת מספר, ומחזירה את מספר הפעולות שצריך לעשות עליו, לפי השערת קולץ, כדי להגיע ל־1.
                                                                                    \n", + "

                                                                                    \n", + "כתבו פונקציה שמקבלת מספר, ומחזירה את מספר הפעולות שצריך לעשות עליו, לפי השערת קולץ, כדי להגיע ל־1.
                                                                                    \n", "לדוגמה: עבור המספר 52 היינו צריכים לבצע 11 פעולות כדי להגיע ל־1, ולכן עבור הקלט 52 הפונקציה תחזיר 11.\n", "

                                                                                    " ] @@ -1028,15 +1027,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                    ממש קולץ בישבן

                                                                                    " + "###

                                                                                    ממש קולץ בישבן

                                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                    \n", - " מצאו עבור איזה מספר בין 1 ל־1,000, צריך לעשות הכי הרבה צעדים, לפי השערת קולץ, כדי להגיע ל־1.
                                                                                    \n", + "

                                                                                    \n", + " מצאו עבור איזה מספר בין 1 ל־1,000, צריך לעשות הכי הרבה צעדים, לפי השערת קולץ, כדי להגיע ל־1.
                                                                                    \n", "לדוגמה, הנה הצעדים שצריך לעשות עבור כל מספר עד 5:\n", "

                                                                                    " ] @@ -1056,7 +1055,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                    \n", + "

                                                                                    \n", "מכאן שהמספר בין 1 ל־5 שעליו יש לעשות הכי הרבה צעדים, לפי השערת קולץ, עד שמגיעים ל־1, הוא 3.\n", "

                                                                                    " ] diff --git a/week3/2_Slicing.ipynb b/week3/2_Slicing.ipynb index 52bed86..6f0147e 100644 --- a/week3/2_Slicing.ipynb +++ b/week3/2_Slicing.ipynb @@ -4,28 +4,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                                                                    חיתוך / Slicing

                                                                                    " + "#

                                                                                    חיתוך / Slicing

                                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                                    הקדמה

                                                                                    " + "##

                                                                                    הקדמה

                                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                    \n", + "

                                                                                    \n", " בשבוע שעבר למדנו כיצד לגשת לרשימה או למחרוזת במיקום מסוים:\n", "

                                                                                    " ] @@ -49,8 +49,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                    \n", - " זוהי יכולת שימושית מאוד, אך לעיתים עולה הצורך לקחת כמה איברים מתוך המשתנה שהגדרנו, ולבנות מהם רשימה חדשה או מחרוזת חדשה.
                                                                                    \n", + "

                                                                                    \n", + " זוהי יכולת שימושית מאוד, אך לעיתים עולה הצורך לקחת כמה איברים מתוך המשתנה שהגדרנו, ולבנות מהם רשימה חדשה או מחרוזת חדשה.
                                                                                    \n", " קחו לדוגמה את המקרה הבא, שבו התגנב למחרוזת שלנו מספר מיותר שהיינו שמחים להעלים:\n", "

                                                                                    " ] @@ -68,16 +68,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                    \n", - "
                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                    \n", - "
                                                                                    \n", - "

                                                                                    \n", - " ממשו דרך המאפשרת להדפיס את המחרוזת ללא המספר.
                                                                                    \n", + "

                                                                                    \n", + "
                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                    \n", + "
                                                                                    \n", + "

                                                                                    \n", + " ממשו דרך המאפשרת להדפיס את המחרוזת ללא המספר.
                                                                                    \n", " חשבו על דרך נוספת לעשות זאת.\n", "

                                                                                    \n", - "
                                                                                    \n", + "
                                                                                    \n", "
                                                                                    " ] }, @@ -85,17 +85,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                                    הגדרה

                                                                                    " + "##

                                                                                    הגדרה

                                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                    \n", - "חיתוך (או Slicing) היא שיטה שמטרתה להשיג חלק מהאיברים של ערך מסוים.
                                                                                    \n", - "במחרוזת, חיתוך יעזור לנו לקבל תת־מחרוזת מתוך המחרוזת השלמה.
                                                                                    \n", - "ברשימה, חיתוך יעזור לנו לקבל תת־רשימה מתוך הרשימה השלמה.
                                                                                    \n", + "

                                                                                    \n", + "חיתוך (או Slicing) היא שיטה שמטרתה להשיג חלק מהאיברים של ערך מסוים.
                                                                                    \n", + "במחרוזת, חיתוך יעזור לנו לקבל תת־מחרוזת מתוך המחרוזת השלמה.
                                                                                    \n", + "ברשימה, חיתוך יעזור לנו לקבל תת־רשימה מתוך הרשימה השלמה.
                                                                                    \n", "

                                                                                    " ] }, @@ -103,21 +103,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                                    חיתוך בפייתון

                                                                                    " + "##

                                                                                    חיתוך בפייתון

                                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                    חיתוך לפי טווח

                                                                                    " + "###

                                                                                    חיתוך לפי טווח

                                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                    \n", + "

                                                                                    \n", "נבחן את המחרוזת הבאה:\n", "

                                                                                    " ] @@ -135,8 +135,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                    \n", - "מטרתנו תהיה \"לחלץ\" את החלק הראשון של המחרוזת, זה שנמצא לפני ה־42, באמצעות חיתוך.
                                                                                    \n", + "

                                                                                    \n", + "מטרתנו תהיה \"לחלץ\" את החלק הראשון של המחרוזת, זה שנמצא לפני ה־42, באמצעות חיתוך.
                                                                                    \n", "לשם כך, נביט על המיקום של כל אות:\n", "

                                                                                    " ] @@ -146,41 +146,41 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                    012345678
                                                                                    \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                    -9-8-7-6-5-4-3-2-1
                                                                                    012345678
                                                                                    \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                    -9-8-7-6-5-4-3-2-1
                                                                                    " ] }, @@ -188,9 +188,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                    \n", - "לפי השרטוט, אנחנו רוצים לחתוך ממיקום 0 ועד מיקום 3.
                                                                                    \n", - "נבקש מפייתון את המיקומים בצורה הבאה:
                                                                                    \n", + "

                                                                                    \n", + "לפי השרטוט, אנחנו רוצים לחתוך ממיקום 0 ועד מיקום 3.
                                                                                    \n", + "נבקש מפייתון את המיקומים בצורה הבאה:
                                                                                    \n", "

                                                                                    " ] }, @@ -198,12 +198,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                      \n", - "
                                                                                    1. נפתח סוגריים מרובעים.
                                                                                    2. \n", - "
                                                                                    3. מייד אחריהם, נציין את המיקום שממנו נתחיל לקחת איברים.
                                                                                    4. \n", - "
                                                                                    5. נשים נקודתיים.
                                                                                    6. \n", - "
                                                                                    7. מייד אחריהן, נציין מיקום הגדול באחד מהמקום שבו נסיים. פייתון לא תתחשב באיבר שבמיקום הזה.
                                                                                    8. \n", - "
                                                                                    9. נסגור סוגריים מרובעים.
                                                                                    10. \n", + "
                                                                                        \n", + "
                                                                                      1. נפתח סוגריים מרובעים.
                                                                                      2. \n", + "
                                                                                      3. מייד אחריהם, נציין את המיקום שממנו נתחיל לקחת איברים.
                                                                                      4. \n", + "
                                                                                      5. נשים נקודתיים.
                                                                                      6. \n", + "
                                                                                      7. מייד אחריהן, נציין מיקום הגדול באחד מהמקום שבו נסיים. פייתון לא תתחשב באיבר שבמיקום הזה.
                                                                                      8. \n", + "
                                                                                      9. נסגור סוגריים מרובעים.
                                                                                      10. \n", "
                                                                                      " ] }, @@ -222,41 +222,41 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      " ] }, @@ -264,17 +264,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                      \n", - "
                                                                                      \n", - " \"טיפ!\" \n", - "
                                                                                      \n", - "
                                                                                      \n", - "

                                                                                      \n", - " קל לזכור שפייתון לא לוקחת את האיבר האחרון:
                                                                                      \n", - " אם ניקח את המיקום של האיבר האחרון, ונחסר ממנו את המיקום של האיבר הראשון – נקבל את מספר האיברים שחזרו.
                                                                                      \n", + "

                                                                                      \n", + "
                                                                                      \n", + "\"טיפ!\"\n", + "
                                                                                      \n", + "
                                                                                      \n", + "

                                                                                      \n", + " קל לזכור שפייתון לא לוקחת את האיבר האחרון:
                                                                                      \n", + " אם ניקח את המיקום של האיבר האחרון, ונחסר ממנו את המיקום של האיבר הראשון – נקבל את מספר האיברים שחזרו.
                                                                                      \n", " במקרה שלנו – 4 פחות 0 יוצא 4, שזה בדיוק מספר האיברים שקיבלנו חזרה.\n", "

                                                                                      \n", - "
                                                                                      \n", + "
                                                                                      \n", "
                                                                                      " ] }, @@ -282,16 +282,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                      \n", - "
                                                                                      \n", - " \"אזהרה!\" \n", - "
                                                                                      \n", - "
                                                                                      \n", - "

                                                                                      \n", - " רבים נוטים להתבלבל בין חיתוך לבין קריאה לפונקציה.
                                                                                      \n", + "

                                                                                      \n", + "
                                                                                      \n", + "\"אזהרה!\"\n", + "
                                                                                      \n", + "
                                                                                      \n", + "

                                                                                      \n", + " רבים נוטים להתבלבל בין חיתוך לבין קריאה לפונקציה.
                                                                                      \n", " טעות זו מתאפיינת בבלבול בין סוגריים עגולים לבין סוגריים מרובעים, או בין פסיק לבין נקודתיים.\n", "

                                                                                      \n", - "
                                                                                      \n", + "
                                                                                      \n", "
                                                                                      " ] }, @@ -299,15 +299,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                      \n", - "
                                                                                      \n", - " \"אזהרה!\" \n", - "
                                                                                      \n", - "
                                                                                      \n", - "

                                                                                      \n", + "

                                                                                      \n", + "
                                                                                      \n", + "\"אזהרה!\"\n", + "
                                                                                      \n", + "
                                                                                      \n", + "

                                                                                      \n", " חיתוכים לא משנים את המחרוזת המקורית, אלא אם נבצע השמה חזרה לתוך המשתנה.\n", "

                                                                                      \n", - "
                                                                                      \n", + "
                                                                                      \n", "
                                                                                      " ] }, @@ -315,7 +315,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", + "

                                                                                      \n", "אם אנחנו מעוניינים להתחיל את החיתוך מתחילת המחרוזת, נוכל להשמיט את החלק שלפני הנקודתיים:\n", "

                                                                                      " ] @@ -334,7 +334,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", + "

                                                                                      \n", "נשתמש בטריק דומה כדי לחלץ את החלק השני של המחרוזת – מתא 6 ועד סוף המחרוזת:\n", "

                                                                                      " ] @@ -353,44 +353,44 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      " ] }, @@ -398,7 +398,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", + "

                                                                                      \n", "אחרי שחתכנו יפה כל כך את המחרוזת של האבוקדו, הגיע הזמן ליהנות מהפירות:\n", "

                                                                                      " ] @@ -416,15 +416,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                      \n", - "
                                                                                      \n", - " \"תרגול\" \n", - "
                                                                                      \n", - "
                                                                                      \n", - "

                                                                                      \n", + "

                                                                                      \n", + "
                                                                                      \n", + "\"תרגול\"\n", + "
                                                                                      \n", + "
                                                                                      \n", + "

                                                                                      \n", " כתבו שורה שמחלצת רק את תת־המחרוזת \"42\" מתוך המחרוזת.\n", "

                                                                                      \n", - "
                                                                                      \n", + "
                                                                                      \n", "
                                                                                      " ] }, @@ -432,16 +432,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                      חיתוך בקפיצות

                                                                                      " + "###

                                                                                      חיתוך בקפיצות

                                                                                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", - "אגף כוח האדם הנהדר של צה\"ל ביקש מכם לחלץ את האותיות A, c, a מתוך המחרוזת שהוצגה למעלה.
                                                                                      \n", - "אם נבדוק היטב, נגלה שהאותיות מופיעות החל מהתא ה־0, בקפיצות של 3 בכל פעם.
                                                                                      \n", + "

                                                                                      \n", + "אגף כוח האדם הנהדר של צה\"ל ביקש מכם לחלץ את האותיות A, c, a מתוך המחרוזת שהוצגה למעלה.
                                                                                      \n", + "אם נבדוק היטב, נגלה שהאותיות מופיעות החל מהתא ה־0, בקפיצות של 3 בכל פעם.
                                                                                      \n", "למזלנו, בפייתון יש דרך פשוטה להפליא לחתוך תוך כדי קפיצות מאות לאות – להוסיף נקודתיים, ואז את מרחק הקפיצה!\n", "

                                                                                      " ] @@ -459,8 +459,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", - "למה זה לא הצליח?
                                                                                      \n", + "

                                                                                      \n", + "למה זה לא הצליח?
                                                                                      \n", "נזכר שפייתון לא אוהבת לקחת את המקום האחרון:\n", "

                                                                                      " ] @@ -470,41 +470,41 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      " ] }, @@ -512,7 +512,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", + "

                                                                                      \n", " נתקן, ועל הדרך ניזכר שלא באמת צריך את ה־0 שם בהתחלה:\n", "

                                                                                      " ] @@ -531,41 +531,41 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      " ] }, @@ -573,15 +573,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                      חיתוך הפוך

                                                                                      " + "###

                                                                                      חיתוך הפוך

                                                                                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", - " כחובבים גדולים של שירה לירית, הפעם המטרה שלנו תהיה להשיג את המחרוזת \"oda\".
                                                                                      \n", + "

                                                                                      \n", + " כחובבים גדולים של שירה לירית, הפעם המטרה שלנו תהיה להשיג את המחרוזת \"oda\".
                                                                                      \n", "

                                                                                      " ] }, @@ -589,9 +589,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", - " נשים לב שמדובר בתאים 6, 7 ו־8 בסדר הפוך.
                                                                                      \n", - " נוכל לנסות להפוך את הסדר של המספרים:
                                                                                      \n", + "

                                                                                      \n", + " נשים לב שמדובר בתאים 6, 7 ו־8 בסדר הפוך.
                                                                                      \n", + " נוכל לנסות להפוך את הסדר של המספרים:
                                                                                      \n", "

                                                                                      " ] }, @@ -608,8 +608,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", - " אך מהר מאוד נגלה שישנה בעיה בהתקדמות נגד כיוון החץ –
                                                                                      \n", + "

                                                                                      \n", + " אך מהר מאוד נגלה שישנה בעיה בהתקדמות נגד כיוון החץ –
                                                                                      \n", " אי־אפשר להגיע מתא 8 לתא 5 אם אנחנו מתקדמים ימינה.\n", "

                                                                                      " ] @@ -619,44 +619,44 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      " ] }, @@ -664,8 +664,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", - " כל מה שנצטרך זה לבקש לקפוץ בצעדים של -1.
                                                                                      \n", + "

                                                                                      \n", + " כל מה שנצטרך זה לבקש לקפוץ בצעדים של -1.
                                                                                      \n", " כשכמות הצעדים (הקפיצות) שלנו היא מספר שלילי, כיוון החץ הופך להיות מימין לשמאל:\n", "

                                                                                      " ] @@ -684,41 +684,41 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      012345678
                                                                                      \"A\"\"v\"\"o\"\"c\"\"4\"\"2\"\"a\"\"d\"\"o\"
                                                                                      -9-8-7-6-5-4-3-2-1
                                                                                      " ] }, @@ -726,7 +726,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", + "

                                                                                      \n", " במקרה כזה, סוף המחרוזת שאנחנו חותכים נחשבת התחלת המחרוזת (כי החיתוך מתחיל מימין):\n", "

                                                                                      " ] @@ -744,16 +744,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                      \n", - "
                                                                                      \n", - " \"תרגול\" \n", - "
                                                                                      \n", - "
                                                                                      \n", - "

                                                                                      \n", - " חִתְכוּ מהמחרוזת את תת־המחרוזת \"covA\".
                                                                                      \n", + "

                                                                                      \n", + "
                                                                                      \n", + "\"תרגול\"\n", + "
                                                                                      \n", + "
                                                                                      \n", + "

                                                                                      \n", + " חִתְכוּ מהמחרוזת את תת־המחרוזת \"covA\".
                                                                                      \n", " לאחר מכן, הדפיסו את המחרוזת \"oda24covA\" בעזרת חיתוך של word.\n", "

                                                                                      \n", - "
                                                                                      \n", + "
                                                                                      \n", "
                                                                                      " ] }, @@ -761,14 +761,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                      דוגמאות נוספות

                                                                                      " + "###

                                                                                      דוגמאות נוספות

                                                                                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", + "

                                                                                      \n", " חיתוך עובד בצורה זהה על רשימה:\n", "

                                                                                      " ] @@ -841,8 +841,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", - "אפשר לעבוד גם עם מיקומים שליליים.
                                                                                      \n", + "

                                                                                      \n", + "אפשר לעבוד גם עם מיקומים שליליים.
                                                                                      \n", "עבור פייתון זה אותו דבר:\n", "

                                                                                      " ] @@ -871,14 +871,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                                      תרגילים

                                                                                      " + "##

                                                                                      תרגילים

                                                                                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                      איזה עולם

                                                                                      " + "###

                                                                                      איזה עולם

                                                                                      " ] }, { @@ -894,15 +894,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                      \n", - "שרשרו את המחרוזות הבאות יחד, לפי הסדר שבו הן מוצגות בתרגיל.
                                                                                      \n", + "

                                                                                      \n", + "שרשרו את המחרוזות הבאות יחד, לפי הסדר שבו הן מוצגות בתרגיל.
                                                                                      \n", "לצורך התרגיל, התייחסו ל־H כתו הראשון במחרוזת. כמו כן, התייחסו לרווח כתו לכל דבר.\n", "

                                                                                      \n", - "
                                                                                        \n", - "
                                                                                      1. המחרוזת שהוגדרה מהתו השביעי והלאה.
                                                                                      2. \n", - "
                                                                                      3. המחרוזת שהוגדרה מהתו השישי ועד התו החמישי, כולל, מימין לשמאל.
                                                                                      4. \n", - "
                                                                                      5. המחרוזת \"f \" (התו f ואז רווח).
                                                                                      6. \n", - "
                                                                                      7. ארבעת התווים הראשונים במחרוזת שהוגדרה.
                                                                                      8. \n", + "
                                                                                          \n", + "
                                                                                        1. המחרוזת שהוגדרה מהתו השביעי והלאה.
                                                                                        2. \n", + "
                                                                                        3. המחרוזת שהוגדרה מהתו השישי ועד התו החמישי, כולל, מימין לשמאל.
                                                                                        4. \n", + "
                                                                                        5. המחרוזת \"f \" (התו f ואז רווח).
                                                                                        6. \n", + "
                                                                                        7. ארבעת התווים הראשונים במחרוזת שהוגדרה.
                                                                                        8. \n", "
                                                                                        " ] }, @@ -910,16 +910,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                        מסר סודי ביותר

                                                                                        " + "###

                                                                                        מסר סודי ביותר

                                                                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                        \n", - "ארפכשד העביר לכדרלעומר מסר סודי ומוצפן.
                                                                                        \n", - "במחרוזת הבאה, אם תקפצו בכל פעם מעל מספר מסוים של אותיות, תקבלו מסר חשוב הכולל את סיסמתו של ארפכשד.
                                                                                        \n", + "

                                                                                        \n", + "ארפכשד העביר לכדרלעומר מסר סודי ומוצפן.
                                                                                        \n", + "במחרוזת הבאה, אם תקפצו בכל פעם מעל מספר מסוים של אותיות, תקבלו מסר חשוב הכולל את סיסמתו של ארפכשד.
                                                                                        \n", "מצאו על כמה אותיות צריך לדלג בכל פעם כדי להשיג את המסר הסודי שנשלח לארפכשד.\n", "

                                                                                        " ] @@ -928,7 +928,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                        \n", + "

                                                                                        \n", "רמז: המחרוזת כוללת את המילה password.\n", "

                                                                                        " ] @@ -946,18 +946,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                        (\"The very best\"[-3:]*2)[2:6]

                                                                                        " + "###

                                                                                        (\"The very best\"[-3:]*2)[2:6]

                                                                                        " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                        \n", - "לפניכם דוגמה של קובץ טקסט שמסודר בצורה שמזכירה טבלה.
                                                                                        \n", - "הקובץ מכיל את עשרים הפוקימונים הראשונים. העמודות מופרדות זו מזו בפסיקים.
                                                                                        \n", - "החזירו רשימה של רשימות, כאשר כל תת־רשימה מייצגת שורה בטבלה, וכל תא ברשימה הזו מייצג את הערך שנמצא בעמודה באותה רשימה.
                                                                                        \n", - "מחקו מהרשימות את עמודת Generation (שהרי כולם מדור ראשון), ואת עמודת Legendary (אף אחד מהם אינו אגדי).
                                                                                        \n", + "

                                                                                        \n", + "לפניכם דוגמה של קובץ טקסט שמסודר בצורה שמזכירה טבלה.
                                                                                        \n", + "הקובץ מכיל את עשרים הפוקימונים הראשונים. העמודות מופרדות זו מזו בפסיקים.
                                                                                        \n", + "החזירו רשימה של רשימות, כאשר כל תת־רשימה מייצגת שורה בטבלה, וכל תא ברשימה הזו מייצג את הערך שנמצא בעמודה באותה רשימה.
                                                                                        \n", + "מחקו מהרשימות את עמודת Generation (שהרי כולם מדור ראשון), ואת עמודת Legendary (אף אחד מהם אינו אגדי).
                                                                                        \n", "מחקו גם את עמודת Total.\n", "

                                                                                        " ] @@ -966,7 +966,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                        \n", + "

                                                                                        \n", " דוגמה לפלט שאמור להתקבל עבור 3 השורות הראשונות:\n", "

                                                                                        " ] @@ -988,8 +988,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                        \n", - "בונוס: המירו לטיפוס מסוג int את המקומות ברשימה שמכילים מספרים.
                                                                                        \n", + "

                                                                                        \n", + "בונוס: המירו לטיפוס מסוג int את המקומות ברשימה שמכילים מספרים.
                                                                                        \n", "זהו תרגיל מורכב. הרגישו בנוח לפתוח מחברות משבוע קודם ולהיעזר במדריכים.\n", "

                                                                                        " ] diff --git a/week3/3_Files.ipynb b/week3/3_Files.ipynb index de13ea3..3497684 100644 --- a/week3/3_Files.ipynb +++ b/week3/3_Files.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# קבצים" + "# קבצים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הגדרה" + "## הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                        \n", - " קובץ הוא מבנה שמאגד בתוכו נתונים השמורים במחשב שלכם.
                                                                                        \n", - " לכל קובץ יש שם וכתובת (נתיב, או באנגלית path), והוא מכיל כמות מסוימת של מידע שמשפיעה על גודלו.
                                                                                        \n", + "

                                                                                        \n", + "קובץ הוא מבנה שמאגד בתוכו נתונים השמורים במחשב שלכם.
                                                                                        \n", + " לכל קובץ יש שם וכתובת (נתיב, או באנגלית path), והוא מכיל כמות מסוימת של מידע שמשפיעה על גודלו.
                                                                                        \n", " תוכן הקובץ הוא מה שמגדיר את סוגו. סוגי קבצים שונים משמשים למטרות שונות, לדוגמה:\n", "

                                                                                        " ] @@ -36,41 +36,41 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "
                                                                                        סוג הקובץתכלית הקובץדוגמאות לסיומות
                                                                                        טקסטמכיל מלל בלבד, ללא עיצוב כלשהו (הדגשות, גדלים וכדומה)txt
                                                                                        תמונהייצוג של תמונה דיגיטלית למטרת הצגה חזותית שלהpng, jpg, gif, bmp
                                                                                        וידיאוייצוג של סרט או כל וידיאו אחרmp4, avi, flv
                                                                                        פייתוןמכיל קוד שהתוכנה של פייתון יודעת לקרוא ולהפעילpy, pyc, pyd
                                                                                        הרצהמכיל סדרת הוראות המיועדות לקריאה ולהרצה על־ידי המחשבexe, dmg
                                                                                        \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                        סוג הקובץתכלית הקובץדוגמאות לסיומות
                                                                                        טקסטמכיל מלל בלבד, ללא עיצוב כלשהו (הדגשות, גדלים וכדומה)txt
                                                                                        תמונהייצוג של תמונה דיגיטלית למטרת הצגה חזותית שלהpng, jpg, gif, bmp
                                                                                        וידיאוייצוג של סרט או כל וידיאו אחרmp4, avi, flv
                                                                                        פייתוןמכיל קוד שהתוכנה של פייתון יודעת לקרוא ולהפעילpy, pyc, pyd
                                                                                        הרצהמכיל סדרת הוראות המיועדות לקריאה ולהרצה על־ידי המחשבexe, dmg
                                                                                        " ] }, @@ -78,17 +78,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מהברזל ועד הקובץ\n", - "\n", - "

                                                                                        \n", - "קבצים הם דרך נהדרת לקבל הצצה חטופה לעומק ולמורכבות של המכונה המדהימה שנקראת מחשב.
                                                                                        \n", + "### מהברזל ועד הקובץ\n", + "

                                                                                        \n", + "קבצים הם דרך נהדרת לקבל הצצה חטופה לעומק ולמורכבות של המכונה המדהימה שנקראת מחשב.
                                                                                        \n", "ננסה לצייר לכם תמונה מלאה – נתחיל מהשכבה הנמוכה ביותר, הכונן הקשיח שלכם, ולבסוף נגיע לקבצים.\n", "

                                                                                        " ] @@ -97,11 +96,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### הכונן הקשיח\n", - "\n", - "

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

                                                                                        \n", + "כונן קשיח הוא אחד מהרכיבים הנמצאים בקופסת המחשב שעליו אתם עובדים כרגע.
                                                                                        \n", + "זהו הרכיב שמאחסן לטווח ארוך את המידע במחשב שלכם – קבצים, תוכנות, מערכת הפעלה והגדרות, כמו העדפות השפה שלכם.
                                                                                        \n", "היתרון המובהק של כוננים קשיחים הוא שהם יודעים לשמור על המידע שלכם לאורך זמן, גם כאשר הם לא מוזנים בחשמל.\n", "

                                                                                        " ] @@ -110,26 +108,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### ביט\n", - "\n", - "

                                                                                        \n", - "כוננים קשיחים מכילים הרבה יחידות קטנטנות שכל אחת מהן נקראת \"ביט\".
                                                                                        \n", - "ביט הוא ערך שיכול להיות 0 או 1, כלומר כבוי או דולק.
                                                                                        \n", - "בכל כונן קשיח פשוט שנמכר כיום יש מקום למאות מיליארדי(!) ביטים כאלו.
                                                                                        \n", + "#### ביט\n", + "

                                                                                        \n", + "כוננים קשיחים מכילים הרבה יחידות קטנטנות שכל אחת מהן נקראת \"ביט\".
                                                                                        \n", + "ביט הוא ערך שיכול להיות 0 או 1, כלומר כבוי או דולק.
                                                                                        \n", + "בכל כונן קשיח פשוט שנמכר כיום יש מקום למאות מיליארדי(!) ביטים כאלו.
                                                                                        \n", "כך נשמר כל המידע שדיברנו עליו בפסקה הקודמת.\n", "

                                                                                        \n", - "\n", - "

                                                                                        \n", - "אם נסתכל בעיניים אנושיות על רצפי התאים הקטנטנים, הביטים, שנמצאים בכונן הקשיח, קרוב לוודאי שלא נבין מהם כלום.
                                                                                        \n", - "הנה דוגמה לרצף שכזה: 010000100011001100101111010100110011001000110011.
                                                                                        \n", + "

                                                                                        \n", + "אם נסתכל בעיניים אנושיות על רצפי התאים הקטנטנים, הביטים, שנמצאים בכונן הקשיח, קרוב לוודאי שלא נבין מהם כלום.
                                                                                        \n", + "הנה דוגמה לרצף שכזה: 010000100011001100101111010100110011001000110011.
                                                                                        \n", "איך יוצקים משמעות לתוך דבר כזה? מה רצף המספרים הזה אומר בכלל?\n", "

                                                                                        \n", - "\n", - "

                                                                                        \n", - "נדמיין לרגע שאנחנו הממציאים של המחשב, ושהמטרה שלנו היא לייצג טקסט בצורה קלה לשמירה ולקריאה לאחר מכן.
                                                                                        \n", + "

                                                                                        \n", + "נדמיין לרגע שאנחנו הממציאים של המחשב, ושהמטרה שלנו היא לייצג טקסט בצורה קלה לשמירה ולקריאה לאחר מכן.
                                                                                        \n", "האם תוכלו לחשוב על דרך לעשות זאת רק באמצעות רצפים של 0 ו־1?\n", "

                                                                                        \n", - "\n", "
                                                                                        " ] }, @@ -137,12 +131,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### ייצוג תווים\n", - "\n", - "

                                                                                        \n", - "בעיה דומה של ייצוג טקסט באמצעות אפסים ואחדים בלבד, עלתה אי שם ב־1960.
                                                                                        \n", - "אחסוך לכם הרבה מעשיות בדרך, אבל מפה לשם הוחלט על תקן בשם ASCII, שקובע שכל סידור אפשרי של 8 ביטים שכאלו, שנקרא \"בייט\", ייצג תו.
                                                                                        \n", - "האות A קיבלה את הייצוג 01000001, האות Z, למשל, קיבלה את הייצוג 01011010, הספרה 7 את הייצוג 00110111 והתו רווח את הייצוג 00100000.
                                                                                        \n", + "#### ייצוג תווים\n", + "

                                                                                        \n", + "בעיה דומה של ייצוג טקסט באמצעות אפסים ואחדים בלבד, עלתה אי שם ב־1960.
                                                                                        \n", + "אחסוך לכם הרבה מעשיות בדרך, אבל מפה לשם הוחלט על תקן בשם ASCII, שקובע שכל סידור אפשרי של 8 ביטים שכאלו, שנקרא \"בייט\", ייצג תו.
                                                                                        \n", + "האות A קיבלה את הייצוג 01000001, האות Z, למשל, קיבלה את הייצוג 01011010, הספרה 7 את הייצוג 00110111 והתו רווח את הייצוג 00100000.
                                                                                        \n", "כך אפשר לקרוא מסר ארוך מאוד, ולהמיר כל 8 ביטים רצופים לתו. אם ננסה לקרוא בשיטה הזו 80 ביטים, נקבל 10 תווים קריאים.\n", "

                                                                                        " ] @@ -151,24 +144,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### ייצוג קבצים אחרים\n", - "\n", - "

                                                                                        \n", - "אבל רגע! מה קורה אם אני רוצה לייצג תמונה של חתול? או סרטון של חתול? או סאונד של... ובכן, חתול?
                                                                                        \n", - "כמו שאנשים חכמים חשבו על דרך לייצג ASCII, חכמים אחרים חשבו, עבור כל סוג של קובץ – מתמונה ועד תוכנה שרצה על המחשב, איך מייצגים אותם באמצעות ביטים.
                                                                                        \n", - "גם בימים אלו, אנשים מוכשרים רבים יושבים וחושבים על דרכים טובות יותר לייצג מידע בעזרת ביטים, ויוצרים עבורנו סוגי קבצים חדשים.
                                                                                        \n", + "#### ייצוג קבצים אחרים\n", + "

                                                                                        \n", + "אבל רגע! מה קורה אם אני רוצה לייצג תמונה של חתול? או סרטון של חתול? או סאונד של... ובכן, חתול?
                                                                                        \n", + "כמו שאנשים חכמים חשבו על דרך לייצג ASCII, חכמים אחרים חשבו, עבור כל סוג של קובץ – מתמונה ועד תוכנה שרצה על המחשב, איך מייצגים אותם באמצעות ביטים.
                                                                                        \n", + "גם בימים אלו, אנשים מוכשרים רבים יושבים וחושבים על דרכים טובות יותר לייצג מידע בעזרת ביטים, ויוצרים עבורנו סוגי קבצים חדשים.
                                                                                        \n", "

                                                                                        \n", - "\n", - "

                                                                                        \n", - "כשאנחנו רוצים לפתוח תמונה של חתול, למשל, אנחנו מפעילים תוכנה ייעודית שיודעת לקרוא ייצוג של תמונות.
                                                                                        \n", - "מה שקורה באותו רגע מאחורי הקלעים הוא שהתוכנה קוראת רצפים של 0 ו־1 מהדיסק הקשיח, אותם ביטים שדיברנו עליהם.
                                                                                        \n", - "מי שצילם את התמונה השתמש בתוכנה שיודעת להמיר את מה שקרה על מסך המצלמה לביטים שנשמרו על כרטיס הזיכרון שלו.
                                                                                        \n", - "מי שתכנת את התוכנה שמציגה לנו כרגע את החתול ידע להורות לה מה לעשות כדי לתרגם את אותם ביטים לתמונה שמוצגת לכם על המסך.
                                                                                        \n", - "שניהם פעלו לפי תקן מסוים (יש כמה כאלו, אולי אתם מכירים חלק מהם: JPG, PNG, GIF ועוד), שקובע דרך אחידה לייצג תמונה בעזרת ביטים.
                                                                                        \n", + "

                                                                                        \n", + "כשאנחנו רוצים לפתוח תמונה של חתול, למשל, אנחנו מפעילים תוכנה ייעודית שיודעת לקרוא ייצוג של תמונות.
                                                                                        \n", + "מה שקורה באותו רגע מאחורי הקלעים הוא שהתוכנה קוראת רצפים של 0 ו־1 מהדיסק הקשיח, אותם ביטים שדיברנו עליהם.
                                                                                        \n", + "מי שצילם את התמונה השתמש בתוכנה שיודעת להמיר את מה שקרה על מסך המצלמה לביטים שנשמרו על כרטיס הזיכרון שלו.
                                                                                        \n", + "מי שתכנת את התוכנה שמציגה לנו כרגע את החתול ידע להורות לה מה לעשות כדי לתרגם את אותם ביטים לתמונה שמוצגת לכם על המסך.
                                                                                        \n", + "שניהם פעלו לפי תקן מסוים (יש כמה כאלו, אולי אתם מכירים חלק מהם: JPG, PNG, GIF ועוד), שקובע דרך אחידה לייצג תמונה בעזרת ביטים.
                                                                                        \n", "בסופו של דבר, עבור התוכנה החתול שלכם הוא בסך הכול משבצות קטנטנות בצבעים שונים שמצוירות זו על יד זו.\n", "

                                                                                        \n", - "\n", - "

                                                                                        \n", + "

                                                                                        \n", " ייצוג מסוים של קובץ נקרא \"פורמט\", או בעברית \"תַּסְדִיר\".\n", "

                                                                                        " ] @@ -177,16 +167,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### קבצים טקסטואליים וקבצים בינאריים" + "### קבצים טקסטואליים וקבצים בינאריים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                        \n", - "חלק מהקבצים, כמו מסמכי טקסט או תוכניות פייתון, יכולים להיות קבצים טקסטואליים.
                                                                                        \n", - "ישנם סוגי קבצים טקסטואליים נוספים, כמו CSV שמייצג מידע טבלאי באמצעות טקסט, או HTML שמייצג קוד שבעזרתו המחשב יודע להציג דף אינטרנט.
                                                                                        \n", + "

                                                                                        \n", + "חלק מהקבצים, כמו מסמכי טקסט או תוכניות פייתון, יכולים להיות קבצים טקסטואליים.
                                                                                        \n", + "ישנם סוגי קבצים טקסטואליים נוספים, כמו CSV שמייצג מידע טבלאי באמצעות טקסט, או HTML שמייצג קוד שבעזרתו המחשב יודע להציג דף אינטרנט.
                                                                                        \n", "המשותף לקבצים האלו הוא שאם ממירים את הביטים שמהם הם מורכבים לתווים, מתקבלת תוצאה שנוח לבני אדם לקרוא, ולא רק למחשב.\n", "

                                                                                        " ] @@ -196,8 +186,8 @@ "metadata": {}, "source": [ "
                                                                                        \n", - " \"שני\n", - "
                                                                                        מימין ניתן לראות קובץ CSV פתוח באקסל, ומשמאל את הייצוג הטקסטואלי שלו.
                                                                                        \n", + "\"שני\n", + "
                                                                                        מימין ניתן לראות קובץ CSV פתוח באקסל, ומשמאל את הייצוג הטקסטואלי שלו.
                                                                                        \n", "
                                                                                        " ] }, @@ -205,9 +195,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                        \n", + "ישנם גם סוגי קבצים אחרים שלא נועדו לקריאה על־ידי עין אנושית.
                                                                                        \n", + "קבצים כאלו נקראים \"קבצים בינאריים\", ונלמד לטפל בחלק מהם בשלב מתקדם יותר בקורס.
                                                                                        \n", "

                                                                                        " ] }, @@ -215,7 +205,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                        \n", + "

                                                                                        \n", " לפניכם דוגמה לכמה סוגי קבצים בינאריים:\n", "

                                                                                        " ] @@ -224,12 +214,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                          \n", - "
                                                                                        • MP3 – תסדיר המיועד עבור קובצי שמע.
                                                                                        • \n", - "
                                                                                        • PNG – תסדיר לייצוג תמונות.
                                                                                        • \n", - "
                                                                                        • PDF – תסדיר המיועד עבור תצוגה מדויקת של מסמכים.
                                                                                        • \n", - "
                                                                                        • XLSX – תסדיר המיועד לאחסון מידע בגיליונות אלקטרוניים (לדוגמה, בעזרת Excel).
                                                                                        • \n", - "
                                                                                        • EXE – תסדיר המיועד למערכת ההפעלה חלונות, ומפרט אילו פקודות יש לבצע כדי שתוכנה תרוץ.
                                                                                        • \n", + "
                                                                                            \n", + "
                                                                                          • MP3 – תסדיר המיועד עבור קובצי שמע.
                                                                                          • \n", + "
                                                                                          • PNG – תסדיר לייצוג תמונות.
                                                                                          • \n", + "
                                                                                          • PDF – תסדיר המיועד עבור תצוגה מדויקת של מסמכים.
                                                                                          • \n", + "
                                                                                          • XLSX – תסדיר המיועד לאחסון מידע בגיליונות אלקטרוניים (לדוגמה, בעזרת Excel).
                                                                                          • \n", + "
                                                                                          • EXE – תסדיר המיועד למערכת ההפעלה חלונות, ומפרט אילו פקודות יש לבצע כדי שתוכנה תרוץ.
                                                                                          • \n", "
                                                                                          " ] }, @@ -238,8 +228,8 @@ "metadata": {}, "source": [ "
                                                                                          \n", - " \"שני\n", - "
                                                                                          מימין ניתן לראות קובץ PNG פתוח בתוכנה להצגת תמונות, ומשמאל את הייצוג הבינארי שלו כשמנסים להמיר אותו לטקסט.
                                                                                          \n", + "\"שני\n", + "
                                                                                          מימין ניתן לראות קובץ PNG פתוח בתוכנה להצגת תמונות, ומשמאל את הייצוג הבינארי שלו כשמנסים להמיר אותו לטקסט.
                                                                                          \n", " קל לראות ש־PNG אינו תסדיר טקסטואלי.
                                                                                          \n", "
                                                                                          " ] @@ -248,7 +238,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", + "

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

                                                                                          " ] @@ -257,15 +247,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## טיפול בקבצים" + "## טיפול בקבצים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", - " אם בעבר השתמשנו בפנקס כדי לשמור מלל, הרי שכיום שימוש בקבצים ממוחשבים עושה הכול לקל ומהיר.
                                                                                          \n", + "

                                                                                          \n", + " אם בעבר השתמשנו בפנקס כדי לשמור מלל, הרי שכיום שימוש בקבצים ממוחשבים עושה הכול לקל ומהיר.
                                                                                          \n", " על קבצים ממוחשבים אפשר לבצע חישובים מסובכים בתוך חלקיק שנייה, ויתרון זה מעניק לנו יכולות שלא היו קיימות בעבר.\n", "

                                                                                          " ] @@ -274,9 +264,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                          \n", + " קבצים הם מקור מצוין לקלט ולפלט עבור התוכניות שאנחנו כותבים.
                                                                                          \n", + " כמקור קלט, הם יכולים לכלול שורות רבות או מידע מורכב מהרגיל.
                                                                                          \n", " כפלט, הם מאפשרים לנו לשמור מידע בין הרצה להרצה, להעביר את המידע ממקום למקום בקלות ולייצג מידע מורכב בפשטות.\n", "

                                                                                          " ] @@ -285,8 +275,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", - "בקובץ passwords.txt שנמצא בתוך תיקיית resources, אספנו לכם את 25 הסיסמאות הנפוצות ביותר בעולם.
                                                                                          \n", + "

                                                                                          \n", + "בקובץ passwords.txt שנמצא בתוך תיקיית resources, אספנו לכם את 25 הסיסמאות הנפוצות ביותר בעולם.
                                                                                          \n", "בתור התחלה, ננסה להציץ במה שכתוב בתוך הקובץ בעזרת פייתון. \n", "

                                                                                          " ] @@ -295,17 +285,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פתיחת קובץ" + "### פתיחת קובץ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", - "הפונקציה open מאפשרת לנו לפתוח קובץ בעזרת פייתון, כדי להשתמש בו בהמשך התוכנית.
                                                                                          \n", - "היא מקבלת 2 פרמטרים: הראשון הוא הנתיב לקובץ, והשני הוא צורת הגישה לקובץ, שעליה מייד נסביר.
                                                                                          \n", - "הפונקציה מחזירה ערך שנקרא File handler, מעין מצביע על הקובץ שעליו נוכל לבצע פעולות.
                                                                                          \n", + "

                                                                                          \n", + "הפונקציה open מאפשרת לנו לפתוח קובץ בעזרת פייתון, כדי להשתמש בו בהמשך התוכנית.
                                                                                          \n", + "היא מקבלת 2 פרמטרים: הראשון הוא הנתיב לקובץ, והשני הוא צורת הגישה לקובץ, שעליה מייד נסביר.
                                                                                          \n", + "הפונקציה מחזירה ערך שנקרא File handler, מעין מצביע על הקובץ שעליו נוכל לבצע פעולות.
                                                                                          \n", "

                                                                                          " ] }, @@ -313,13 +303,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", + "

                                                                                          \n", "צורת הגישה לקובץ תיבחר לפי המטרה שלשמה אנחנו פותחים אותו:\n", "

                                                                                          \n", - "
                                                                                            \n", - "
                                                                                          • אם אנחנו מעוניינים לקרוא את הקובץ, צורת הגישה שנבחר תהיה 'r' – קריאה, read.
                                                                                          • \n", - "
                                                                                          • אם אנחנו מעוניינים לכתוב אל הקובץ ולדרוס את מה שקיים בו, צורת הגישה שנבחר תהיה 'w' – כתיבה, write.
                                                                                          • \n", - "
                                                                                          • אם אנחנו מעוניינים להוסיף אל הקובץ, צורת הגישה שנבחר תהיה 'a' – הוספה, append.
                                                                                          • \n", + "
                                                                                              \n", + "
                                                                                            • אם אנחנו מעוניינים לקרוא את הקובץ, צורת הגישה שנבחר תהיה 'r' – קריאה, read.
                                                                                            • \n", + "
                                                                                            • אם אנחנו מעוניינים לכתוב אל הקובץ ולדרוס את מה שקיים בו, צורת הגישה שנבחר תהיה 'w' – כתיבה, write.
                                                                                            • \n", + "
                                                                                            • אם אנחנו מעוניינים להוסיף אל הקובץ, צורת הגישה שנבחר תהיה 'a' – הוספה, append.
                                                                                            • \n", "
                                                                                            " ] }, @@ -327,16 +317,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                            \n", - "
                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                            \n", - "
                                                                                            \n", - "

                                                                                            \n", - " הפרמטר השני, צורת הגישה לקובץ, הוא מחרוזת.
                                                                                            \n", + "

                                                                                            \n", + "
                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                            \n", + "
                                                                                            \n", + "

                                                                                            \n", + " הפרמטר השני, צורת הגישה לקובץ, הוא מחרוזת.
                                                                                            \n", " טעות נפוצה היא לשים שם r, w או a בלי גרשיים סביב.\n", "

                                                                                            \n", - "
                                                                                            \n", + "
                                                                                            \n", "
                                                                                            " ] }, @@ -344,7 +334,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "נתחיל בפתיחת הקובץ, ובהשמה של ה־file handler למשתנה:\n", "

                                                                                            " ] @@ -362,7 +352,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "כך נראה הסוג של file handler המצביע לקובץ טקסטואלי:\n", "

                                                                                            " ] @@ -380,15 +370,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### קריאת קובץ" + "### קריאת קובץ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "עכשיו, כשהקובץ פתוח, נוכל להשתמש בו.
                                                                                            \n", + "

                                                                                            \n", + "עכשיו, כשהקובץ פתוח, נוכל להשתמש בו.
                                                                                            \n", "נבקש מפייתון לקרוא את תוכן הקובץ באמצעות הפעולה read, ונבצע השמה של התוכן שחזר מהפעולה, למשתנה:\n", "

                                                                                            " ] @@ -407,7 +397,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "נשים לב שהערך שחזר לנו מפעולת הקריאה הוא מחרוזת לכל דבר:\n", "

                                                                                            " ] @@ -425,8 +415,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "זיכרו ששורות חדשות מיוצגות על ידי התו \\n, וכך גם ב־common_passwords:\n", + "

                                                                                            \n", + "זיכרו ששורות חדשות מיוצגות על ידי התו \\n, וכך גם ב־common_passwords:\n", "

                                                                                            " ] }, @@ -443,16 +433,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                            \n", - "
                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                            \n", - "
                                                                                            \n", - "

                                                                                            \n", - " פתחו את הקובץ וקראו אותו בעצמכם, קבלו מהמשתמש את הסיסמה שלו, והדפיסו אם היא בין 25 הסיסמאות הנפוצות ביותר.
                                                                                            \n", - " בונוס: אם היא בין 25 הסיסמאות הנפוצות, החזירו את המיקום שלה ברשימה.\n", + "

                                                                                            \n", + "
                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                            \n", + "
                                                                                            \n", + "

                                                                                            \n", + " פתחו את הקובץ וקראו אותו בעצמכם, קבלו מהמשתמש את הסיסמה שלו, והדפיסו אם היא בין 25 הסיסמאות הנפוצות ביותר.
                                                                                            \n", + "בונוס: אם היא בין 25 הסיסמאות הנפוצות, החזירו את המיקום שלה ברשימה.\n", "

                                                                                            \n", - "
                                                                                            \n", + "
                                                                                            \n", "
                                                                                            " ] }, @@ -460,14 +450,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הסמן" + "### הסמן" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "אם ננסה לקרוא שוב את הקובץ, נגלה תופעה מוזרה מעט:\n", "

                                                                                            " ] @@ -496,8 +486,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "קריאה נוספת של הקובץ החזירה לנו הפעם שהוא ריק!
                                                                                            \n", + "

                                                                                            \n", + "קריאה נוספת של הקובץ החזירה לנו הפעם שהוא ריק!
                                                                                            \n", "ודאי תשמחו לגלות שזו התנהגות צפויה – הכל באשמתו של הסמן.\n", "

                                                                                            " ] @@ -506,9 +496,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "תופתעו לדעת שאתם כבר מכירים את הרעיון של סמן!
                                                                                            \n", - "דמיינו שאתם פותחים מסמך לעריכה, או אפילו פותרים תרגיל במחברת.
                                                                                            \n", + "

                                                                                            \n", + "תופתעו לדעת שאתם כבר מכירים את הרעיון של סמן!
                                                                                            \n", + "דמיינו שאתם פותחים מסמך לעריכה, או אפילו פותרים תרגיל במחברת.
                                                                                            \n", "נסו להיזכר בקו המהבהב שמסמן לכם את המיקום של התו הבא שתכתבו.\n", "

                                                                                            " ] @@ -517,9 +507,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "כאשר אנחנו פותחים קובץ לקריאה בעזרת פייתון, הסמן (באנגלית: cursor) מצביע לתחילת הקובץ.
                                                                                            \n", - "ברגע שאתם מבקשים מפייתון לקרוא את הקובץ בעזרת הפעולה read, היא קוראת מהמקום שבו נמצא הסמן ועד סוף הקובץ.
                                                                                            \n", + "

                                                                                            \n", + "כאשר אנחנו פותחים קובץ לקריאה בעזרת פייתון, הסמן (באנגלית: cursor) מצביע לתחילת הקובץ.
                                                                                            \n", + "ברגע שאתם מבקשים מפייתון לקרוא את הקובץ בעזרת הפעולה read, היא קוראת מהמקום שבו נמצא הסמן ועד סוף הקובץ.
                                                                                            \n", "בזמן הקריאה הסמן יעבור לסוף הקובץ, ולכן כשתנסו לקרוא אותו שוב – תקבלו מחרוזת ריקה.\n", "

                                                                                            " ] @@ -528,14 +518,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### seek" + "#### seek" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "כדי להחזיר את הסמן לתחילת הקובץ, נשתמש בפעולה seek ונבקש ממנה להחזיר את הסמן כך שיצביע למקום 0 – לפני התו הראשון:\n", "

                                                                                            " ] @@ -562,14 +552,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### tell" + "#### tell" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "ניתן לראות איפה הסמן נמצא באמצעות הפעולה tell:\n", "

                                                                                            " ] @@ -607,7 +597,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

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

                                                                                            " ] @@ -616,16 +606,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### קריאה בצורות נוספות" + "### קריאה בצורות נוספות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "לעיתים, בייחוד כאשר מדובר בקובץ גדול, נעדיף לקרוא בכל פעם רק חלק מהקובץ.
                                                                                            \n", - "נוכל לבחור לקרוא מספר מסוים של תווים באמצעות הפעולה read שאנחנו כבר מכירים,
                                                                                            \n", + "

                                                                                            \n", + "לעיתים, בייחוד כאשר מדובר בקובץ גדול, נעדיף לקרוא בכל פעם רק חלק מהקובץ.
                                                                                            \n", + "נוכל לבחור לקרוא מספר מסוים של תווים באמצעות הפעולה read שאנחנו כבר מכירים,
                                                                                            \n", "אלא שהפעם נעביר לה ארגומנט שיורה לה כמה תווים לקרוא:\n", "

                                                                                            " ] @@ -644,7 +634,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "כדאי לזכור שהסמן יצביע עכשיו על מיקום 10, והפעלה נוספת של פעולת הקריאה תמשיך מהמקום הזה:\n", "

                                                                                            " ] @@ -662,8 +652,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "פייתון גם מאפשרת לנו לקרוא עד סוף השורה הנוכחית, שעליה נמצא הסמן, באמצעות הפעולה readline.
                                                                                            \n", + "

                                                                                            \n", + "פייתון גם מאפשרת לנו לקרוא עד סוף השורה הנוכחית, שעליה נמצא הסמן, באמצעות הפעולה readline.
                                                                                            \n", "שימו לב שהשורה תסתיים בתווים המייצגים שורה חדשה:\n", "

                                                                                            " ] @@ -682,8 +672,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "לקריאת כל השורות בקובץ, ניתן להשתמש בפעולה readlines, שתחזיר לנו רשימת מחרוזות.
                                                                                            \n", + "

                                                                                            \n", + "לקריאת כל השורות בקובץ, ניתן להשתמש בפעולה readlines, שתחזיר לנו רשימת מחרוזות.
                                                                                            \n", "כל מחרוזת ברשימה מייצגת שורה אחת בקובץ:\n", "

                                                                                            " ] @@ -708,16 +698,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                            \n", - "
                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                            \n", - "
                                                                                            \n", - "

                                                                                            \n", - " כתבו פונקציה שמקבלת נתיב לקובץ, ומחזירה רשימה שבה כל איבר הוא שורה בקובץ.
                                                                                            \n", + "

                                                                                            \n", + "
                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                            \n", + "
                                                                                            \n", + "

                                                                                            \n", + " כתבו פונקציה שמקבלת נתיב לקובץ, ומחזירה רשימה שבה כל איבר הוא שורה בקובץ.
                                                                                            \n", " בניגוד לפעולה readlines, דאגו שהמחרוזות ברשימה לא יסתיימו בתו שמייצג ירידת שורה.\n", "

                                                                                            \n", - "
                                                                                            \n", + "
                                                                                            \n", "
                                                                                            " ] }, @@ -725,17 +715,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סגירת קובץ" + "### סגירת קובץ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                            " ] @@ -744,7 +734,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "לא מדובר בפעולה מסובכת מדי. כל מה שתצטרכו לעשות הוא להשתמש בפעולה close:\n", "

                                                                                            " ] @@ -762,7 +752,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "שימו לב שכל ניסיון לעשות שימוש בקובץ אחרי סגירתו, ייכשל:\n", "

                                                                                            " ] @@ -780,14 +770,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### כתיבה לקובץ" + "### כתיבה לקובץ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "נסתכל שוב על המידע שראינו בתרגיל על הפוקימונים:\n", "

                                                                                            " ] @@ -826,8 +816,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "הפעם נכתוב אותו לתוך קובץ בתסדיר CSV.
                                                                                            \n", + "

                                                                                            \n", + "הפעם נכתוב אותו לתוך קובץ בתסדיר CSV.
                                                                                            \n", "כדי לכתוב לקובץ נשתמש בפעולה write, לאחר שנפתח את הקובץ במצב כתיבה (w).\n", "

                                                                                            " ] @@ -836,15 +826,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                            \n", - "
                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                            \n", - "
                                                                                            \n", - "

                                                                                            \n", - " זהירות! פתיחת קובץ קיים במצב w תמחק את התוכן שלו מיידית.\n", + "

                                                                                            \n", + "
                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                            \n", + "
                                                                                            \n", + "

                                                                                            \n", + "זהירות! פתיחת קובץ קיים במצב w תמחק את התוכן שלו מיידית.\n", "

                                                                                            \n", - "
                                                                                            \n", + "
                                                                                            \n", "
                                                                                            " ] }, @@ -852,16 +842,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                            \n", - "
                                                                                            \n", - " \"טיפ\" \n", - "
                                                                                            \n", - "
                                                                                            \n", - "

                                                                                            \n", - " אם פתחנו קובץ לכתיבה והנתיב אליו לא קיים במערכת שלנו, פייתון תבדוק אם התיקייה שמעליו קיימת.
                                                                                            \n", + "

                                                                                            \n", + "
                                                                                            \n", + "\"טיפ\"\n", + "
                                                                                            \n", + "
                                                                                            \n", + "

                                                                                            \n", + " אם פתחנו קובץ לכתיבה והנתיב אליו לא קיים במערכת שלנו, פייתון תבדוק אם התיקייה שמעליו קיימת.
                                                                                            \n", " אם כן – פייתון תיצור את הקובץ בשבילנו.\n", "

                                                                                            \n", - "
                                                                                            \n", + "
                                                                                            \n", "
                                                                                            " ] }, @@ -890,7 +880,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "המספר שפייתון מחזירה הוא כמות התווים שייכתבו לקובץ.\n", "

                                                                                            " ] @@ -899,9 +889,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "אם תחפשו את הקובץ במחשב ותפתחו אותו, תגלו שפייתון עדיין לא כתבה אליו את הנתונים.
                                                                                            \n", - "פייתון שומרת את הנתונים שביקשתם לכתוב בצד במנגנון זיכרון זמני שנקרא buffer (\"מִכְלָא\" בעברית, תודה ששאלתם), ותכתוב אותם לקובץ כשתסגרו אותו.
                                                                                            \n", + "

                                                                                            \n", + "אם תחפשו את הקובץ במחשב ותפתחו אותו, תגלו שפייתון עדיין לא כתבה אליו את הנתונים.
                                                                                            \n", + "פייתון שומרת את הנתונים שביקשתם לכתוב בצד במנגנון זיכרון זמני שנקרא buffer (\"מִכְלָא\" בעברית, תודה ששאלתם), ותכתוב אותם לקובץ כשתסגרו אותו.
                                                                                            \n", "תוכלו להכריח את פייתון לכתוב לקובץ עוד לפני שסגרתם אותו באמצעות הפעולה flush:\n", "

                                                                                            " ] @@ -919,7 +909,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "לסיום, לא נשכח לסגור את הקובץ כשאנחנו יודעים שכבר לא נשתמש בו:\n", "

                                                                                            " ] @@ -937,17 +927,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                            \n", - "
                                                                                            \n", - " \"טיפ\" \n", - "
                                                                                            \n", - "
                                                                                            \n", - "

                                                                                            \n", - " כשאתם בתוך המחברת, ניתן להשתמש בסימן קריאה כדי להריץ פקודות או תוכניות שלא קשורות לפייתון.
                                                                                            \n", - " לדוגמה, הפקודה: !pokemon.csv תריץ את הקובץ שכתבנו.
                                                                                            \n", + "

                                                                                            \n", + "
                                                                                            \n", + "\"טיפ\"\n", + "
                                                                                            \n", + "
                                                                                            \n", + "

                                                                                            \n", + " כשאתם בתוך המחברת, ניתן להשתמש בסימן קריאה כדי להריץ פקודות או תוכניות שלא קשורות לפייתון.
                                                                                            \n", + " לדוגמה, הפקודה: !pokemon.csv תריץ את הקובץ שכתבנו.
                                                                                            \n", " שימו לב שלא תוכלו להריץ שום דבר אחר במחברת עד שתסגרו את הקובץ.\n", "

                                                                                            \n", - "
                                                                                            \n", + "
                                                                                            \n", "
                                                                                            " ] }, @@ -964,15 +954,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הוספה לקובץ" + "### הוספה לקובץ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "ניתן לפתוח קובץ במצב 'w' אם נרצה לכתוב לקובץ חדש, או לדרוס קובץ קיים.
                                                                                            \n", + "

                                                                                            \n", + "ניתן לפתוח קובץ במצב 'w' אם נרצה לכתוב לקובץ חדש, או לדרוס קובץ קיים.
                                                                                            \n", "אם נרצה להוסיף שורות לקובץ קיים, נפתח את הקובץ במצב ההוספה 'a', שמסמן append.\n", "

                                                                                            " ] @@ -981,7 +971,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "נוסיף את פוקימון מספר 20, רטיקייט, לקובץ הפוקימונים:\n", "

                                                                                            " ] @@ -1008,7 +998,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "הוספת תוכן לקובץ במצב הוספה תתבצע באמצעות הפעולה write, בדיוק כמו בכתיבת קובץ חדש:\n", "

                                                                                            " ] @@ -1035,16 +1025,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## with" + "## with" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "מילת המפתח with מאפשרת לנו לאגד כמה שורות באותו הקשר.
                                                                                            \n", - "בהקשר של קבצים, היא מאפשרת לנו לאגד תחתיה שורות שמטרתן טיפול בקובץ מסוים.
                                                                                            \n", + "

                                                                                            \n", + "מילת המפתח with מאפשרת לנו לאגד כמה שורות באותו הקשר.
                                                                                            \n", + "בהקשר של קבצים, היא מאפשרת לנו לאגד תחתיה שורות שמטרתן טיפול בקובץ מסוים.
                                                                                            \n", "לדוגמה, השורות הבאות:\n", "

                                                                                            " ] @@ -1067,7 +1057,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", " יכולה להיכתב אחרת בעזרת מילת המפתח with:\n", "

                                                                                            " ] @@ -1089,7 +1079,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", " שימו לב לצורת השימוש ב־with:\n", "

                                                                                            " ] @@ -1098,13 +1088,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                            1. כתבנו את מילת המפתח with.
                                                                                            2. \n", - "
                                                                                            3. מייד לאחר מכן השתמשנו בפונקציה open כדי לפתוח את הקובץ עם הארגומנטים שרצינו.
                                                                                            4. \n", - "
                                                                                            5. השתמשנו במילת המפתח as.
                                                                                            6. \n", - "
                                                                                            7. הכנסנו את שם המשתנה שרצינו שבו ישמר ה־file handler.
                                                                                            8. \n", - "
                                                                                            9. כתבנו נקודתיים כדי לסיים את השורה.
                                                                                            10. \n", - "
                                                                                            11. השתמשנו בהזחה, ואז כתבנו את הפעולות שאנחנו רוצים לעשות בהקשר לקובץ.
                                                                                            12. \n", + "
                                                                                                \n", + "
                                                                                              1. כתבנו את מילת המפתח with.
                                                                                              2. \n", + "
                                                                                              3. מייד לאחר מכן השתמשנו בפונקציה open כדי לפתוח את הקובץ עם הארגומנטים שרצינו.
                                                                                              4. \n", + "
                                                                                              5. השתמשנו במילת המפתח as.
                                                                                              6. \n", + "
                                                                                              7. הכנסנו את שם המשתנה שרצינו שבו ישמר ה־file handler.
                                                                                              8. \n", + "
                                                                                              9. כתבנו נקודתיים כדי לסיים את השורה.
                                                                                              10. \n", + "
                                                                                              11. השתמשנו בהזחה, ואז כתבנו את הפעולות שאנחנו רוצים לעשות בהקשר לקובץ.
                                                                                              12. \n", "
                                                                                              " ] }, @@ -1112,8 +1102,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " בתור מתכנתים, אתם בוחרים איך לכתוב את הקוד שלכם.
                                                                                              \n", + "

                                                                                              \n", + " בתור מתכנתים, אתם בוחרים איך לכתוב את הקוד שלכם.
                                                                                              \n", " ובכל זאת, קל לראות את היתרונות של שימוש ב־with: הקוד נעשה קריא ומסודר יותר, והקובץ נסגר לבד כשמסתיימת ההזחה.\n", "

                                                                                              " ] @@ -1122,8 +1112,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " כתיבת קוד עם with היא פשוטה יותר ממה שנראה בהתחלה –
                                                                                              \n", + "

                                                                                              \n", + " כתיבת קוד עם with היא פשוטה יותר ממה שנראה בהתחלה –
                                                                                              \n", " 5 הסעיפים הראשונים התייחסו לשורה הראשונה, ששקולה לשורה הראשונה והרביעית בקוד בלי ה־with.\n", "

                                                                                              " ] @@ -1132,14 +1122,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              קובץ טקסטואלי
                                                                                              קובץ שאפשר להמיר את הבייטים שבו לתווים, ומקבלים קובץ שקריא עבור בני אדם.
                                                                                              \n", "
                                                                                              קובץ בינארי
                                                                                              קובץ שהתוכן שלו לא נועד לקריאה על־ידי עין אנושית.
                                                                                              \n", "
                                                                                              סמן
                                                                                              מצביע על המיקום הנוכחי בקובץ, שממנו יתבצעו הפעולות (קריאה, כתיבה וכדומה).
                                                                                              \n", @@ -1153,24 +1143,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגולים" + "## תרגולים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מי דגנים בריאים?" + "### מי דגנים בריאים?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " בקובץ cereal.csv שנמצא בתיקיית resources, ישנו מידע תזונתי על מִדְגַּנִּים שונים (יענו, דגני בוקר).
                                                                                              \n", - " ככל שהמדגנים שמופיעים בשורה מסוימת בריאים יותר, כך המספר שמופיע לידם בעמודה rating גבוה יותר.
                                                                                              \n", - " מצאו את המדגנים הבריאים ביותר והדפיסו את שמם לצד הציון שקיבלו.
                                                                                              \n", + "

                                                                                              \n", + " בקובץ cereal.csv שנמצא בתיקיית resources, ישנו מידע תזונתי על מִדְגַּנִּים שונים (יענו, דגני בוקר).
                                                                                              \n", + " ככל שהמדגנים שמופיעים בשורה מסוימת בריאים יותר, כך המספר שמופיע לידם בעמודה rating גבוה יותר.
                                                                                              \n", + " מצאו את המדגנים הבריאים ביותר והדפיסו את שמם לצד הציון שקיבלו.
                                                                                              \n", " קרדיט: את הקובץ הבאנו מכאן.\n", "

                                                                                              " ] @@ -1179,15 +1169,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תקווה מארחת" + "### תקווה מארחת" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "בקובץ hope.txt שנמצא בתיקיית resources, נמצאת אחת הפואמות המהממות של אמילי דיקנסון, תִּקְוָה הִיא בַּעֲלַת-הַנוֹצָה.
                                                                                              \n", + "

                                                                                              \n", + "בקובץ hope.txt שנמצא בתיקיית resources, נמצאת אחת הפואמות המהממות של אמילי דיקנסון, תִּקְוָה הִיא בַּעֲלַת-הַנוֹצָה.
                                                                                              \n", "אך אבוי! הפואמה התבלגנה, וכעת סדר המילים בכל שורה הוא הפוך.\n", "

                                                                                              " ] @@ -1196,7 +1186,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "במקום:\n", "

                                                                                              " ] @@ -1205,8 +1195,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - " תִּקְוָה הִיא בַּעֲלַת-הַנוֹצָה
                                                                                              \n", + "
                                                                                              \n", + " תִּקְוָה הִיא בַּעֲלַת-הַנוֹצָה
                                                                                              \n", " זוּ בַּנְּשָׁמָה תִשְׁכֹּן –\n", "
                                                                                              " ] @@ -1215,7 +1205,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "מופיע:\n", "

                                                                                              " ] @@ -1224,8 +1214,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - " בַּעֲלַת-הַנוֹצָה הִיא תִּקְוָה
                                                                                              \n", + "
                                                                                              \n", + " בַּעֲלַת-הַנוֹצָה הִיא תִּקְוָה
                                                                                              \n", " – תִשְׁכֹּן בַּנְּשָׁמָה זוּ\n", "
                                                                                              " ] @@ -1234,8 +1224,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "שמרו גיבוי של הקובץ, וכתבו קוד שמסדר את הפואמה המבולגנת.
                                                                                              \n", + "

                                                                                              \n", + "שמרו גיבוי של הקובץ, וכתבו קוד שמסדר את הפואמה המבולגנת.
                                                                                              \n", "שמרו את הפואמה המסודרת בקובץ חדש ששמו hope2.txt.\n", "

                                                                                              " ] @@ -1244,16 +1234,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"אזהרה!\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " זהירות! יש פה בעיה שלא למדנו איך לתקן.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"אזהרה!\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + "זהירות! יש פה בעיה שלא למדנו איך לתקן.
                                                                                              \n", " התרגיל בודק גם מה הבנתם מהשיעור על משאבים ברשת בשבוע שעבר :)\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] } diff --git a/week3/4_List_Methods.ipynb b/week3/4_List_Methods.ipynb index 9601cd4..5a5809c 100644 --- a/week3/4_List_Methods.ipynb +++ b/week3/4_List_Methods.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# פעולות על רשימות" + "# פעולות על רשימות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " עד כה למדנו שישנם שני אופרטורים חשבוניים שעובדים על רשימות: חיבור וכפל.
                                                                                              \n", - " חיבור משרשר רשימה אחת לאחרת, וכפל משרשר רשימה לעצמה כמה פעמים.
                                                                                              \n", + "

                                                                                              \n", + " עד כה למדנו שישנם שני אופרטורים חשבוניים שעובדים על רשימות: חיבור וכפל.
                                                                                              \n", + " חיבור משרשר רשימה אחת לאחרת, וכפל משרשר רשימה לעצמה כמה פעמים.
                                                                                              \n", " ניזכר בדוגמאות:\n", "

                                                                                              " ] @@ -65,7 +65,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", " למדנו גם שאפשר להשוות בין רשימות בעזרת אופרטורי השוואה, שעליהם למדנו בשיעור על ביטויים בוליאניים.\n", "

                                                                                              " ] @@ -101,7 +101,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", " השבוע כבר הספקנו ללמוד על חיתוכים (Slicing), כך שיש לנו כבר ידע רב באשר לשימוש ברשימות.\n", "

                                                                                              " ] @@ -122,8 +122,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " למרות כל הידע המועיל שצברנו עד כה, טרם נגענו בפעולות השייכות לנתונים מסוג רשימה.
                                                                                              \n", + "

                                                                                              \n", + " למרות כל הידע המועיל שצברנו עד כה, טרם נגענו בפעולות השייכות לנתונים מסוג רשימה.
                                                                                              \n", " הפעולות האלו יתווספו לארגז הכלים שלנו, יקלו על כתיבת הקוד ויעשו אותו קריא יותר.\n", "

                                                                                              " ] @@ -132,14 +132,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## פעולות על רשימה" + "## פעולות על רשימה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "נגדיר רשימה שתשמש אותנו לדוגמאות:\n", "

                                                                                              " ] @@ -157,8 +157,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "במהלך הרצת הדוגמאות נשים לב שפעולות על הרשימה משפיעות ישירות על הרשימה עצמה.
                                                                                              \n", + "

                                                                                              \n", + "במהלך הרצת הדוגמאות נשים לב שפעולות על הרשימה משפיעות ישירות על הרשימה עצמה.
                                                                                              \n", "זה אומר שלא נצטרך להשתמש בהשמה כדי לערוך את הרשימה שעליה אנחנו עובדים.\n", "

                                                                                              " ] @@ -167,15 +167,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הוספת איבר" + "### הוספת איבר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "רשימה היא סוג נתונים נוח לשימוש, בין היתר כיוון שניתן להוסיף לה כמה איברים שנרצה.
                                                                                              \n", + "

                                                                                              \n", + "רשימה היא סוג נתונים נוח לשימוש, בין היתר כיוון שניתן להוסיף לה כמה איברים שנרצה.
                                                                                              \n", "נוכל להוסיף איבר לסוף הרשימה באמצעות הפעולה append:\n", "

                                                                                              " ] @@ -194,7 +194,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

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

                                                                                              " ] @@ -213,8 +213,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "שימו לב שבניגוד לשורה שמופיעה למעלה, append מאפשרת להוסיף בכל פעם איבר אחד בלבד.
                                                                                              \n", + "

                                                                                              \n", + "שימו לב שבניגוד לשורה שמופיעה למעלה, append מאפשרת להוסיף בכל פעם איבר אחד בלבד.
                                                                                              \n", "ניסיון להעביר לפעולה append רשימה, נניח, יוסיף את הרשימה המשנית כולה כאיבר אחד בסוף הרשימה הראשית:\n", "

                                                                                              " ] @@ -233,15 +233,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", " כתבו פונקציה שמקבלת מספר, ומחזירה רשימה של כל המספרים החיוביים הזוגיים עד אותו מספר.\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -249,14 +249,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הסרת איבר" + "### הסרת איבר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "נוכל להסיר איבר מסוף הרשימה באמצעות קריאה לפעולה pop:\n", "

                                                                                              " ] @@ -275,7 +275,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "הפעולה הזו תשיג תוצאה דומה לקוד שכתבנו עד היום בצורה המסורבלת הבאה:\n", "

                                                                                              " ] @@ -294,7 +294,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "הפעולה pop מחזירה את הערך שהוציאה, כך שניתן לשמור אותו בצד:\n", "

                                                                                              " ] @@ -314,8 +314,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "הפעולה גם מאפשרת לנו לבחור את המקום שממנו אנחנו מעוניינים להוציא את הערך.
                                                                                              \n", + "

                                                                                              \n", + "הפעולה גם מאפשרת לנו לבחור את המקום שממנו אנחנו מעוניינים להוציא את הערך.
                                                                                              \n", "נעשה זאת בעזרת העברת ארגומנט עם מיקום הערך שאנחנו רוצים להוציא מהרשימה:\n", "

                                                                                              " ] @@ -335,7 +335,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "כדי להסיר יותר מאיבר אחד, ייתכן שעדיין תעדיפו להשתמש בחיתוך רשימות.\n", "

                                                                                              " ] @@ -344,17 +344,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " כתבו פונקציה שמקבלת רשימה, ומחזירה רשימה בסדר איברים הפוך.
                                                                                              \n", - " השתמשו בפעולה pop.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + " כתבו פונקציה שמקבלת רשימה, ומחזירה רשימה בסדר איברים הפוך.
                                                                                              \n", + " השתמשו בפעולה pop.
                                                                                              \n", " לדוגמה: אם תועבר לפונקציה הרשימה [3, 2, 1], הפונקציה תחזיר [1, 2, 3].\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -362,14 +362,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הוספה של כמה איברים" + "### הוספה של כמה איברים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "נוכל להוסיף יותר מאיבר אחד בשימוש יחיד בפעולה extend:\n", "

                                                                                              " ] @@ -389,7 +389,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "במבט ראשון, הפעולה תשיג תוצאה דומה לשרשור רשימות:\n", "

                                                                                              " ] @@ -409,8 +409,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "אבל אחד היתרונות המובהקים של extend הוא שניתן להעביר לה כארגומנט כל iterable שהוא.
                                                                                              \n", + "

                                                                                              \n", + "אבל אחד היתרונות המובהקים של extend הוא שניתן להעביר לה כארגומנט כל iterable שהוא.
                                                                                              \n", "הפעולה extend תפרק את ה־iterable ותוסיף כל איבר בנפרד לרשימה המקורית: \n", "

                                                                                              " ] @@ -431,16 +431,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " כתבו פונקציה שמקבלת רשימה, ומחזירה רשימה המכילה את הרשימה המקורית, ומייד אחריה את אותה רשימה בסדר הפוך.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + " כתבו פונקציה שמקבלת רשימה, ומחזירה רשימה המכילה את הרשימה המקורית, ומייד אחריה את אותה רשימה בסדר הפוך.
                                                                                              \n", " לדוגמה: עבור הרשימה [1, 2, 3] תוחזר הרשימה: [1, 2, 3, 3, 2, 1]\n", - "

                                                                                              \n", - "
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -448,15 +448,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ספירת איברים" + "### ספירת איברים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "כאן לא תמצאו הפתעות מיוחדות. הפעולה count מחזירה את מספר האיברים ברשימה, שזהים לאיבר שהעברתם לה כארגומנט.
                                                                                              \n", + "

                                                                                              \n", + "כאן לא תמצאו הפתעות מיוחדות. הפעולה count מחזירה את מספר האיברים ברשימה, שזהים לאיבר שהעברתם לה כארגומנט.
                                                                                              \n", "נשמע לכם מוכר? נכון! למחרוזות יש פעולה עם שם זהה שעושה בדיוק אותו דבר.\n", "

                                                                                              " ] @@ -476,16 +476,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מציאת איבר" + "### מציאת איבר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "גם הפעולה הזו אמורה להישמע לכם מוכרת.
                                                                                              \n", - "הפעולה index מוצאת את המופע הראשון של האיבר שהעברתם לה כארגומנט.
                                                                                              \n", + "

                                                                                              \n", + "גם הפעולה הזו אמורה להישמע לכם מוכרת.
                                                                                              \n", + "הפעולה index מוצאת את המופע הראשון של האיבר שהעברתם לה כארגומנט.
                                                                                              \n", "כן, גם הפעם למחרוזות יש פעולה באותו שם, שעושה בדיוק אותו דבר.\n", "

                                                                                              " ] @@ -505,15 +505,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"אזהרה!\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"אזהרה!\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", " כמו בפעולת index על מחרוזות, גם כאן הפעולה תזרוק שגיאה אם הערך לא נמצא.\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -521,16 +521,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " כתבו פונקציה שמקבלת רשימה, ומחזירה את מיקום המופע האחרון של האיבר הראשון ברשימה.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + " כתבו פונקציה שמקבלת רשימה, ומחזירה את מיקום המופע האחרון של האיבר הראשון ברשימה.
                                                                                              \n", " לדוגמה, עבור הרשימה [1, 2, 3, 5, 1, 2] החזירו 4, כיוון ש־1 מופיע פעם אחרונה במקום 4 ברשימה.\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -538,15 +538,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מחיקת איבר (שוב?)" + "### מחיקת איבר (שוב?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "הפעם נשתמש בפעולה remove, שבניגוד לפעולה pop מוחקת איבר לפי הערך שלו ולא לפי המיקום שלו.
                                                                                              \n", + "

                                                                                              \n", + "הפעם נשתמש בפעולה remove, שבניגוד לפעולה pop מוחקת איבר לפי הערך שלו ולא לפי המיקום שלו.
                                                                                              \n", "נשים לב שהפעולה תמחק את האיבר הראשון השווה לערך שהועבר כארגומנט, ולא את כל המופעים של אותו ערך.\n", "

                                                                                              " ] @@ -567,16 +567,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " קבלו פונקציה שמקבלת רשימה של חיות, ומחזירה רשימה שבה אין מופעים של החיות camel, rabbit ו־pig.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + " קבלו פונקציה שמקבלת רשימה של חיות, ומחזירה רשימה שבה אין מופעים של החיות camel, rabbit ו־pig.
                                                                                              \n", " לדוגמה, עבור הרשימה: ['camel', 'camel', 'dove', 'pig', 'camel'] תוחזר הרשימה: ['dove']\n", - "

                                                                                              \n", - "
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -584,17 +584,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סידור רשימה" + "### סידור רשימה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "אחת הפעולות הנוחות ביותר שאפשר לבצע על רשימה היא sort, שמסדרת לנו את האיברים ברשימה.
                                                                                              \n", - "אם האיברים הם מחרוזות, הרשימה תסודר בסדר לקסיקוגרפי (אלפביתי).
                                                                                              \n", - "אם האיברים ברשימה הם מספרים (שלמים, עשרוניים או גם וגם), הרשימה תסודר מתמטית מהקטן לגדול.
                                                                                              \n", + "

                                                                                              \n", + "אחת הפעולות הנוחות ביותר שאפשר לבצע על רשימה היא sort, שמסדרת לנו את האיברים ברשימה.
                                                                                              \n", + "אם האיברים הם מחרוזות, הרשימה תסודר בסדר לקסיקוגרפי (אלפביתי).
                                                                                              \n", + "אם האיברים ברשימה הם מספרים (שלמים, עשרוניים או גם וגם), הרשימה תסודר מתמטית מהקטן לגדול.
                                                                                              \n", "אם הרשימה מורכבת מסוגים שונים של איברים שאין ביניהם הגדרת שוויון ברורה (כמו מספרים ומחרוזות), פעולת הסידור תיכשל ותזרוק שגיאה.\n", "

                                                                                              " ] @@ -624,16 +624,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"אזהרה!\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " טעות נפוצה היא השמת התוצאה של sort חזרה למשתנה.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"אזהרה!\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + " טעות נפוצה היא השמת התוצאה של sort חזרה למשתנה.
                                                                                              \n", " כיוון שהפעולה sort משנה את מיקום האיברים בתוך הרשימה ולא מחזירה ערך, השמה חזרה למשתנה תמחק את ערכו.\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -641,17 +641,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " תרגול:\n", - " קבלו מהמשתמש 10 מספרים. מצאו את הערך השלישי הגדול ביותר.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + "תרגול:\n", + " קבלו מהמשתמש 10 מספרים. מצאו את הערך השלישי הגדול ביותר.
                                                                                              \n", " לדוגמה, עבור הקלט הבא: 5, 1, 6, 2, 3, 4, 8, 7, 10, 9, החזירו 8.\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -659,24 +659,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הוספת איבר במקום מסוים" + "### הוספת איבר במקום מסוים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " תרגול:\n", - " קראו בתיעוד של פייתון על הפעולה insert השייכת לערכים מסוג רשימה.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + "תרגול:\n", + " קראו בתיעוד של פייתון על הפעולה insert השייכת לערכים מסוג רשימה.
                                                                                              \n", " הוסיפו דג מימין לכריש (shark) שברשימת animals.\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -684,22 +684,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים נוספים" + "## תרגילים נוספים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### חוטש" + "### חוטש" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " כתבו פונקציה שמקבלת רשימה של רשימות, ומחזירה רשימה שטוחה והפוכה של כל האיברים.
                                                                                              \n", + "

                                                                                              \n", + " כתבו פונקציה שמקבלת רשימה של רשימות, ומחזירה רשימה שטוחה והפוכה של כל האיברים.
                                                                                              \n", " לדוגמה: עבור הרשימה [[1, 2, 3], [4, 5, 6]] החזירו [6, 5, 4, 3, 2, 1].\n", "

                                                                                              " ] @@ -708,15 +708,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### רשימת תיקונים" + "### רשימת תיקונים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " לפניכם קוד שמטרתו היא מציאת המספר הקטן ביותר שהמשתמש הזין.
                                                                                              \n", + "

                                                                                              \n", + " לפניכם קוד שמטרתו היא מציאת המספר הקטן ביותר שהמשתמש הזין.
                                                                                              \n", " הכמנו בקוד 3 טעויות. מצאו אותן ותקנו אותן כך שהקוד יפעל.\n", "

                                                                                              " ] diff --git a/week3/5_Mutability_and_Tuples.ipynb b/week3/5_Mutability_and_Tuples.ipynb index 23a41f0..152f58e 100644 --- a/week3/5_Mutability_and_Tuples.ipynb +++ b/week3/5_Mutability_and_Tuples.ipynb @@ -4,31 +4,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Mutability" + "# Mutability" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הגדרה" + "## הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "המילה Mutable נגזרת מהמילה Mutate, והמשמעות שלה היא \"משהו בר־שינוי\".
                                                                                              \n", - "אנחנו נשתמש בה כדי לתאר טיפוסי נתונים שניתן לשנותם, למשל להוסיף או להחסיר מהם איברים.
                                                                                              \n", - "משמעות המילה Immutable היא \"משהו שאינו בר־שינוי\", נתון שאמור להישאר קבוע אחרי יצירתו.
                                                                                              \n", + "

                                                                                              \n", + "המילה Mutable נגזרת מהמילה Mutate, והמשמעות שלה היא \"משהו בר־שינוי\".
                                                                                              \n", + "אנחנו נשתמש בה כדי לתאר טיפוסי נתונים שניתן לשנותם, למשל להוסיף או להחסיר מהם איברים.
                                                                                              \n", + "משמעות המילה Immutable היא \"משהו שאינו בר־שינוי\", נתון שאמור להישאר קבוע אחרי יצירתו.
                                                                                              \n", "שינוי ערך שהוא Immutable משנה את המהות שלו, ויגרום לו להיחשב ערך אחר לגמרי.\n", "

                                                                                              " ] @@ -37,11 +37,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "נדמיין ארנק שבתוכו שטרות – ניתן להוסיף אליו שטרות או להוציא ממנו שטרות, אבל הארנק יישאר אותו ארנק.
                                                                                              \n", - "כיוון שניתן לשנות את המצב של הארנק בלי לפגוע במהות שלו, ניתן להגיד שארנק הוא Mutable.
                                                                                              \n", - "לעומת זאת, אם אקח את אחד השטרות שנמצאים בתוך הארנק, לא אוכל לשנות בו משהו בלי שאשנה את המהות שלו.
                                                                                              \n", - "שינוי באחד המאפיינים של השטר, כמו המספר שכתוב עליו, יגרור שינוי מהותי שיהפוך אותו לדבר אחר לחלוטין.
                                                                                              \n", + "

                                                                                              \n", + "נדמיין ארנק שבתוכו שטרות – ניתן להוסיף אליו שטרות או להוציא ממנו שטרות, אבל הארנק יישאר אותו ארנק.
                                                                                              \n", + "כיוון שניתן לשנות את המצב של הארנק בלי לפגוע במהות שלו, ניתן להגיד שארנק הוא Mutable.
                                                                                              \n", + "לעומת זאת, אם אקח את אחד השטרות שנמצאים בתוך הארנק, לא אוכל לשנות בו משהו בלי שאשנה את המהות שלו.
                                                                                              \n", + "שינוי באחד המאפיינים של השטר, כמו המספר שכתוב עליו, יגרור שינוי מהותי שיהפוך אותו לדבר אחר לחלוטין.
                                                                                              \n", "ניתן להגיד שהשטר הוא Immutable, בלתי ניתן לשינוי.\n", "

                                                                                              " ] @@ -50,8 +50,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "הערכים ה־Mutable שנכיר בקורס הם מעין \"מכולות\" שמכילות ערכים אחרים.
                                                                                              \n", + "

                                                                                              \n", + "הערכים ה־Mutable שנכיר בקורס הם מעין \"מכולות\" שמכילות ערכים אחרים.
                                                                                              \n", "כרגע אנו מכירים סוג ערך אחד שהוא Mutable – רשימה.\n", "

                                                                                              " ] @@ -60,21 +60,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## כתובות של ערכים" + "## כתובות של ערכים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### ערכים" + "### ערכים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

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

                                                                                              " ] @@ -83,9 +83,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "כשאנחנו יוצרים ערך כלשהו, פייתון מקצה עבורו מקום בזיכרון המחשב ושומרת שם את הערך.
                                                                                              \n", - "מאותו רגע לאותו ערך יש כתובת, שהיא מספר שמייצג את המקום שבו אותו ערך נמצא בזיכרון המחשב.
                                                                                              \n", + "

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

                                                                                              " ] @@ -103,9 +103,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "בשורה למעלה הגדרנו את הערך 9,876,543.
                                                                                              \n", - "אף על פי שלא עשינו עליו פעולה מתוחכמת ולא שמרנו אותו במשתנה, פייתון תשמור את הערך הזה בזיכרון המחשב.
                                                                                              \n", + "

                                                                                              \n", + "בשורה למעלה הגדרנו את הערך 9,876,543.
                                                                                              \n", + "אף על פי שלא עשינו עליו פעולה מתוחכמת ולא שמרנו אותו במשתנה, פייתון תשמור את הערך הזה בזיכרון המחשב.
                                                                                              \n", "לערך 9,876,543 יש כתובת עכשיו.\n", "

                                                                                              " ] @@ -114,8 +114,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "בשורה הבאה \"נקשור\" את השם name לכתובת של הערך המספרי 12,345.
                                                                                              \n", + "

                                                                                              \n", + "בשורה הבאה \"נקשור\" את השם name לכתובת של הערך המספרי 12,345.
                                                                                              \n", "המשתנה name לא באמת \"מכיל\" את הערך 12,345, אלא רק מצביע על הכתובת שבה הערך 12,345 מאוחסן.\n", "

                                                                                              " ] @@ -133,7 +133,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "כשאנחנו מבצעים השמה, אנחנו יוצרים קישור בין שם המשתנה לבין הכתובת של הערך שהשמנו לתוכו.\n", "

                                                                                              " ] @@ -142,13 +142,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "אם ניזכר בדימוי הלייזר מהשיעורים הקודמים, עבור כל פעולת השמה בתוכנית, פייתון: \n", "

                                                                                              \n", - "\n", - "
                                                                                                \n", - "
                                                                                              1. תיצור מצביע לייזר חדש שעליו מודבק שם המשתנה.
                                                                                              2. \n", - "
                                                                                              3. תגרום ללייזר להצביע על המקום בזיכרון שבו מאוחסן הערך המדובר.
                                                                                              4. \n", + "
                                                                                                  \n", + "
                                                                                                1. תיצור מצביע לייזר חדש שעליו מודבק שם המשתנה.
                                                                                                2. \n", + "
                                                                                                3. תגרום ללייזר להצביע על המקום בזיכרון שבו מאוחסן הערך המדובר.
                                                                                                4. \n", "
                                                                                                " ] }, @@ -156,16 +155,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### בדיקת כתובת של ערכים" + "### בדיקת כתובת של ערכים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "הפונקציה id מקבלת כארגומנט ערך, ומחזירה מספר שמייצג את הכתובת שלו – המיקום של הערך בזיכרון.
                                                                                                \n", - "בהקבלה למטאפורת הלייזר, היא מקבלת את ראש הלייזר ומראה לנו לאן הוא מצביע.
                                                                                                \n", + "

                                                                                                \n", + "הפונקציה id מקבלת כארגומנט ערך, ומחזירה מספר שמייצג את הכתובת שלו – המיקום של הערך בזיכרון.
                                                                                                \n", + "בהקבלה למטאפורת הלייזר, היא מקבלת את ראש הלייזר ומראה לנו לאן הוא מצביע.
                                                                                                \n", "נראה דוגמה:\n", "

                                                                                                " ] @@ -186,8 +185,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "בדוגמה האחרונה ניתן לראות ששם המשתנה לא משפיע על המיקום שבו הערכים נשמרים.
                                                                                                \n", + "

                                                                                                \n", + "בדוגמה האחרונה ניתן לראות ששם המשתנה לא משפיע על המיקום שבו הערכים נשמרים.
                                                                                                \n", "לערכים שונים מוקצות כתובות שונות.\n", "

                                                                                                " ] @@ -208,16 +207,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "בדוגמה הגדלנו את ערך המשתנה number מ־100,000 ל־100,001.
                                                                                                \n", + "

                                                                                                \n", + "בדוגמה הגדלנו את ערך המשתנה number מ־100,000 ל־100,001.
                                                                                                \n", "חשוב לזכור שההגדלה מ־100,000 ל־100,001 לא באמת שינתה את הערך השמור במשתנה, אלא גרמה למשתנה להצביע לכתובת אחרת של ערך אחר.\n", "

                                                                                                \n", - "

                                                                                                \n", - "בשורה הראשונה ביקשנו מ־number להצביע לערך 100,000, ולכן כשהרצנו את id(number) קיבלנו את הכתובת של הערך 100,000.
                                                                                                \n", + "

                                                                                                \n", + "בשורה הראשונה ביקשנו מ־number להצביע לערך 100,000, ולכן כשהרצנו את id(number) קיבלנו את הכתובת של הערך 100,000.
                                                                                                \n", "בשורה השנייה ביקשנו מ־number להצביע לערך 100,001, ולכן כשהרצנו את id(number) קיבלנו את הכתובת של הערך 100,001.\n", "

                                                                                                \n", - "

                                                                                                \n", - " עבור שתי השורות הראשונות מודפסת הכתובת של הערך הראשון שיצרנו, 100,000.
                                                                                                \n", + "

                                                                                                \n", + " עבור שתי השורות הראשונות מודפסת הכתובת של הערך הראשון שיצרנו, 100,000.
                                                                                                \n", " עבור שתי השורות האחרונות מודפסת הכתובת של הערך השני שיצרנו, 100,001.\n", "

                                                                                                " ] @@ -226,7 +225,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", "חשוב לדעת שהתייחסות לאותו ערך פעם נוספת עשויה ליצור מופע חדש שלו, שיאוחסן בכתובת אחרת:\n", "

                                                                                                " ] @@ -246,7 +245,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", "אבל השמה של משתנה אחד למשתנה אחר תגרום לכך ששני המשתנים יפנו לאותה כתובת:\n", "

                                                                                                " ] @@ -266,8 +265,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "ניתן לדמיין את המצב האחרון כמו שני ראשי לייזר שמצביעים לאותה כתובת בזיכרון המחשב.
                                                                                                \n", + "

                                                                                                \n", + "ניתן לדמיין את המצב האחרון כמו שני ראשי לייזר שמצביעים לאותה כתובת בזיכרון המחשב.
                                                                                                \n", "

                                                                                                " ] }, @@ -275,15 +274,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### רשימה" + "#### רשימה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "נבדוק אם שינוי של ערך שנמצא בתוך הרשימה יגרום לפייתון לבנות רשימה חדשה.
                                                                                                \n", + "

                                                                                                \n", + "נבדוק אם שינוי של ערך שנמצא בתוך הרשימה יגרום לפייתון לבנות רשימה חדשה.
                                                                                                \n", "אם פייתון תבנה רשימה חדשה אחרי שינוי הערך, נוכל לראות זאת בקלות לפי השינוי במיקום של הרשימה בזיכרון.\n", "

                                                                                                " ] @@ -304,9 +303,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "בדוגמה שינינו ערך ברשימה ששמה my_list, וראינו שהמיקום שלה לא משתנה.
                                                                                                \n", - "זו ההתנהגות שאנחנו מצפים לה מערך שהסוג שלו הוא Mutable – ניתן לשנות אותו מבלי להשפיע על מיקומו בזיכרון המחשב.
                                                                                                \n", + "

                                                                                                \n", + "בדוגמה שינינו ערך ברשימה ששמה my_list, וראינו שהמיקום שלה לא משתנה.
                                                                                                \n", + "זו ההתנהגות שאנחנו מצפים לה מערך שהסוג שלו הוא Mutable – ניתן לשנות אותו מבלי להשפיע על מיקומו בזיכרון המחשב.
                                                                                                \n", "

                                                                                                " ] }, @@ -314,21 +313,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סיכום ביניים" + "### סיכום ביניים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                  \n", - "
                                                                                                • כל ערך שניצור מאוחסן בכתובת, שלא תשתנה במשך כל חייו של הערך.
                                                                                                • \n", - "
                                                                                                • אם ניצור ערך פעמיים, יכול להיות שיהיו שני מופעים שלו בכתובות שונות.
                                                                                                • \n", - "
                                                                                                • משתנה הוא לא יותר מ\"קשירה\" בין שם לכתובת של ערך מסוים.
                                                                                                • \n", - "
                                                                                                • השמה היא הפעולה שקושרת בין שם המשתנה לבין הכתובת של הערך.
                                                                                                • \n", - "
                                                                                                • ייתכן שיותר משם משתנה אחד יצביע לאותה כתובת.
                                                                                                • \n", - "
                                                                                                • ערכים שהסוג שלהם הוא mutable יכולים להשתנות בלי שהכתובת שלהם תשתנה.
                                                                                                • \n", - "
                                                                                                • ערכים שהסוג שלהם הוא immutable לא יכולים להשתנות בלי שהכתובת שלהם תשתנה.
                                                                                                • \n", + "
                                                                                                    \n", + "
                                                                                                  • כל ערך שניצור מאוחסן בכתובת, שלא תשתנה במשך כל חייו של הערך.
                                                                                                  • \n", + "
                                                                                                  • אם ניצור ערך פעמיים, יכול להיות שיהיו שני מופעים שלו בכתובות שונות.
                                                                                                  • \n", + "
                                                                                                  • משתנה הוא לא יותר מ\"קשירה\" בין שם לכתובת של ערך מסוים.
                                                                                                  • \n", + "
                                                                                                  • השמה היא הפעולה שקושרת בין שם המשתנה לבין הכתובת של הערך.
                                                                                                  • \n", + "
                                                                                                  • ייתכן שיותר משם משתנה אחד יצביע לאותה כתובת.
                                                                                                  • \n", + "
                                                                                                  • ערכים שהסוג שלהם הוא mutable יכולים להשתנות בלי שהכתובת שלהם תשתנה.
                                                                                                  • \n", + "
                                                                                                  • ערכים שהסוג שלהם הוא immutable לא יכולים להשתנות בלי שהכתובת שלהם תשתנה.
                                                                                                  • \n", "
                                                                                                  " ] }, @@ -336,21 +335,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## השלכות" + "## השלכות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### רשימות" + "### רשימות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", "נעשה את הניסיון הבא:

                                                                                                  " ] }, @@ -373,10 +372,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", "עם הידע החדש שצברנו, נוכל להגיד ש־str1 ו־str2 מצביעים למקומות שונים, בגלל ההשמה בשורה 3.\n", "

                                                                                                  \n", - "

                                                                                                  \n", + "

                                                                                                  \n", "אבל ברשימות אפשר לשנות את הערכים גם בלי לבצע השמה. מה קורה אז?\n", "

                                                                                                  " ] @@ -400,8 +399,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - "במקרה הזה, גרמנו ל־list2 להצביע לאותו מקום ש־list1 מצביעה עליו.
                                                                                                  \n", + "

                                                                                                  \n", + "במקרה הזה, גרמנו ל־list2 להצביע לאותו מקום ש־list1 מצביעה עליו.
                                                                                                  \n", "מהסיבה הזו, שינוי של list2 ישפיע גם על list1, ושינוי של list1 ישפיע גם על list2.\n", "

                                                                                                  " ] @@ -420,8 +419,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                  \n", + " כדי לבקש מפייתון לא להתנהג כך, צריך להגיד לה במפורש שאנחנו מעוניינים ביצירת רשימה חדשה.
                                                                                                  \n", " ניתן לעשות את זה בקריאה לפעולה list.copy():\n", "

                                                                                                  " ] @@ -445,14 +444,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פרמטרים של פונקציה" + "### פרמטרים של פונקציה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", "נגדיר פונקציה שמקבלת מחרוזת ומשרשרת לסופה את האות Z:\n", "

                                                                                                  " ] @@ -480,12 +479,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", "מה קרה בפועל? למה המחרוזת לא השתנתה גם מחוץ לפונקציה?\n", "

                                                                                                  \n", - "

                                                                                                  \n", - "הערך שהועבר לפרמטר של הפונקציה היה הכתובת של s, שעכשיו גם my_string מצביע עליו.
                                                                                                  \n", - "ברגע שביצענו את ההשמה my_string = my_string + 'Z', יצרנו באגף הימני של ההשמה ערך חדש, וביקשנו מלייזר חדש ששמו my_string להצביע לכתובת שלו.
                                                                                                  \n", + "

                                                                                                  \n", + "הערך שהועבר לפרמטר של הפונקציה היה הכתובת של s, שעכשיו גם my_string מצביע עליו.
                                                                                                  \n", + "ברגע שביצענו את ההשמה my_string = my_string + 'Z', יצרנו באגף הימני של ההשמה ערך חדש, וביקשנו מלייזר חדש ששמו my_string להצביע לכתובת שלו.
                                                                                                  \n", "המשתנה ששמו my_string מצביע כרגע לכתובת של ערך אחר, בזמן שהמשתנה s עדיין מצביע על הערך המקורי.\n", "

                                                                                                  " ] @@ -494,9 +493,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - "במקרה הזה, הפונקציה לא שינתה את הערך של המחרוזת שהעברנו לה כארגומנט.
                                                                                                  \n", - "גם אם היינו רוצים מאוד לעשות את זה – זה לא אפשרי, כיוון שמחרוזות הן immutable.
                                                                                                  \n", + "

                                                                                                  \n", + "במקרה הזה, הפונקציה לא שינתה את הערך של המחרוזת שהעברנו לה כארגומנט.
                                                                                                  \n", + "גם אם היינו רוצים מאוד לעשות את זה – זה לא אפשרי, כיוון שמחרוזות הן immutable.
                                                                                                  \n", "

                                                                                                  " ] }, @@ -504,7 +503,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", "ננסה לעשות אותו דבר עם רשימה:\n", "

                                                                                                  " ] @@ -532,10 +531,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - "ההתרחשות הייתה זהה למה שקרה עם מחרוזות!
                                                                                                  \n", - "זה קרה כיוון שגם פה דרסנו את my_list כך שיצביע לרשימה חדשה שיצרנו.
                                                                                                  \n", - "בצד ימין של ההשמה, יצרנו רשימה חדשה שמכילה את האיברים 2, 8, 20, 28, 50, 82, 126.
                                                                                                  בעצם ההשמה ביקשנו מ־my_list שבתוך הפונקציה להפנות לכתובת של הרשימה החדשה.
                                                                                                  \n", + "

                                                                                                  \n", + "ההתרחשות הייתה זהה למה שקרה עם מחרוזות!
                                                                                                  \n", + "זה קרה כיוון שגם פה דרסנו את my_list כך שיצביע לרשימה חדשה שיצרנו.
                                                                                                  \n", + "בצד ימין של ההשמה, יצרנו רשימה חדשה שמכילה את האיברים 2, 8, 20, 28, 50, 82, 126.
                                                                                                  בעצם ההשמה ביקשנו מ־my_list שבתוך הפונקציה להפנות לכתובת של הרשימה החדשה.
                                                                                                  \n", "ננסה להשתמש בפעולה של צירוף איבר חדש לרשימה, list.append(item), שעליה למדנו השבוע:\n", "

                                                                                                  " ] @@ -563,10 +562,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - "הצלחנו!
                                                                                                  \n", - "הרשימה השתנתה גם בתוך הפונקציה וגם מחוצה לה.
                                                                                                  \n", - "אפשר ללמוד מהדוגמה הזו שכשאנחנו מבצעים השמה לשם משתנה מסוים, אנחנו משנים את הכתובת שאליה הצביע שם המשתנה לכתובת חדשה, ולא עורכים את תוכן משתנה.
                                                                                                  \n", + "

                                                                                                  \n", + "הצלחנו!
                                                                                                  \n", + "הרשימה השתנתה גם בתוך הפונקציה וגם מחוצה לה.
                                                                                                  \n", + "אפשר ללמוד מהדוגמה הזו שכשאנחנו מבצעים השמה לשם משתנה מסוים, אנחנו משנים את הכתובת שאליה הצביע שם המשתנה לכתובת חדשה, ולא עורכים את תוכן משתנה.
                                                                                                  \n", "

                                                                                                  " ] }, @@ -574,16 +573,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### כתיבת פונקציה כראוי" + "### כתיבת פונקציה כראוי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - "כשלמדנו פונקציות, הדגשנו את העובדה שפונקציה היא קטע קוד עצמאי.
                                                                                                  \n", - "ככזו, פונקציה בדרך כלל לא תשנה ערכים של משתנים שלא היא הגדירה.
                                                                                                  \n", + "

                                                                                                  \n", + "כשלמדנו פונקציות, הדגשנו את העובדה שפונקציה היא קטע קוד עצמאי.
                                                                                                  \n", + "ככזו, פונקציה בדרך כלל לא תשנה ערכים של משתנים שלא היא הגדירה.
                                                                                                  \n", "לדוגמה, קטע הקוד שמופיע למעלה ועורך את המשתנה l שהוגדר מחוץ לפונקציה, נחשב להרגל רע.\n", "

                                                                                                  " ] @@ -592,7 +591,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", " הנה קטע הקוד מלמעלה בלי ההדפסות המסרבלות:\n", "

                                                                                                  " ] @@ -615,7 +614,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", " ננסה לרשום קוד זהה, רק שהפעם הפונקציה לא תערוך את המשתנה l:\n", "

                                                                                                  " ] @@ -641,7 +640,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", " לצורת כתיבה זו כמה יתרונות:\n", "

                                                                                                  " ] @@ -650,33 +649,32 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                \n", - "
                                                                                              5. קל יותר להבין מה הפונקציה עושה, גם אם אין לקורא ידע מוקדם בנוגע לשאר הקוד.
                                                                                              6. \n", - "
                                                                                              7. קל יותר למשתמש חיצוני להשתמש בפונקציה מבלי לפחד שיאבד מידע.
                                                                                              8. \n", - "
                                                                                              9. קל יותר לבנות פונקציות נוספות שיסתמכו על ההתנהגות של הפונקציה הזו.
                                                                                              10. \n", - "
                                                                                            " + "
                                                                                              \n", + "
                                                                                            • קל יותר להבין מה הפונקציה עושה, גם אם אין לקורא ידע מוקדם בנוגע לשאר הקוד.
                                                                                            • \n", + "
                                                                                            • קל יותר למשתמש חיצוני להשתמש בפונקציה מבלי לפחד שיאבד מידע.
                                                                                            • \n", + "
                                                                                            • קל יותר לבנות פונקציות נוספות שיסתמכו על ההתנהגות של הפונקציה הזו.
                                                                                            • \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Tuple" + "## Tuple" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### הגדרה" + "### הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " ברוח השיעור על העובדה שרשימות הן Mutable, הגיע הזמן להכיר את \"האח דל התקציב\" שלהן: tuple.
                                                                                              \n", + "

                                                                                              \n", + " ברוח השיעור על העובדה שרשימות הן Mutable, הגיע הזמן להכיר את \"האח דל התקציב\" שלהן: tuple.
                                                                                              \n", " סוג הנתונים tuple לא מרגש במיוחד – הוא למעשה סוג של רשימה שאי־אפשר לשנות. רשימה שהיא immutable, אם תרצו.\n", "

                                                                                              " ] @@ -685,7 +683,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", " נגדיר משתנה מסוג tuple באמצעות סוגריים עגולים:\n", "

                                                                                              " ] @@ -703,7 +701,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", " כמו ברשימה, ניתן לקבל איברים שנמצאים ב־tuple אם נפנה למיקום שלהם:\n", "

                                                                                              " ] @@ -722,7 +720,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", " ניסיון לשנות את ה־tuple לא יצליח, מן הסתם. Immutable, זוכרים?\n", "

                                                                                              " ] @@ -740,7 +738,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", " יצירת tuple ריק תיכתב כך:\n", "

                                                                                              " ] @@ -758,7 +756,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", " ועבור יצירת tuple עם איבר אחד בלבד, נכתוב את האיבר ואז פסיק אחריו, כדי שפייתון לא תפרש את הביטוי כסוגריים רגילים:\n", "

                                                                                              " ] @@ -776,18 +774,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " תרגול:\n", - " כתבו פונקצייה שמשתמשת ב־dir(), ומחזירה את כל הפעולות שיש ב־list ואין ב־tuple.
                                                                                              \n", - " בדקו גם אילו פעולות יש ב־tuple ואין ב־list.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + "תרגול:\n", + " כתבו פונקצייה שמשתמשת ב־dir(), ומחזירה את כל הפעולות שיש ב־list ואין ב־tuple.
                                                                                              \n", + " בדקו גם אילו פעולות יש ב־tuple ואין ב־list.
                                                                                              \n", " בשתי ההשוואות, התעלמו מפעולות ששמן מתחיל בתו קו תחתון.\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -795,14 +793,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שימושים" + "### שימושים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", " אם tuple מעניק לי פחות חופש פעולה, למה להשתמש בו מלכתחילה?\n", "

                                                                                              " ] @@ -811,17 +809,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                            \n", - "
                                                                                          • מהירות – עבודה עם ערכים מסוג tuple היא מהירה פי כמה וכמה מאשר עם רשימות.
                                                                                          • \n", - "
                                                                                          • סמנטיקה – עבור ערך קבוע שאין צורך לשנות, נעדיף להשתמש ב־tuple כדי להדגיש את זה וכדי לא לאפשר הוספה או הסרה של ערכים בטעות.
                                                                                          • \n", - "
                                                                                        " + "
                                                                                          \n", + "
                                                                                        • מהירות – עבודה עם ערכים מסוג tuple היא מהירה פי כמה וכמה מאשר עם רשימות.
                                                                                        • \n", + "
                                                                                        • סמנטיקה – עבור ערך קבוע שאין צורך לשנות, נעדיף להשתמש ב־tuple כדי להדגיש את זה וכדי לא לאפשר הוספה או הסרה של ערכים בטעות.
                                                                                        • \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### דוגמאות" + "### דוגמאות" ] }, { @@ -840,14 +837,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                                          מונחים

                                                                                          " + "##

                                                                                          מונחים

                                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                          \n", + "
                                                                                          \n", "
                                                                                          כתובת
                                                                                          מקום במחשב שבו שמור ערך כלשהו. ערך לעולם לא יחליף את הכתובת שלו.
                                                                                          \n", "
                                                                                          Immutable
                                                                                          ערך שלא ניתן לשנות.
                                                                                          \n", "
                                                                                          Mutable
                                                                                          ערך שניתן לשנות.
                                                                                          \n", diff --git a/week3/Summary.ipynb b/week3/Summary.ipynb index 0b5a0bd..8f82b41 100644 --- a/week3/Summary.ipynb +++ b/week3/Summary.ipynb @@ -4,62 +4,59 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# תרגילים" + "# תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הגדרה" + "## הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", - " פונקציית גיבוב היא פונקציה המקבלת קלט כלשהו ומחזירה ערך באורך קבוע.
                                                                                          \n", + "

                                                                                          \n", + " פונקציית גיבוב היא פונקציה המקבלת קלט כלשהו ומחזירה ערך באורך קבוע.
                                                                                          \n", " קיימות פונקציות גיבוב רבות, ולהן שימושים מגוונים.\n", "

                                                                                          \n", - "\n", - "

                                                                                          \n", + "

                                                                                          \n", " נמנה כמה תכונות נפוצות של פונקציות גיבוב:\n", "

                                                                                          \n", - " \n", - "
                                                                                            \n", - "
                                                                                          • דטרמיניזם – עבור קלט מסוים, הערך המוחזר יהיה תמיד זהה.
                                                                                          • \n", - "
                                                                                          • אחידות – כיוון שהערך המוחזר הוא בגודל קבוע, יש קלטים שעבורם הערך המוחזר זהה. פונקציית גיבוב טובה תנסה למזער את כמות הערכים המוחזרים הזהים.
                                                                                          • \n", - "
                                                                                          • חד־כיווניות – עבור ערך מסוים שהפונקציה החזירה, קשה למצוא מה הקלט שיצר אותו.
                                                                                          • \n", - "
                                                                                          \n", - "\n" + "
                                                                                            \n", + "
                                                                                          • דטרמיניזם – עבור קלט מסוים, הערך המוחזר יהיה תמיד זהה.
                                                                                          • \n", + "
                                                                                          • אחידות – כיוון שהערך המוחזר הוא בגודל קבוע, יש קלטים שעבורם הערך המוחזר זהה. פונקציית גיבוב טובה תנסה למזער את כמות הערכים המוחזרים הזהים.
                                                                                          • \n", + "
                                                                                          • חד־כיווניות – עבור ערך מסוים שהפונקציה החזירה, קשה למצוא מה הקלט שיצר אותו.
                                                                                          • \n", + "
                                                                                          \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## מימוש בסיסי" + "## מימוש בסיסי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", - " בתרגיל זה נממש גרסה פשוטה של פונקציית גיבוב (hash function).
                                                                                          \n", + "

                                                                                          \n", + " בתרגיל זה נממש גרסה פשוטה של פונקציית גיבוב (hash function).
                                                                                          \n", " פונקציית הגיבוב שלנו תקבל מחרוזת ותחזיר תמיד פלט באורך זהה.\n", "

                                                                                          \n", - "

                                                                                          \n", - " תחילה נכיר את הפונקציה ord(תו).
                                                                                          \n", - " פונקציה זו מקבלת תו, ומחזירה ערך מספרי המייצג אותו:
                                                                                          \n", + "

                                                                                          \n", + " תחילה נכיר את הפונקציה ord(תו).
                                                                                          \n", + " פונקציה זו מקבלת תו, ומחזירה ערך מספרי המייצג אותו:
                                                                                          \n", "

                                                                                          " ] }, @@ -87,20 +84,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", - "פונקציית הגיבוב שלנו תעבוד כך:
                                                                                          \n", + "

                                                                                          \n", + "פונקציית הגיבוב שלנו תעבוד כך:
                                                                                          \n", "

                                                                                          \n", - "
                                                                                            \n", - "
                                                                                          1. נאתחל משתנה עזר בשם hash כך שערכו יהיה 1.
                                                                                          2. \n", - "
                                                                                          3. עבור כל אות במחרוזת:
                                                                                          4. \n", - "
                                                                                              \n", - "
                                                                                            1. נחשב את ord(letter) ונכפיל במשתנה העזר hash.
                                                                                            2. \n", - "
                                                                                            3. נכפיל את הערך שקיבלנו במיקום של האות הבאה במחרוזת.\n", + "
                                                                                                \n", + "
                                                                                              1. נאתחל משתנה עזר בשם hash כך שערכו יהיה 1.
                                                                                              2. \n", + "
                                                                                              3. עבור כל אות במחרוזת:
                                                                                              4. \n", + "
                                                                                                  \n", + "
                                                                                                1. נחשב את ord(letter) ונכפיל במשתנה העזר hash.
                                                                                                2. \n", + "
                                                                                                3. נכפיל את הערך שקיבלנו במיקום של האות הבאה במחרוזת.\n", "
                                                                                                4. לתוצאה הזו נבצע מודולו 397,643, ונשמור על hash.
                                                                                                5. \n", - "
                                                                                                \n", - "
                                                                                              5. כדי שהפלט תמיד יהיה באורך זהה, נשתמש במודולו 100,297 על התוצאה (חשבו: איך מודולו גורם לזה לקרות?)
                                                                                              6. \n", + "
                                                                                              \n", + "
                                                                                            4. כדי שהפלט תמיד יהיה באורך זהה, נשתמש במודולו 100,297 על התוצאה (חשבו: איך מודולו גורם לזה לקרות?)
                                                                                            5. \n", "
                                                                                            \n", - "

                                                                                            \n", + "

                                                                                            \n", "פונקציית הגיבוב שיצרנו מחזירה תמיד ערכים באורך קבוע (בין 0 ל־100,297), כפי שפונקציית גיבוב צריכה להחזיר (לאו דווקא באורך זה, אבל הפלט חייב להיות באורך קבוע).\n", "

                                                                                            " ] @@ -109,56 +106,50 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - " דוגמה:
                                                                                            \n", + "

                                                                                            \n", + " דוגמה:
                                                                                            \n", "

                                                                                            \n", - "\n", - "myhash('aba')
                                                                                            \n", - "62242
                                                                                            \n", - "\n", - "

                                                                                            \n", - " החישוב התבצע כך:
                                                                                            \n", + "myhash('aba')
                                                                                            \n", + "62242
                                                                                            \n", + "

                                                                                            \n", + " החישוב התבצע כך:
                                                                                            \n", "

                                                                                            \n", - "\n", - "temp_hash = 1
                                                                                            \n", - "temp_hash = (temp_hash * ord('a') * 1) % 397643\n", - "# temp_hash = (1 * 97 * 1) % 397643 = 97
                                                                                            \n", - "\n", - "

                                                                                            \n", + "temp_hash = 1
                                                                                            \n", + "temp_hash = (temp_hash * ord('a') * 1) % 397643\n", + "# temp_hash = (1 * 97 * 1) % 397643 = 97
                                                                                            \n", + "

                                                                                            \n", " שימו לב שכאן הכפלנו ב־1, כיוון שמיקום האות הוא 0 ואנו מכפילים\n", " באינדקס האות הבאה.\n", "

                                                                                            \n", - "\n", - "temp_hash = (temp_hash * ord('b') * 2) % 397643\n", - "# temp_hash = (97 * 98 * 2) % 397643 = 19012\n", - "temp_hash = (temp_hash * ord('a') * 3) % 397643\n", - "# temp_hash = (19012 * 97 * 3) % 397643 = 363133\n", - "return temp_hash % 100297\n", - "# temp_hash = 363133 % 100297 = 62242" + "temp_hash = (temp_hash * ord('b') * 2) % 397643\n", + "# temp_hash = (97 * 98 * 2) % 397643 = 19012\n", + "temp_hash = (temp_hash * ord('a') * 3) % 397643\n", + "# temp_hash = (19012 * 97 * 3) % 397643 = 363133\n", + "return temp_hash % 100297\n", + "# temp_hash = 363133 % 100297 = 62242" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - " ממשו את פונקציית הגיבוב.
                                                                                            \n", - " כדי לבדוק את עצמכם ודאו שקיבלתם את הערכים הבאים עבור המחרוזות הבאות:
                                                                                            \n", + "

                                                                                            \n", + " ממשו את פונקציית הגיבוב.
                                                                                            \n", + " כדי לבדוק את עצמכם ודאו שקיבלתם את הערכים הבאים עבור המחרוזות הבאות:
                                                                                            \n", "

                                                                                            \n", - "\n", - "
                                                                                              \n", - "
                                                                                            • \n", - " myhash('python course')
                                                                                              \n", - " 75273\n", - "
                                                                                            • \n", - "
                                                                                            • \n", - " myhash('hashing is sababa')
                                                                                              \n", - " 38166\n", - "
                                                                                            • \n", - "
                                                                                            • \n", - " myhash('i calculate hashes for fun')
                                                                                              \n", - " 68720\n", - "
                                                                                            • \n", + "
                                                                                                \n", + "
                                                                                              • \n", + "myhash('python course')
                                                                                                \n", + "75273\n", + "
                                                                                              • \n", + "
                                                                                              • \n", + "myhash('hashing is sababa')
                                                                                                \n", + "38166\n", + "
                                                                                              • \n", + "
                                                                                              • \n", + "myhash('i calculate hashes for fun')
                                                                                                \n", + "68720\n", + "
                                                                                              • \n", "
                                                                                              " ] }, @@ -166,9 +157,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " שימו לב שזוהי פונקציית גיבוב מומצאת.
                                                                                              \n", - " לעולם לא נשתמש בפונקציות גיבוב שהמצאנו בסביבות אמיתיות שאנחנו מתכנתים(!), משום שדבר כזה יסכן בוודאות את המשתמשים במערכת.
                                                                                              \n", + "

                                                                                              \n", + " שימו לב שזוהי פונקציית גיבוב מומצאת.
                                                                                              \n", + " לעולם לא נשתמש בפונקציות גיבוב שהמצאנו בסביבות אמיתיות שאנחנו מתכנתים(!), משום שדבר כזה יסכן בוודאות את המשתמשים במערכת.
                                                                                              \n", " זה עולם שלם שנחקר רבות, ואנחנו תמיד נשתמש רק בפונקציות גיבוב שנחקרו במוסדות הרלוונטיים ופורסמו מטעמם.\n", "

                                                                                              " ] @@ -186,28 +177,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## איקס־עיגול" + "## איקס־עיגול" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " נזכיר את החוקים של המשחק המוכר איקס־עיגול:
                                                                                              \n", + "

                                                                                              \n", + " נזכיר את החוקים של המשחק המוכר איקס־עיגול:
                                                                                              \n", "

                                                                                              \n", - "\n", - "
                                                                                                \n", - "
                                                                                              • המשחק מתרחש על לוח בגודל 3 על 3.
                                                                                              • \n", - "
                                                                                              • \n", + "
                                                                                                  \n", + "
                                                                                                • המשחק מתרחש על לוח בגודל 3 על 3.
                                                                                                • \n", + "
                                                                                                • \n", " במשחק משתתפים שני שחקנים: שחקן שמשתמש באות X \n", " ושחקן שמשתמש באות O.\n", "
                                                                                                • \n", - "
                                                                                                • \n", + "
                                                                                                • \n", " השחקן שמשתמש באות O תמיד מתחיל.\n", "
                                                                                                • \n", - "
                                                                                                • המשחק נמשך כל עוד יש מקום פנוי בלוח, או עד שהוכרז מנצח.
                                                                                                • \n", - "
                                                                                                • מנצח הוא מי שהציב את האות השייכת לו בכל התאים הנמצאים באלכסון, בשורה או בטור על הלוח.
                                                                                                • \n", + "
                                                                                                • המשחק נמשך כל עוד יש מקום פנוי בלוח, או עד שהוכרז מנצח.
                                                                                                • \n", + "
                                                                                                • מנצח הוא מי שהציב את האות השייכת לו בכל התאים הנמצאים באלכסון, בשורה או בטור על הלוח.
                                                                                                • \n", "
                                                                                                " ] }, @@ -215,23 +205,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מימוש המשחק

                                                                                                " + "### מימוש המשחק" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### ייצוג הלוח" + "#### ייצוג הלוח" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - " את הלוח נייצג באמצעות רשימה של רשימות.
                                                                                                \n", - " כל רשימה תייצג שורה בלוח שלנו: הרשימה במיקום 0 תייצג את השורה הראשונה בלוח, הרשימה בשורה 1 את השורה השנייה וכך הלאה.
                                                                                                \n", + "

                                                                                                \n", + " את הלוח נייצג באמצעות רשימה של רשימות.
                                                                                                \n", + " כל רשימה תייצג שורה בלוח שלנו: הרשימה במיקום 0 תייצג את השורה הראשונה בלוח, הרשימה בשורה 1 את השורה השנייה וכך הלאה.
                                                                                                \n", " הרשימות המייצגות את השורות יהיו רשימות של תווים, כאשר בכל תא יהיה אחד מבין התווים האפשריים – 'O', 'X' או '-'\n", "

                                                                                                " ] @@ -240,16 +230,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " לדוגמה, כך נראה לוח ריק:\n", "

                                                                                                \n", - " \n", "[['-', '-', '-'], ['-', '-', '-'], ['-', '-', '-']]\n", - " \n", - "

                                                                                                \n", + "

                                                                                                \n", " נוח לדמיין את הרשימה הזו כתובה במאונך:\n", "

                                                                                                \n", - "\n", "\n", "[\n", " ['-', '-', '-'],\n", @@ -257,22 +244,18 @@ " ['-', '-', '-']\n", "]\n", "\n", - " \n", - "

                                                                                                \n", + "

                                                                                                \n", " כעת נראה איך נראה הלוח כאשר יש 'X'־ים באלכסון:\n", "

                                                                                                \n", - "\n", "\n", "[\n", " ['X', '-', '-'],\n", " ['-', 'X', '-'],\n", " ['-', '-', 'X']\n", "]\n", - "\n", - "

                                                                                                \n", + "

                                                                                                \n", " וללא ההדפסה לאורך:\n", "

                                                                                                \n", - "\n", "[['X', '-', '-'], ['-', 'X', '-'], ['-', '-', 'X']]\n" ] }, @@ -280,14 +263,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " תחילה נממש פונקציה המקבלת את הלוח ובודקת אם יש מנצח כלשהו \n", " (X או O),\n", " ומחזירה את האות של המנצח\n", " ('X' או 'O')\n", " אם יש מנצח, או '' (מחרוזת ריקה) אחרת.\n", "

                                                                                                \n", - "

                                                                                                \n", + "

                                                                                                \n", "חִשבו אילו בדיקות נידרש לבצע כדי למצוא אם יש בלוח מצב של ניצחון. ממשו את הפונקציה check_board(board) כך שתשתמש בכמה שיותר פונקציות עזר.\n", "

                                                                                                " ] @@ -305,21 +288,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - " לפני שתמשיכו הלאה, חשוב לוודא שהפונקציה שכתבתם עובדת, לכן נכתוב עבורה סדרה של בדיקות.
                                                                                                \n", + "

                                                                                                \n", + " לפני שתמשיכו הלאה, חשוב לוודא שהפונקציה שכתבתם עובדת, לכן נכתוב עבורה סדרה של בדיקות.
                                                                                                \n", " כתבו בדיקות עבור המקרים הבאים:\n", "

                                                                                                \n", - "\n", - "
                                                                                                  \n", - "
                                                                                                • ניצחון באלכסון הראשי (שמאל למעלה–ימין למטה).
                                                                                                • \n", - "
                                                                                                • ניצחון באלכסון המשני (ימין למעלה–שמאל למטה).
                                                                                                • \n", - "
                                                                                                • ניצחון בכל אחד מהטורים.
                                                                                                • \n", - "
                                                                                                • ניצחון בכל אחת מהשורות.
                                                                                                • \n", - "
                                                                                                • לוח מלא ללא ניצחון.
                                                                                                • \n", - "
                                                                                                • לוח לא מלא ללא ניצחון (במקומות לא מסומנים יופיע הסימן '-').
                                                                                                • \n", + "
                                                                                                    \n", + "
                                                                                                  • ניצחון באלכסון הראשי (שמאל למעלה–ימין למטה).
                                                                                                  • \n", + "
                                                                                                  • ניצחון באלכסון המשני (ימין למעלה–שמאל למטה).
                                                                                                  • \n", + "
                                                                                                  • ניצחון בכל אחד מהטורים.
                                                                                                  • \n", + "
                                                                                                  • ניצחון בכל אחת מהשורות.
                                                                                                  • \n", + "
                                                                                                  • לוח מלא ללא ניצחון.
                                                                                                  • \n", + "
                                                                                                  • לוח לא מלא ללא ניצחון (במקומות לא מסומנים יופיע הסימן '-').
                                                                                                  • \n", "
                                                                                                  \n", - "\n", - "

                                                                                                  \n", + "

                                                                                                  \n", " בסך הכול תצטרכו לכתוב 10 בדיקות. בכל בדיקה הפעילו את הפונקציה שלכם check_board(board) על לוח כפי שמתואר ובדקו אם הפלט שמוחזר תואם לפלט שציפיתם לקבל.\n", "

                                                                                                  \n" ] @@ -418,28 +399,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### פונקציות לבדיקת תקינות קלט

                                                                                                  " + "#### פונקציות לבדיקת תקינות קלט" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - " במהלך המשחק אנו נקלוט מהשחקנים במשחק (המשתמשים) את המקומות בלוח, שבהם הם ירצו למקם את האות שלהם.
                                                                                                  \n", - " מקומות אלו יהיו שני מספרים בתחום 0–2 המציינים את השורה והעמודה שבה יש למקם את האות.
                                                                                                  \n", + "

                                                                                                  \n", + " במהלך המשחק אנו נקלוט מהשחקנים במשחק (המשתמשים) את המקומות בלוח, שבהם הם ירצו למקם את האות שלהם.
                                                                                                  \n", + " מקומות אלו יהיו שני מספרים בתחום 0–2 המציינים את השורה והעמודה שבה יש למקם את האות.
                                                                                                  \n", " לדוגמה, עבור:\n", "

                                                                                                  \n", - "\n", "1 2\n", - "\n", - "

                                                                                                  \n", + "

                                                                                                  \n", " נמקם את האות המתאימה לשחקן, נניח X, בשורה 1 ובעמודה 2, כך:\n", "

                                                                                                  \n", - "\n", "[['-', '-', '-'], ['-', '-', 'X'], ['-', '-', '-']]\n", - "\n", - "

                                                                                                  \n", + "

                                                                                                  \n", " זכרו כי הספירה מתחילה מ־0, ולכן מדובר בשורה האמצעית ובעמודה הימנית.\n", "

                                                                                                  " ] @@ -448,24 +425,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - " כעת כתבו פונקציה המקבלת את הלוח ואת האות שמייצגת את השחקן ('X' או 'O'). כמו כן, הפונקציה תקלוט מהמשתמש שני מספרים.
                                                                                                  \n", - " הפונקציה תבדוק אם התנאים הבאים מתקיימים, ואם הם מתקיימים היא תמקם את האות הנתונה במיקום המבוקש, ותעדכן את הלוח:
                                                                                                  \n", + "

                                                                                                  \n", + " כעת כתבו פונקציה המקבלת את הלוח ואת האות שמייצגת את השחקן ('X' או 'O'). כמו כן, הפונקציה תקלוט מהמשתמש שני מספרים.
                                                                                                  \n", + " הפונקציה תבדוק אם התנאים הבאים מתקיימים, ואם הם מתקיימים היא תמקם את האות הנתונה במיקום המבוקש, ותעדכן את הלוח:
                                                                                                  \n", "

                                                                                                  \n", - "\n", - "
                                                                                                    \n", - "
                                                                                                  • מספר השורה הוא בין 0 ל־2.
                                                                                                  • \n", - "
                                                                                                  • מספר העמודה הוא בין 0 ל־2.
                                                                                                  • \n", - "
                                                                                                  • המקום המבוקש לא תפוס על ידי אות כלשהי (כלומר יש בו '-').
                                                                                                  • \n", + "
                                                                                                      \n", + "
                                                                                                    • מספר השורה הוא בין 0 ל־2.
                                                                                                    • \n", + "
                                                                                                    • מספר העמודה הוא בין 0 ל־2.
                                                                                                    • \n", + "
                                                                                                    • המקום המבוקש לא תפוס על ידי אות כלשהי (כלומר יש בו '-').
                                                                                                    • \n", "
                                                                                                    \n", - "\n", - "

                                                                                                    \n", - " שימו לב, עליכם לחייב את המשתמש להכניס ערכים חוקיים. כלומר, המשחק לא ימשיך עד שיתקבל קלט תקין (חשבו על דרך שבה התוכנית תמשיך לבקש מהמשתמש ערכים עד שיוכנסו ערכים חוקיים).
                                                                                                    \n", + "

                                                                                                    \n", + " שימו לב, עליכם לחייב את המשתמש להכניס ערכים חוקיים. כלומר, המשחק לא ימשיך עד שיתקבל קלט תקין (חשבו על דרך שבה התוכנית תמשיך לבקש מהמשתמש ערכים עד שיוכנסו ערכים חוקיים).
                                                                                                    \n", " כאשר נגלה בשלב מוקדם יותר שהלוח לא ניתן יותר למילוי – המשחק יסתיים.\n", "

                                                                                                    \n", - "\n", - "

                                                                                                    \n", - " רמז: השתמשו בלולאת while\n", + "

                                                                                                    \n", + " רמז: השתמשו בלולאת while\n", "

                                                                                                    \n" ] }, @@ -473,67 +447,51 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                    \n", + "

                                                                                                    \n", "לוח לדוגמה:\n", "

                                                                                                    \n", - "\n", "\n", "board = [['-', '-', '-'], ['-', 'O', 'X'], ['-', '-', '-']]\n", "\n", - "\n", - "

                                                                                                    \n", + "

                                                                                                    \n", " הזנה חוקית:\n", "

                                                                                                    \n", - "\n", "make_turn('X', board)\n", - "\n", - "
                                                                                                    \n", - "\n", + "
                                                                                                    \n", "Player 'X' Please choose cell:\n", "0 2\n", "\n", "[['-', '-', 'X'], ['-', 'O', 'X'], ['-', '-', '-']]\n", - "\n", - "

                                                                                                    \n", + "

                                                                                                    \n", " הזנה לא חוקית:\n", "

                                                                                                    \n", - "\n", - "
                                                                                                    \n", - "\n", + "
                                                                                                    \n", "Player 'X' Please choose cell:\n", "5 -2\n", "Invalid line chosen (5)\n", "Invalid column chosen (-2)\n", "[['-', '-', '-'], ['-', 'O', 'X'], ['-', '-', '-']]\n", "\n", - "\n", - "
                                                                                                    \n", - "\n", + "
                                                                                                    \n", "Player 'X' Please choose cell:\n", "1 2\n", "Cell (1,2) is taken, use other.\n", "[['-', '-', '-'], ['-', 'O', 'X'], ['-', '-', '-']]\n", "\n", - "\n", - "
                                                                                                    \n", - "\n", + "
                                                                                                    \n", "Player 'X' Please choose cell:\n", "2 -2\n", "Invalid column chosen (-2)\n", "[['-', '-', '-'], ['-', 'O', 'X'], ['-', '-', '-']]\n", "\n", - "\n", - "
                                                                                                    \n", - "\n", + "
                                                                                                    \n", "Player 'X' Please choose cell:\n", "1 1\n", "Cell (1,1) is taken, use other.\n", "[['-', '-', '-'], ['-', 'O', 'X'], ['-', '-', '-']]\n", "\n", - "\n", - "
                                                                                                    \n", - "\n", - "

                                                                                                    \n", + "
                                                                                                    \n", + "

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

                                                                                                    " ] @@ -551,14 +509,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                    \n", - " בונוס: ממשו פונקציה שמדפיסה את הלוח לאורך.\n", + "

                                                                                                    \n", + "בונוס: ממשו פונקציה שמדפיסה את הלוח לאורך.\n", "

                                                                                                    \n", - "\n", "print_board(board)\n", - "\n", - "
                                                                                                    \n", - "\n", + "
                                                                                                    \n", "\n", "[\n", " ['-', '-', '-'],\n", @@ -572,32 +527,32 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### מימוש המשחק" + "#### מימוש המשחק" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                    \n", - " כאמור המשחק ממשיך כל עוד אין מנצח ונותר מקום פנוי בלוח.
                                                                                                    \n", - " נשים לב כי מספר המהלכים החוקיים יכול להיות לכל היותר כגודל הלוח.
                                                                                                    \n", - " כלומר – אם לא הוכרז מנצח במהלך המשחק, המשחק ייגמר לאחר 9 מהלכים עבור לוח בגודל $3\\times3$.
                                                                                                    \n", - " נספור כמה מהלכים חוקיים יש במשחק. עבור מספרי מהלך זוגיים (0, 2, 4, ...) ישחק השחקן O, ועבור מספרי מהלך אי־זוגיים ישחק השחקן X.
                                                                                                    \n", - " נתאר את מהלך המשחק בפסאודו־קוד:
                                                                                                    \n", + "

                                                                                                    \n", + " כאמור המשחק ממשיך כל עוד אין מנצח ונותר מקום פנוי בלוח.
                                                                                                    \n", + " נשים לב כי מספר המהלכים החוקיים יכול להיות לכל היותר כגודל הלוח.
                                                                                                    \n", + " כלומר – אם לא הוכרז מנצח במהלך המשחק, המשחק ייגמר לאחר 9 מהלכים עבור לוח בגודל $3\\times3$.
                                                                                                    \n", + " נספור כמה מהלכים חוקיים יש במשחק. עבור מספרי מהלך זוגיים (0, 2, 4, ...) ישחק השחקן O, ועבור מספרי מהלך אי־זוגיים ישחק השחקן X.
                                                                                                    \n", + " נתאר את מהלך המשחק בפסאודו־קוד:
                                                                                                    \n", "

                                                                                                    \n", - "
                                                                                                      \n", - "
                                                                                                    1. אתחל את מונה המהלכים ל־0.
                                                                                                    2. \n", - "
                                                                                                    3. כל עוד אין מנצח וגם הלוח לא מלא:\n", + "
                                                                                                        \n", + "
                                                                                                      1. אתחל את מונה המהלכים ל־0.
                                                                                                      2. \n", + "
                                                                                                      3. כל עוד אין מנצח וגם הלוח לא מלא:\n", "
                                                                                                          \n", - "
                                                                                                        • אם מספר המהלך זוגי – בצע מהלך שחקן O.
                                                                                                        • \n", - "
                                                                                                        • אם מספר המהלך אי־זוגי – בצע מהלך שחקן X.
                                                                                                        • \n", - "
                                                                                                        \n", - "
                                                                                                      4. \n", - "
                                                                                                      5. הגדל את מונה המהלכים ב־1.
                                                                                                      6. \n", - "
                                                                                                      7. אם יש ניצחון – הכרז על המנצח, אחרת הכרז תיקו.
                                                                                                      8. \n", + "
                                                                                                      9. אם מספר המהלך זוגי – בצע מהלך שחקן O.
                                                                                                      10. \n", + "
                                                                                                      11. אם מספר המהלך אי־זוגי – בצע מהלך שחקן X.
                                                                                                      12. \n", + "
                                                                                                  \n", + "\n", + "
                                                                                                • הגדל את מונה המהלכים ב־1.
                                                                                                • \n", + "
                                                                                                • אם יש ניצחון – הכרז על המנצח, אחרת הכרז תיקו.
                                                                                                • \n", "
                                                                                          \n", - "

                                                                                          \n", + "

                                                                                          \n", " ממשו את המשחק על פי הפונקציות שיצרתם ועל פי תיאור מהלך המשחק.\n", "

                                                                                          " ] @@ -615,7 +570,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", + "

                                                                                          \n", " כעת שחקו עם בני משפחה וחברים ;)\n", "

                                                                                          " ] @@ -624,32 +579,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## בנק 2.0" + "## בנק 2.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                          \n", - "\n", - "

                                                                                          \n", + "

                                                                                          \n", " מנגנון הסיסמאות ינוהל כך:\n", "

                                                                                          \n", - "\n", - "
                                                                                            \n", - "
                                                                                          1. הבנק ינהל קובץ סיסמאות שייקרא bank_passwd.txt.
                                                                                          2. \n", - "
                                                                                          3. כאשר משתמש יפתח חשבון בנק, הוא יכניס את הסיסמה שהוא מעוניין שתשמש אותו בהתחברות הבאה.
                                                                                          4. \n", - "
                                                                                          5. נחשב את ה־hash של הסיסמה הזו באמצעות פונקציית ה־hash שכתבנו בתחילת מחברת זו.
                                                                                          6. \n", - "
                                                                                          7. הבנק ישמור את שם המשתמש ותוצאת ה־hash בקובץ הסיסמאות בצורה קבועה מראש.
                                                                                          8. \n", + "
                                                                                              \n", + "
                                                                                            1. הבנק ינהל קובץ סיסמאות שייקרא bank_passwd.txt.
                                                                                            2. \n", + "
                                                                                            3. כאשר משתמש יפתח חשבון בנק, הוא יכניס את הסיסמה שהוא מעוניין שתשמש אותו בהתחברות הבאה.
                                                                                            4. \n", + "
                                                                                            5. נחשב את ה־hash של הסיסמה הזו באמצעות פונקציית ה־hash שכתבנו בתחילת מחברת זו.
                                                                                            6. \n", + "
                                                                                            7. הבנק ישמור את שם המשתמש ותוצאת ה־hash בקובץ הסיסמאות בצורה קבועה מראש.
                                                                                            8. \n", "
                                                                                            \n", - "\n", - "

                                                                                            \n", - " כל סיסמה של משתמש תישמר בקובץ בצורה: username:62242,
                                                                                            \n", + "

                                                                                            \n", + " כל סיסמה של משתמש תישמר בקובץ בצורה: username:62242,
                                                                                            \n", " כאשר username הוא שם המשתמש שנרשם בפתיחת החשבון, ו־62242 הוא תוצאת ה־hash עבור הסיסמה שבחר.\n", "

                                                                                            " ] @@ -658,16 +610,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פתיחת חשבון בנק" + "### פתיחת חשבון בנק" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            בסעיף זה נממש את פונקציית פתיחת חשבון הבנק.
                                                                                            \n", - " הפונקציה תקבל שם משתמש וסיסמה, ותיצור רשומה חדשה בקובץ הסיסמאות עבור המשתמש שביקש להצטרף לבנק.
                                                                                            \n", - " כיוון שהבנק שלנו לא עבר לעבוד עם מספרי חשבון, עלינו לוודא ששם המשתמש שנבחר לא קיים כבר בבנק. אם קיים כזה, נדפיס שגיאה ולא נבצע דבר.
                                                                                            \n", + "

                                                                                            בסעיף זה נממש את פונקציית פתיחת חשבון הבנק.
                                                                                            \n", + " הפונקציה תקבל שם משתמש וסיסמה, ותיצור רשומה חדשה בקובץ הסיסמאות עבור המשתמש שביקש להצטרף לבנק.
                                                                                            \n", + " כיוון שהבנק שלנו לא עבר לעבוד עם מספרי חשבון, עלינו לוודא ששם המשתמש שנבחר לא קיים כבר בבנק. אם קיים כזה, נדפיס שגיאה ולא נבצע דבר.
                                                                                            \n", " אם לא קיים שם משתמש כזה, נחשב את ה־hash של הסיסמה שהזין, ונוסיף לסוף הקובץ רשומה חדשה בייצוג שצוין בתחילת השאלה.\n", "

                                                                                            " ] @@ -676,52 +628,48 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### דוגמאות" + "#### דוגמאות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "תוכן קובץ הסיסמאות (לצורך הדוגמה):\n", "

                                                                                            \n", - "\n", - "FreddieMercury:56443
                                                                                            \n", - "BBKing:33471
                                                                                            \n", - "DonaldDuck:17743

                                                                                            \n", - "register_to_bank('FreddieMercury', 'ILoveQueen')
                                                                                            \n", - "An account with name \"FreddieMercury\" already exists.
                                                                                            Account was not created.


                                                                                            \n", - "register_to_bank('Simba', 'ILoveNala')
                                                                                            \n", - "Account with name \"Simba\" was created and added to the bank.

                                                                                            \n", - "\n", - "

                                                                                            \n", + "FreddieMercury:56443
                                                                                            \n", + "BBKing:33471
                                                                                            \n", + "DonaldDuck:17743

                                                                                            \n", + "register_to_bank('FreddieMercury', 'ILoveQueen')
                                                                                            \n", + "An account with name \"FreddieMercury\" already exists.
                                                                                            Account was not created.


                                                                                            \n", + "register_to_bank('Simba', 'ILoveNala')
                                                                                            \n", + "Account with name \"Simba\" was created and added to the bank.

                                                                                            \n", + "

                                                                                            \n", " תוכן קובץ הסיסמאות כעת:\n", "

                                                                                            \n", - "\n", - "FreddieMercury:56443
                                                                                            \n", - "BBKing:19463
                                                                                            \n", - "DonaldDuck:17743
                                                                                            \n", - "Simba:6362
                                                                                            " + "FreddieMercury:56443
                                                                                            \n", + "BBKing:19463
                                                                                            \n", + "DonaldDuck:17743
                                                                                            \n", + "Simba:6362
                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### תרגיל" + "#### תרגיל" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            ממשו את פונקציית הרישום.

                                                                                            \n", - "

                                                                                            רמזים:

                                                                                            \n", - "\n", - "
                                                                                              \n", - "
                                                                                            • קראו את המידע מהקובץ לתוך רשימה, זכרו שכל שורה היא מחרוזת וניתן להפעיל עליה פעולות של מחרוזות כדי לחלץ את שם המשתמש.
                                                                                            • \n", - "
                                                                                            • כאשר פותחים קובץ במצב הוספה, ניתן להוסיף אליו נתונים מבלי למחוק את הקיימים. קראו על פונקציית open וחפשו כיצד עושים זאת.
                                                                                            • \n", + "

                                                                                              ממשו את פונקציית הרישום.

                                                                                              \n", + "

                                                                                              רמזים:

                                                                                              \n", + "
                                                                                                \n", + "
                                                                                              • קראו את המידע מהקובץ לתוך רשימה, זכרו שכל שורה היא מחרוזת וניתן להפעיל עליה פעולות של מחרוזות כדי לחלץ את שם המשתמש.
                                                                                              • \n", + "
                                                                                              • כאשר פותחים קובץ במצב הוספה, ניתן להוסיף אליו נתונים מבלי למחוק את הקיימים. קראו על פונקציית open וחפשו כיצד עושים זאת.
                                                                                              • \n", "
                                                                                              " ] }, @@ -738,39 +686,36 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מערכת הזדהות" + "### מערכת הזדהות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " בעקבות השיפור במנגנון חוזק הסיסמאות, הצטרפו לקוחות רבים לבנק.
                                                                                              \n", + "

                                                                                              \n", + " בעקבות השיפור במנגנון חוזק הסיסמאות, הצטרפו לקוחות רבים לבנק.
                                                                                              \n", " המנהלים מרוצים וכעת רוצים שתממשו עבורם מערכת הזדהות שעובדת עם קובץ הסיסמאות.\n", "

                                                                                              \n", - "\n", - "

                                                                                              \n", + "

                                                                                              \n", " מערכת ההזדהות תעבוד כך:\n", "

                                                                                              \n", - "\n", - "
                                                                                                \n", - "
                                                                                              • הלקוח יזין שם משתמש וסיסמה.\n", + "
                                                                                                  \n", + "
                                                                                                • הלקוח יזין שם משתמש וסיסמה.\n", "
                                                                                                    \n", - "
                                                                                                  • אם המשתמש לא קיים, נדפיס Account not registered, ונסיים.
                                                                                                  • \n", - "
                                                                                                  • אם הלקוח קיים, אך הסיסמה שהזין שגויה – יש ללקוח עוד 2 נסיונות להזין סיסמה נכונה.
                                                                                                  • \n", - "
                                                                                                  \n", - "
                                                                                                • \n", - "
                                                                                                • למשתמש ינתנו 3 ניסיונות בסך הכול להכניס סיסמה נכונה.\n", + "
                                                                                                • אם המשתמש לא קיים, נדפיס Account not registered, ונסיים.
                                                                                                • \n", + "
                                                                                                • אם הלקוח קיים, אך הסיסמה שהזין שגויה – יש ללקוח עוד 2 נסיונות להזין סיסמה נכונה.
                                                                                                • \n", + "
                                                                                                \n", + "
                                                                                              • \n", + "
                                                                                              • למשתמש ינתנו 3 ניסיונות בסך הכול להכניס סיסמה נכונה.\n", "
                                                                                                  \n", - "
                                                                                                • אם הזין סיסמה שגויה בשלושתם – הרשומה שלו תימחק מקובץ הסיסמאות, ויהיה עליו להירשם מחדש בעתיד.
                                                                                                • \n", - "
                                                                                                • אחרת, הזיהוי הצליח.
                                                                                                • \n", - "
                                                                                                \n", - "
                                                                                              • \n", + "
                                                                                              • אם הזין סיסמה שגויה בשלושתם – הרשומה שלו תימחק מקובץ הסיסמאות, ויהיה עליו להירשם מחדש בעתיד.
                                                                                              • \n", + "
                                                                                              • אחרת, הזיהוי הצליח.
                                                                                              • \n", + "
                                                                                              \n", + "\n", "
                                                                                            \n", - "\n", - "

                                                                                            \n", - " מערכת ההזדהות הינה פונקציה המקבלת שם משתמש וסיסמה.
                                                                                            \n", + "

                                                                                            \n", + " מערכת ההזדהות הינה פונקציה המקבלת שם משתמש וסיסמה.
                                                                                            \n", " היא מחזירה True אם הזיהוי הצליח, ו־False אחרת.\n", "

                                                                                            " ] @@ -779,58 +724,52 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### דוגמאות" + "#### דוגמאות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", " תוכן קובץ הסיסמאות (לצורך הדוגמה):\n", "

                                                                                            \n", - "\n", - "
                                                                                            \n", - "\n", - "FreddieMercury:61875
                                                                                            \n", - "BBKing:33471
                                                                                            \n", - "DonaldDuck:17743
                                                                                            \n", - "Simba:6362

                                                                                            \n", - "authenticate('FreddieMercury', 'ILoveQueen')
                                                                                            \n", - "Wrong password (1/3). # myhash('ILoveQueen') = 99597 != 61875 (in password file)

                                                                                            \n", - "authenticate('FreddieMercury', 'LetItBe')
                                                                                            \n", - "Wrong password (2/3). # myhash('LetItBe') = 58060 != 61875 (in password file)

                                                                                            \n", - "authenticate('FreddieMercury', 'HeyJude')
                                                                                            \n", - "Wrong password (3/3). 'FreddieMercury' was removed. # myhash('HeyJude') = 8309 != 61875 (in password file)

                                                                                            \n", - "authenticate('FreddieMercury', 'IHatePasswords!')
                                                                                            \n", - "Account not registered. # FreddieMercury was removed in the previous example

                                                                                            \n", - "\n", - "authenticate('Simba', 'ILoveNala')
                                                                                            \n", - "Welcome 'Simba'. # myhash('ILoveNala') = 6362 == 6362 (in password file)

                                                                                            \n", - "\n", - "

                                                                                            \n", + "
                                                                                            \n", + "FreddieMercury:61875
                                                                                            \n", + "BBKing:33471
                                                                                            \n", + "DonaldDuck:17743
                                                                                            \n", + "Simba:6362

                                                                                            \n", + "authenticate('FreddieMercury', 'ILoveQueen')
                                                                                            \n", + "Wrong password (1/3). # myhash('ILoveQueen') = 99597 != 61875 (in password file)

                                                                                            \n", + "authenticate('FreddieMercury', 'LetItBe')
                                                                                            \n", + "Wrong password (2/3). # myhash('LetItBe') = 58060 != 61875 (in password file)

                                                                                            \n", + "authenticate('FreddieMercury', 'HeyJude')
                                                                                            \n", + "Wrong password (3/3). 'FreddieMercury' was removed. # myhash('HeyJude') = 8309 != 61875 (in password file)

                                                                                            \n", + "authenticate('FreddieMercury', 'IHatePasswords!')
                                                                                            \n", + "Account not registered. # FreddieMercury was removed in the previous example

                                                                                            \n", + "authenticate('Simba', 'ILoveNala')
                                                                                            \n", + "Welcome 'Simba'. # myhash('ILoveNala') = 6362 == 6362 (in password file)

                                                                                            \n", + "

                                                                                            \n", " תוכן קובץ הסיסמאות כעת:\n", "

                                                                                            \n", - "\n", - "
                                                                                            \n", - "\n", - "BBKing:19463
                                                                                            \n", - "DonaldDuck:17743
                                                                                            \n", - "Simba:6362
                                                                                            " + "
                                                                                            \n", + "BBKing:19463
                                                                                            \n", + "DonaldDuck:17743
                                                                                            \n", + "Simba:6362
                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### תרגול" + "#### תרגול" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", " ממשו את מערכת ההזדהות.\n", "

                                                                                            " ] diff --git a/week4/1_For_Loops.ipynb b/week4/1_For_Loops.ipynb index c5bbaa1..e52778d 100644 --- a/week4/1_For_Loops.ipynb +++ b/week4/1_For_Loops.ipynb @@ -4,28 +4,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# לולאת for" + "# לולאת for" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", " פעמים רבות אנחנו מנסים לפתור בעיה, שכדי להגיע לפתרונה נידרש לעבור על כל הערכים במבנה מסוים:\n", "

                                                                                            " ] @@ -34,11 +34,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                            • קבל את רשימת גובהי התלמידים בכיתה, והחזר את גובהו של התלמיד הגבוה ביותר.
                                                                                            • \n", - "
                                                                                            • קבל את רשימת הקלפים שבידי, והחזר את הקלף המתאים ביותר לשליפה עכשיו.
                                                                                            • \n", - "
                                                                                            • קבל רשימת השמעה (Playlist), והחזר את כל השירים של הלהקה Led Zeppelin.
                                                                                            • \n", - "
                                                                                            • קבל את רשימת המסעדות בצרפת ואת הדירוגים שלהן, והחזר את 3 המסעדות בעלות הדירוג הגבוה ביותר.
                                                                                            • \n", + "
                                                                                                \n", + "
                                                                                              • קבל את רשימת גובהי התלמידים בכיתה, והחזר את גובהו של התלמיד הגבוה ביותר.
                                                                                              • \n", + "
                                                                                              • קבל את רשימת הקלפים שבידי, והחזר את הקלף המתאים ביותר לשליפה עכשיו.
                                                                                              • \n", + "
                                                                                              • קבל רשימת השמעה (Playlist), והחזר את כל השירים של הלהקה Led Zeppelin.
                                                                                              • \n", + "
                                                                                              • קבל את רשימת המסעדות בצרפת ואת הדירוגים שלהן, והחזר את 3 המסעדות בעלות הדירוג הגבוה ביותר.
                                                                                              • \n", "
                                                                                              " ] }, @@ -46,9 +46,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - " מה משותף לכל הבעיות שהוצגו למעלה?
                                                                                              \n", - " דרך ראויה לפתור אותן היא בעזרת לולאה שתעבור על כל האיברים שהוצגו בבעיה, ותבצע על כל איבר סדרת פעולות.
                                                                                              \n", + "

                                                                                              \n", + " מה משותף לכל הבעיות שהוצגו למעלה?
                                                                                              \n", + " דרך ראויה לפתור אותן היא בעזרת לולאה שתעבור על כל האיברים שהוצגו בבעיה, ותבצע על כל איבר סדרת פעולות.
                                                                                              \n", " נכתוב בפסאודו־קוד דוגמה לפתרון הבעיה הראשונה – מציאת הגובה של התלמיד הגבוה ביותר בכיתה:\n", "

                                                                                              " ] @@ -57,23 +57,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                \n", - "
                                                                                              1. קלוט רשימת גבהים לתוך המשתנה גבהים.
                                                                                              2. \n", - "
                                                                                              3. אפס את המשתנה ששמו הכי_גבוה_שמצאנו כך שיכיל את הערך 0.
                                                                                              4. \n", - "
                                                                                              5. \n", - " עבור כל גובה שנמצא בתוך גבהים:\n", + "
                                                                                                  \n", + "
                                                                                                1. קלוט רשימת גבהים לתוך המשתנה גבהים.
                                                                                                2. \n", + "
                                                                                                3. אפס את המשתנה ששמו הכי_גבוה_שמצאנו כך שיכיל את הערך 0.
                                                                                                4. \n", + "
                                                                                                5. \n", + "עבור כל גובה שנמצא בתוך גבהים:\n", "
                                                                                                    \n", - "
                                                                                                  1. \n", - " אם הערך של גובה גדול יותר מהכי_גבוה_שמצאנו:\n", + "
                                                                                                  2. \n", + "אם הערך של גובה גדול יותר מהכי_גבוה_שמצאנו:\n", "
                                                                                                      \n", - "
                                                                                                    1. \n", - " שים בתוך הכי_גבוה_שמצאנו את הערך של גובה.\n", + "
                                                                                                    2. \n", + "שים בתוך הכי_גבוה_שמצאנו את הערך של גובה.\n", "
                                                                                                    3. \n", - "
                                                                                                    \n", - "
                                                                                                  3. \n", - "
                                                                                                  \n", - "
                                                                                                6. \n", - "
                                                                                                7. החזר את הכי_גבוה_שמצאנו.
                                                                                                8. \n", + "
                                                                                                \n", + "
                                                                                              6. \n", + "
                                                                                              \n", + "\n", + "
                                                                                            • החזר את הכי_גבוה_שמצאנו.
                                                                                            • \n", "
                                                                                          " ] }, @@ -81,22 +81,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                          \n", - "
                                                                                          \n", - " \"תרגול\" \n", - "
                                                                                          \n", - "
                                                                                          \n", - "

                                                                                          \n", - " ממשו פונקציה שמקבלת רשימת גבהים של האנשים בכיתה, ומחזירה את הגובה של התלמיד הגבוה ביותר.
                                                                                          \n", + "

                                                                                          \n", + "
                                                                                          \n", + "\"תרגול\"\n", + "
                                                                                          \n", + "
                                                                                          \n", + "

                                                                                          \n", + " ממשו פונקציה שמקבלת רשימת גבהים של האנשים בכיתה, ומחזירה את הגובה של התלמיד הגבוה ביותר.
                                                                                          \n", " לדוגמה, עבור הרשימה [1.50, 1.84, 1.73, 1.51] החזירו 1.84.\n", "

                                                                                          \n", - "
                                                                                          \n", - "
                                                                                          \n", - "

                                                                                          \n", - " חשוב!
                                                                                          \n", + "

                                                                                          \n", + "
                                                                                          \n", + "

                                                                                          \n", + "חשוב!
                                                                                          \n", " פתרו לפני שתמשיכו!\n", "

                                                                                          \n", - "
                                                                                          \n", + "
                                                                                          \n", "
                                                                                          " ] }, @@ -104,16 +104,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### לולאת while" + "### לולאת while" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", - " עד כה, אחד מהשימושים הנפוצים שעשינו בלולאת while היה לעבור על איברים ברשימה באמצעות מיקום.
                                                                                          \n", - " הקוד שכתבתם בתרגול למעלה, שבו הייתם צריכים לעבור על גובהי התלמידים, זה אחר זה, הוא דוגמה טובה לכך.
                                                                                          \n", + "

                                                                                          \n", + " עד כה, אחד מהשימושים הנפוצים שעשינו בלולאת while היה לעבור על איברים ברשימה באמצעות מיקום.
                                                                                          \n", + " הקוד שכתבתם בתרגול למעלה, שבו הייתם צריכים לעבור על גובהי התלמידים, זה אחר זה, הוא דוגמה טובה לכך.
                                                                                          \n", " ייתכן שהקוד שלכם דומה לקוד שאני כתבתי לפתרון התרגיל הזה:\n", "

                                                                                          " ] @@ -143,17 +143,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                          \n", + "

                                                                                          \n", " הקוד בתא האחרון עושה את הפעולות הבאות:\n", "

                                                                                          \n", - "\n", - "
                                                                                            \n", - "
                                                                                          • איפוס המשתנה max_height_so_far, ששומר את הגובה המרבי שמצאנו עד כה ברשימה.
                                                                                          • \n", - "
                                                                                          • איפוס המשתנה current_student_index, שמצביע על מיקום התלמיד שאנחנו בודקים באיטרציה הנוכחית של הלולאה.
                                                                                          • \n", - "
                                                                                          • בכל איטרציה, הביטוי student_heights[current_student_index] ישיג את גובהו של אחד התלמידים, לפי הסדר.
                                                                                          • \n", - "
                                                                                          • אם התלמיד הנבדק גבוה יותר מהתלמיד הכי גבוה שמצאנו עד עכשיו, שמור את הגובה המרבי החדש בתוך max_height_so_far.
                                                                                          • \n", - "
                                                                                          • קדם את current_student_index כך שיצביע לתא שבו מופיע התלמיד הבא.
                                                                                          • \n", - "
                                                                                          • בסיום המעבר על כל הערכים, החזר את max_height_so_far.
                                                                                          • \n", + "
                                                                                              \n", + "
                                                                                            • איפוס המשתנה max_height_so_far, ששומר את הגובה המרבי שמצאנו עד כה ברשימה.
                                                                                            • \n", + "
                                                                                            • איפוס המשתנה current_student_index, שמצביע על מיקום התלמיד שאנחנו בודקים באיטרציה הנוכחית של הלולאה.
                                                                                            • \n", + "
                                                                                            • בכל איטרציה, הביטוי student_heights[current_student_index] ישיג את גובהו של אחד התלמידים, לפי הסדר.
                                                                                            • \n", + "
                                                                                            • אם התלמיד הנבדק גבוה יותר מהתלמיד הכי גבוה שמצאנו עד עכשיו, שמור את הגובה המרבי החדש בתוך max_height_so_far.
                                                                                            • \n", + "
                                                                                            • קדם את current_student_index כך שיצביע לתא שבו מופיע התלמיד הבא.
                                                                                            • \n", + "
                                                                                            • בסיום המעבר על כל הערכים, החזר את max_height_so_far.
                                                                                            • \n", "
                                                                                            " ] }, @@ -161,8 +160,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - " הלולאה שמופיעה תעבור על מספרי התאים ברשימה ותבדוק את התוכן שלהם.
                                                                                            \n", + "

                                                                                            \n", + " הלולאה שמופיעה תעבור על מספרי התאים ברשימה ותבדוק את התוכן שלהם.
                                                                                            \n", " עד כה, פעמים רבות השימוש שלנו בלולאות היה לצורך מעבר על כל האיברים של iterable כלשהו.\n", "

                                                                                            " ] @@ -171,7 +170,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", " למעשה, בדוגמה שלמעלה אנחנו מבצעים פעולה עבור כל איבר בתוך student_heights.\n", "

                                                                                            " ] @@ -180,22 +179,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## שימוש ב־for" + "## שימוש ב־for" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### שימוש בסיסי" + "### שימוש בסיסי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", - "בפעמים שבהן אנחנו רוצים לבצע דבר מה עבור כל אחד מהאיברים במבנה כלשהו, נשתמש בלולאת for.
                                                                                            \n", + "

                                                                                            \n", + "בפעמים שבהן אנחנו רוצים לבצע דבר מה עבור כל אחד מהאיברים במבנה כלשהו, נשתמש בלולאת for.
                                                                                            \n", "נראה, לדוגמה, איך נשתמש בלולאת while כדי להדפיס את שמותיהן של כל התלמידות בכיתה:\n", "

                                                                                            " ] @@ -226,7 +225,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "בעברית, היינו משתמשים בנוסח דומה לזה: עבור כל שם של תלמידה בתוך רשימת שמות התלמידות שבכיתה, הדפס את שם התלמידה.

                                                                                            " ] }, @@ -234,7 +233,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", " נכתוב בפייתון, הפעם בעזרת לולאת for:\n", "

                                                                                            " ] @@ -253,7 +252,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "השוו את האלגנטיות של הקוד הזה לאלגנטיות של הקוד שמשתמש בלולאת while, ואת הדמיון בין כל אחת מהן לבין הנוסח המילולי שכתבנו.\n", "

                                                                                            " ] @@ -262,14 +261,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### איך זה עובד?" + "### איך זה עובד?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                            \n", + "

                                                                                            \n", "לולאת ה־for שראיתם מתחלקת ל־3 חלקים:\n", "

                                                                                            " ] @@ -278,10 +277,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                            1. iterable כלשהו – נסתכל על כל האיברים שבו לפי הסדר שלהם.
                                                                                            2. \n", - "
                                                                                            3. שם משתנה חדש שנמציא – פייתון תיצור אותו במיוחד עבור הלולאה. המשתנה הזה יצביע בכל פעם על איבר אחד, לפי הסדר, מתוך ה־iterable.
                                                                                            4. \n", - "
                                                                                            5. הפעולה או הפעולות שאנחנו רוצים לבצע על כל אחד מהאיברים האלו.
                                                                                            6. \n", + "
                                                                                                \n", + "
                                                                                              1. iterable כלשהו – נסתכל על כל האיברים שבו לפי הסדר שלהם.
                                                                                              2. \n", + "
                                                                                              3. שם משתנה חדש שנמציא – פייתון תיצור אותו במיוחד עבור הלולאה. המשתנה הזה יצביע בכל פעם על איבר אחד, לפי הסדר, מתוך ה־iterable.
                                                                                              4. \n", + "
                                                                                              5. הפעולה או הפעולות שאנחנו רוצים לבצע על כל אחד מהאיברים האלו.
                                                                                              6. \n", "
                                                                                              " ] }, @@ -303,7 +302,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "נבחן את הלולאה שמדפיסה את שמות התלמידות בכיתה, שלב אחר שלב, כדי להבין איך לולאת for פועלת.\n", "

                                                                                              " ] @@ -312,16 +311,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"אזהרה!\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " כמה מקטעי הקוד הבאים לא ירוצו, כיוון שחלק מהקוד מסומן בהערה.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"אזהרה!\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + " כמה מקטעי הקוד הבאים לא ירוצו, כיוון שחלק מהקוד מסומן בהערה.
                                                                                              \n", " המטרה של קטעי הקוד בחלק הזה של המחברת היא להדגיש איזה קוד רץ באותו רגע.\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -339,39 +338,39 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                              תוכן המשתנה names_of_students_in_class
                                                                                              01234567
                                                                                              \"Galia\"\"Hadas\"\"Hen\"\"Ilana\"\"Ivria\"\"Karin\"\"Maya\"\"Noa\"
                                                                                              -8-7-6-5-4-3-2-1
                                                                                              תוכן המשתנה names_of_students_in_class
                                                                                              01234567
                                                                                              \"Galia\"\"Hadas\"\"Hen\"\"Ilana\"\"Ivria\"\"Karin\"\"Maya\"\"Noa\"
                                                                                              -8-7-6-5-4-3-2-1
                                                                                              " ] }, @@ -379,8 +378,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "בחזרור הראשון, המשתנה החדש שיצרנו, בשם student_name, יצביע על הערך הראשון ברשימה, Galia.
                                                                                              \n", + "

                                                                                              \n", + "בחזרור הראשון, המשתנה החדש שיצרנו, בשם student_name, יצביע על הערך הראשון ברשימה, Galia.
                                                                                              \n", "נשים לב שהמשתנה student_name לא היה קיים לפני הלולאה, והלולאה היא המבנה הקסום שיוצר את המשתנה וגורם לו להצביע לערכים:\n", "

                                                                                              " ] @@ -400,39 +399,39 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                              חזרור ראשון, student_name מצביע על \"Galia\"
                                                                                              01234567
                                                                                              \"Galia\"\"Hadas\"\"Hen\"\"Ilana\"\"Ivria\"\"Karin\"\"Maya\"\"Noa\"
                                                                                              student_name -7-6-5-4-3-2-1
                                                                                              חזרור ראשון, student_name מצביע על \"Galia\"
                                                                                              01234567
                                                                                              \"Galia\"\"Hadas\"\"Hen\"\"Ilana\"\"Ivria\"\"Karin\"\"Maya\"\"Noa\"
                                                                                              student_name -7-6-5-4-3-2-1
                                                                                              \n", "
                                                                                              \n", "
                                                                                              " @@ -442,7 +441,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "מייד לאחר מכן יודפס התוכן שאליו student_name מצביע:

                                                                                              " ] }, @@ -460,8 +459,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "סיימנו את האיטרציה! מה עכשיו?
                                                                                              \n", + "

                                                                                              \n", + "סיימנו את האיטרציה! מה עכשיו?
                                                                                              \n", "עולים חזרה לראש הלולאה כדי לבדוק אם נשארו עוד איברים לעבור עליהם:

                                                                                              " ] }, @@ -479,7 +478,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "המשתנה student_name יעבור להצביע על האיבר הבא, Hadas:\n", "

                                                                                              " ] @@ -489,39 +488,39 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                              חזרור שני, student_name מצביע על \"Hadas\"
                                                                                              01234567
                                                                                              \"Galia\"\"Hadas\"\"Hen\"\"Ilana\"\"Ivria\"\"Karin\"\"Maya\"\"Noa\"
                                                                                              -8student_name -6-5-4-3-2-1
                                                                                              חזרור שני, student_name מצביע על \"Hadas\"
                                                                                              01234567
                                                                                              \"Galia\"\"Hadas\"\"Hen\"\"Ilana\"\"Ivria\"\"Karin\"\"Maya\"\"Noa\"
                                                                                              -8student_name -6-5-4-3-2-1
                                                                                              \n", "
                                                                                              \n", "
                                                                                              " @@ -531,7 +530,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "ושוב, נדפיס את המחרוזת ש־student_name מצביע עליה:\n", "

                                                                                              " ] @@ -550,7 +549,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "כך נמשיך לבצע את הלולאה, עד שנגיע לאיבר האחרון ברשימה, התלמידה Noa:\n", "

                                                                                              " ] @@ -570,39 +569,39 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                              חזרור אחרון, student_name מצביע על \"Noa\"
                                                                                              01234567
                                                                                              \"Galia\"\"Hadas\"\"Hen\"\"Ilana\"\"Ivria\"\"Karin\"\"Maya\"\"Noa\"
                                                                                              -8-7-6-5-4-3-2student_name
                                                                                              חזרור אחרון, student_name מצביע על \"Noa\"
                                                                                              01234567
                                                                                              \"Galia\"\"Hadas\"\"Hen\"\"Ilana\"\"Ivria\"\"Karin\"\"Maya\"\"Noa\"
                                                                                              -8-7-6-5-4-3-2student_name
                                                                                              \n", "
                                                                                              \n", "
                                                                                              " @@ -612,7 +611,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", + "

                                                                                              \n", "נדפיס בפעם האחרונה את המחרוזת שעליה אנחנו מצביעים:\n", "

                                                                                              " ] @@ -631,8 +630,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                              \n", - "כשנחזור לראש הלולאה, נראה שעברנו על כל האיברים.
                                                                                              \n", + "

                                                                                              \n", + "כשנחזור לראש הלולאה, נראה שעברנו על כל האיברים.
                                                                                              \n", "הלולאה תיפסק, וירוץ הקוד שנמצא אחרי הלולאה.\n", "

                                                                                              " ] @@ -641,32 +640,32 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "
                                                                                              החלקים בלולאת for
                                                                                              החלק בלולאהאיפה בקודדוגמה
                                                                                              המבנה שאנחנו רוצים לעבור על כלל איבריו – חייב להיות iterableאחרי המילה innames_of_students_in_class
                                                                                              שם שנמציא למשתנה – בכל חזרור יכיל איבר מתוך ה־iterableאחרי המילה for, לפני המילה instudent_name
                                                                                              תוכן הלולאה – הפעולות שנרצה לבצע על כל איבראחרי הנקודתיים, בשורה חדשה (אחת או יותר), בהזחהprint(student_name)
                                                                                              \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                              החלקים בלולאת for
                                                                                              החלק בלולאהאיפה בקודדוגמה
                                                                                              המבנה שאנחנו רוצים לעבור על כלל איבריו – חייב להיות iterableאחרי המילה innames_of_students_in_class
                                                                                              שם שנמציא למשתנה – בכל חזרור יכיל איבר מתוך ה־iterableאחרי המילה for, לפני המילה instudent_name
                                                                                              תוכן הלולאה – הפעולות שנרצה לבצע על כל איבראחרי הנקודתיים, בשורה חדשה (אחת או יותר), בהזחהprint(student_name)
                                                                                              " ] }, @@ -674,22 +673,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                              \n", - "
                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " שנו את הקוד שכתבתם למציאת האדם הגבוה ביותר בכיתה, כך שישתמש ב־for ולא ב־while.
                                                                                              \n", - " טיפ: השתמשו בפסאודו־קוד שהוצג לפני כן, והשוו בין ה־for לבין ה־while בדוגמה של הדפסת שמות התלמידים.
                                                                                              \n", - "

                                                                                              \n", - "
                                                                                              \n", - "
                                                                                              \n", - "

                                                                                              \n", - " חשוב!
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + " שנו את הקוד שכתבתם למציאת האדם הגבוה ביותר בכיתה, כך שישתמש ב־for ולא ב־while.
                                                                                              \n", + " טיפ: השתמשו בפסאודו־קוד שהוצג לפני כן, והשוו בין ה־for לבין ה־while בדוגמה של הדפסת שמות התלמידים.
                                                                                              \n", + "

                                                                                              \n", + "
                                                                                              \n", + "
                                                                                              \n", + "

                                                                                              \n", + "חשוב!
                                                                                              \n", " פתרו לפני שתמשיכו!\n", "

                                                                                              \n", - "
                                                                                              \n", + "
                                                                                              \n", "
                                                                                              " ] }, @@ -697,18 +696,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### דוגמאות מילוליות נוספות" + "### דוגמאות מילוליות נוספות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                \n", - "
                                                                                              • עבור כל עמוד בספר – קרא את העמוד.
                                                                                              • \n", - "
                                                                                              • עבור כל צלחת – שטוף אותה במים חמים, קרצף אותה היטב בסקוץ' ספוג בסבון, נגב אותה במגבת יבשה ואחסן אותה בארון.
                                                                                              • \n", - "
                                                                                              • בהינתן רשימה של 1,000 תלמידים, חשב את הגובה הממוצע של תלמיד.
                                                                                              • \n", - "
                                                                                              • בליל כל הקדושים, התחפש, צא החוצה, ועבור כל בית ברחוב: גש לדלת, צלצל בפעמון, אמור \"ממתק או תעלול\", קח ממתק ואמור תודה.
                                                                                              • \n", + "
                                                                                                  \n", + "
                                                                                                • עבור כל עמוד בספר – קרא את העמוד.
                                                                                                • \n", + "
                                                                                                • עבור כל צלחת – שטוף אותה במים חמים, קרצף אותה היטב בסקוץ' ספוג בסבון, נגב אותה במגבת יבשה ואחסן אותה בארון.
                                                                                                • \n", + "
                                                                                                • בהינתן רשימה של 1,000 תלמידים, חשב את הגובה הממוצע של תלמיד.
                                                                                                • \n", + "
                                                                                                • בליל כל הקדושים, התחפש, צא החוצה, ועבור כל בית ברחוב: גש לדלת, צלצל בפעמון, אמור \"ממתק או תעלול\", קח ממתק ואמור תודה.
                                                                                                • \n", "
                                                                                                " ] }, @@ -716,16 +715,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מתי להשתמש?" + "### מתי להשתמש?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "לולאת for יוצרת מבנה אלגנטי וקריא, ומתכנתים רבים מעדיפים אותה על פני לולאת while.
                                                                                                \n", - "ננסה לעמוד על ההבדלים בין הלולאות:
                                                                                                \n", + "

                                                                                                \n", + "לולאת for יוצרת מבנה אלגנטי וקריא, ומתכנתים רבים מעדיפים אותה על פני לולאת while.
                                                                                                \n", + "ננסה לעמוד על ההבדלים בין הלולאות:
                                                                                                \n", "

                                                                                                " ] }, @@ -733,33 +732,33 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", - " \n", + "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                הבדלים בין while ל־for
                                                                                                נתון להשוואהלולאת forלולאת while
                                                                                                מה \"מניע\" את הלולאה?iterable שהלולאה תעבור על כל האיברים שלוביטוי שערכו הבוליאני שקול ל־True או ל־False
                                                                                                מתי הלולאה מפסיקהכשהלולאה עברה על כל האיברים של ה־iterableכשמגיעים לתנאי של הפונקציה וערכו שקול ל־False
                                                                                                שימושים עיקרייםביצוע פעולה עבור כל ערך בסדרת ערכים,\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", "
                                                                                                הבדלים בין while ל־for
                                                                                                נתון להשוואהלולאת forלולאת while
                                                                                                מה \"מניע\" את הלולאה?iterable שהלולאה תעבור על כל האיברים שלוביטוי שערכו הבוליאני שקול ל־True או ל־False
                                                                                                מתי הלולאה מפסיקהכשהלולאה עברה על כל האיברים של ה־iterableכשמגיעים לתנאי של הפונקציה וערכו שקול ל־False
                                                                                                שימושים עיקרייםביצוע פעולה עבור כל ערך בסדרת ערכים,\n", " כמו איברי רשימה או תווים במחרוזתחזרה על פעולה כל עוד מצאנו שהמשימה לא הושלמה
                                                                                                חזרה על פעולה כל עוד מצאנו שהמשימה לא הושלמה
                                                                                                " ] }, @@ -767,9 +766,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "בשלב הנוכחי בקורס, תמיד נוכל להשתמש בלולאת while במקום בלולאת for, אך לא תמיד נוכל להחליף לולאות for בלולאות while.
                                                                                                \n", - "באופן כללי, לולאות while יכולות להוכיח את עצמן כשימושיות מאוד מפעם לפעם.
                                                                                                \n", + "

                                                                                                \n", + "בשלב הנוכחי בקורס, תמיד נוכל להשתמש בלולאת while במקום בלולאת for, אך לא תמיד נוכל להחליף לולאות for בלולאות while.
                                                                                                \n", + "באופן כללי, לולאות while יכולות להוכיח את עצמן כשימושיות מאוד מפעם לפעם.
                                                                                                \n", "חשבו, לדוגמה, על מצב שבו אתם צריכים לקבל מהמשתמש קלט חדש כל עוד הקלט שלו לא תקין.\n", "

                                                                                                " ] @@ -778,21 +777,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                \n", - "
                                                                                                \n", - " \"תרגול\" \n", - "
                                                                                                \n", - "
                                                                                                \n", - "

                                                                                                \n", + "

                                                                                                \n", + "
                                                                                                \n", + "\"תרגול\"\n", + "
                                                                                                \n", + "
                                                                                                \n", + "

                                                                                                \n", " כתבו 3 דוגמאות מילוליות נוספות ללולאות for.\n", "

                                                                                                \n", - "
                                                                                                \n", - "
                                                                                                \n", - "

                                                                                                \n", - " חשוב!
                                                                                                \n", + "

                                                                                                \n", + "
                                                                                                \n", + "

                                                                                                \n", + "חשוב!
                                                                                                \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                \n", - "
                                                                                                \n", + "
                                                                                                \n", "
                                                                                                " ] }, @@ -800,36 +799,33 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: פורלולה 1" + "### תרגיל ביניים: פורלולה 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "בתחרות המרוצים \"פורלולה 1\", שבה משתתפות בקביעות 6 מכוניות מרוץ, אפשר להמר על הסדר שבו יגיעו המכוניות לקו הסיום.
                                                                                                \n", - "משתתף זוכה הוא משתתף שהצליח לנחש נכונה את סדר ההגעה של המכוניות לקו הסיום, עם לא יותר מ־2 טעויות.
                                                                                                \n", + "

                                                                                                \n", + "בתחרות המרוצים \"פורלולה 1\", שבה משתתפות בקביעות 6 מכוניות מרוץ, אפשר להמר על הסדר שבו יגיעו המכוניות לקו הסיום.
                                                                                                \n", + "משתתף זוכה הוא משתתף שהצליח לנחש נכונה את סדר ההגעה של המכוניות לקו הסיום, עם לא יותר מ־2 טעויות.
                                                                                                \n", "כתבו פונקציה שמקבלת הימור בודד ואת סדר ההגעה של המכוניות במרוץ, והחזירו אם ההימור זכה או הפסיד. \n", "

                                                                                                \n", - "\n", - "

                                                                                                \n", - "לדוגמה, במרוץ האחרון סדר ההגעה לקו הסיום היה:
                                                                                                \n", + "

                                                                                                \n", + "לדוגמה, במרוץ האחרון סדר ההגעה לקו הסיום היה:
                                                                                                \n", "[1, 2, 3, 4, 5, 6]\n", "

                                                                                                \n", - "\n", - "

                                                                                                \n", - "הנה דוגמאות להימורים של משתתפים ולתוצאתם:
                                                                                                \n", + "

                                                                                                \n", + "הנה דוגמאות להימורים של משתתפים ולתוצאתם:
                                                                                                \n", "

                                                                                                \n", - "\n", - "
                                                                                                  \n", - "
                                                                                                • [1, 2, 3, 4, 5, 6] – הימור זוכה (0 טעויות)
                                                                                                • \n", - "
                                                                                                • [2, 1, 3, 4, 5, 6] – הימור זוכה (2 טעויות)
                                                                                                • \n", - "
                                                                                                • [1, 2, 6, 4, 5, 3] – הימור זוכה (2 טעויות)
                                                                                                • \n", - "
                                                                                                • [1, 2, 4, 4, 5, 6] – הימור זוכה (טעות אחת)
                                                                                                • \n", - "
                                                                                                • [1, 6, 2, 4, 5, 3] – הימור מפסיד (3 טעויות)
                                                                                                • \n", - "
                                                                                                • [5, 3, 2, 4, 6, 1] – הימור מפסיד (5 טעויות)
                                                                                                • \n", - "
                                                                                                • [6, 5, 4, 3, 2, 1] – הימור מפסיד (6 טעויות)
                                                                                                • \n", + "
                                                                                                    \n", + "
                                                                                                  • [1, 2, 3, 4, 5, 6] – הימור זוכה (0 טעויות)
                                                                                                  • \n", + "
                                                                                                  • [2, 1, 3, 4, 5, 6] – הימור זוכה (2 טעויות)
                                                                                                  • \n", + "
                                                                                                  • [1, 2, 6, 4, 5, 3] – הימור זוכה (2 טעויות)
                                                                                                  • \n", + "
                                                                                                  • [1, 2, 4, 4, 5, 6] – הימור זוכה (טעות אחת)
                                                                                                  • \n", + "
                                                                                                  • [1, 6, 2, 4, 5, 3] – הימור מפסיד (3 טעויות)
                                                                                                  • \n", + "
                                                                                                  • [5, 3, 2, 4, 6, 1] – הימור מפסיד (5 טעויות)
                                                                                                  • \n", + "
                                                                                                  • [6, 5, 4, 3, 2, 1] – הימור מפסיד (6 טעויות)
                                                                                                  • \n", "
                                                                                                  " ] }, @@ -837,14 +833,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מבנים מורכבים" + "### מבנים מורכבים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", "הרשימה הבאה מכילה tuple־ים בגודל 2 איברים:\n", "

                                                                                                  " ] @@ -862,22 +858,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                  \n", - "
                                                                                                  \n", - " \"תרגול\" \n", - "
                                                                                                  \n", - "
                                                                                                  \n", - "

                                                                                                  \n", - " כתבו לולאת for שתדפיס עבור כל זוג מחרוזות ברשימה: Flip \"X\" to get \"Y\".
                                                                                                  \n", + "

                                                                                                  \n", + "
                                                                                                  \n", + "\"תרגול\"\n", + "
                                                                                                  \n", + "
                                                                                                  \n", + "

                                                                                                  \n", + " כתבו לולאת for שתדפיס עבור כל זוג מחרוזות ברשימה: Flip \"X\" to get \"Y\".
                                                                                                  \n", " לדוגמה, עבור הזוג האחרון מתוך 4 הזוגות, היא תדפיס: Flip \"ekans\" to get \"snake\".\n", "

                                                                                                  \n", - "
                                                                                                  \n", - "
                                                                                                  \n", - "

                                                                                                  \n", - " חשוב!
                                                                                                  \n", + "

                                                                                                  \n", + "
                                                                                                  \n", + "

                                                                                                  \n", + "חשוב!
                                                                                                  \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                  \n", - "
                                                                                                  \n", + "
                                                                                                  \n", "
                                                                                                  " ] }, @@ -885,8 +881,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - "כדי לפתור את התרגיל, כתבתם קוד שהשתמש במיקום של הערך הראשון (0) ושל הערך השני (1).
                                                                                                  \n", + "

                                                                                                  \n", + "כדי לפתור את התרגיל, כתבתם קוד שהשתמש במיקום של הערך הראשון (0) ושל הערך השני (1).
                                                                                                  \n", "כך אני פתרתי אותו:\n", "

                                                                                                  " ] @@ -907,8 +903,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - "נבחן דרך נוספת לפתור את התרגיל, רק שהפעם נשתמש בטריק שנקרא unpacking (או \"פירוק\").
                                                                                                  \n", + "

                                                                                                  \n", + "נבחן דרך נוספת לפתור את התרגיל, רק שהפעם נשתמש בטריק שנקרא unpacking (או \"פירוק\").
                                                                                                  \n", "כיוון שכל tuple ברשימת words מכיל בדיוק 2 איברים, נוכל לתת להם שמות כבר בראש הלולאה ולחלץ אותם מה־tuple:\n", "

                                                                                                  " ] @@ -927,9 +923,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - "בכל חזרור של הלולאה שכתובה למעלה, ה־for יעבור על tuple בודד מתוך words, בדיוק כמו שקרה עד עכשיו.
                                                                                                  \n", - "השינוי הוא שבמקום שה־tuple יישמר כמו שהוא במשתנה בודד שהוגדר בראש הלולאה, הערכים שבו \"יחולצו\" למשתנים בראש הלולאה.
                                                                                                  \n", + "

                                                                                                  \n", + "בכל חזרור של הלולאה שכתובה למעלה, ה־for יעבור על tuple בודד מתוך words, בדיוק כמו שקרה עד עכשיו.
                                                                                                  \n", + "השינוי הוא שבמקום שה־tuple יישמר כמו שהוא במשתנה בודד שהוגדר בראש הלולאה, הערכים שבו \"יחולצו\" למשתנים בראש הלולאה.
                                                                                                  \n", "הטריק הזה עובד כיוון שבראש הלולאה כתבנו מספר משתנים שזהה למספר הערכים שנמצאים בכל tuple.\n", "

                                                                                                  " ] @@ -938,9 +934,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - "לפניכם תרשים המתאר את תוכן המשתנה words.
                                                                                                  \n", - "הטבלה הגדולה מייצגת את הרשימה words, וכל אחד מהתאים שבה מייצג tuple בתוך הרשימה.
                                                                                                  \n", + "

                                                                                                  \n", + "לפניכם תרשים המתאר את תוכן המשתנה words.
                                                                                                  \n", + "הטבלה הגדולה מייצגת את הרשימה words, וכל אחד מהתאים שבה מייצג tuple בתוך הרשימה.
                                                                                                  \n", "בכל חזרור של ה־for המופיע למעלה, המשתנה word יקבל ערך שמסומן באדום, והמשתנה reversed_word יקבל את הערך הירוק התואם לו. \n", "

                                                                                                  " ] @@ -950,95 +946,95 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", - " \n", + "\n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
                                                                                                  תצוגה של המשתנה words ושל צורת הפירוק שלו
                                                                                                  0123
                                                                                                  \n", + "
                                                                                                  תצוגה של המשתנה words ושל צורת הפירוק שלו
                                                                                                  0123
                                                                                                  \n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                  01
                                                                                                  \"star\"\"rats\"
                                                                                                  -2-1
                                                                                                  01
                                                                                                  \"star\"\"rats\"
                                                                                                  -2-1
                                                                                                  \n", - "
                                                                                                  \n", + "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
                                                                                                  01
                                                                                                  \"wolf\"\"flow\"
                                                                                                  -2-1
                                                                                                  \n", - "
                                                                                                  \n", + "
                                                                                                  01
                                                                                                  \"wolf\"\"flow\"
                                                                                                  -2-1
                                                                                                  \n", + "
                                                                                                \n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                01
                                                                                                \"racecar\"\"racecar\"
                                                                                                -2-1
                                                                                                01
                                                                                                \"racecar\"\"racecar\"
                                                                                                -2-1
                                                                                                \n", - "
                                                                                                \n", + "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                01
                                                                                                \"ekans\"\"snake\"
                                                                                                -2-1
                                                                                                01
                                                                                                \"ekans\"\"snake\"
                                                                                                -2-1
                                                                                                \n", - "
                                                                                                -4-3-2-1
                                                                                                -4-3-2-1
                                                                                                " ] }, @@ -1046,15 +1042,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שינויים בתוך הלולאה" + "### שינויים בתוך הלולאה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "בדרך כלל נעדיף להימנע משינוי רשימה בזמן ביצוע לולאת for.
                                                                                                \n", + "

                                                                                                \n", + "בדרך כלל נעדיף להימנע משינוי רשימה בזמן ביצוע לולאת for.
                                                                                                \n", "שינויים כאלו עלולים לגרום להתנהגות בלתי צפויה, ללולאות אין־סופיות ולקוד קשה במיוחד לקריאה.\n", "

                                                                                                " ] @@ -1063,14 +1059,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### שינוי של מספר האיברים ברשימה בזמן ריצת הלולאה" + "#### שינוי של מספר האיברים ברשימה בזמן ריצת הלולאה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " נבחן את קטע הקוד הבא, שעבור כל איבר ברשימה, מוציא איבר מסוף הרשימה:\n", "

                                                                                                " ] @@ -1092,8 +1088,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - " הלולאה הסתיימה מוקדם מהרגיל, כיוון שכשניסתה להגיע לתא שערכו 'd' הוא כבר לא היה שם.
                                                                                                \n", + "

                                                                                                \n", + " הלולאה הסתיימה מוקדם מהרגיל, כיוון שכשניסתה להגיע לתא שערכו 'd' הוא כבר לא היה שם.
                                                                                                \n", " קוד שכזה אינו צפוי, קשה לקריאה ויוצר תקלים. מומלץ מאוד לא לשנות את מספר האיברים ב־iterable בזמן הריצה.\n", "

                                                                                                " ] @@ -1102,7 +1098,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " פתרון אפשרי הוא ליצור עותק של הרשימה באמצעות הפעולה list.copy() ולהשתמש בו במקום:\n", "

                                                                                                " ] @@ -1125,14 +1121,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### עריכת הערכים שנמצאים ב־iterable" + "#### עריכת הערכים שנמצאים ב־iterable" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " ננסה להכפיל כל תא ברשימה שלנו פי 2:\n", "

                                                                                                " ] @@ -1159,7 +1155,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " נוכל לראות שהרשימה נותרה ללא שינוי, למרות הלולאה שתכליתה היה להכפיל את איברי הרשימה פי 2.\n", "

                                                                                                " ] @@ -1168,9 +1164,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - " כדי להבין למה זה קרה, ננסה להיזכר בשיעור על mutability.
                                                                                                \n", - " במהלך כל חזרור, המשתנה num מקבל ערך כלשהו להצביע עליו.
                                                                                                \n", + "

                                                                                                \n", + " כדי להבין למה זה קרה, ננסה להיזכר בשיעור על mutability.
                                                                                                \n", + " במהלך כל חזרור, המשתנה num מקבל ערך כלשהו להצביע עליו.
                                                                                                \n", " לדוגמה, בחזרור הראשון num מצביע על numbers[0], המקום הראשון ברשימה:\n", "

                                                                                                " ] @@ -1179,15 +1175,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"משתנה" + "\"משתנה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - " בעצם הפעולה num * 2 אנחנו יוצרים ערך חדש שמאוחסן בכתובת שונה.
                                                                                                \n", + "

                                                                                                \n", + " בעצם הפעולה num * 2 אנחנו יוצרים ערך חדש שמאוחסן בכתובת שונה.
                                                                                                \n", "

                                                                                                " ] }, @@ -1195,14 +1191,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"משתנה" + "\"משתנה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " הפעולה num = num * 2 לא באמת \"תשנה ערך בתוך num\", אלא תגרום לו להצביע על ערך אחר.\n", "

                                                                                                " ] @@ -1211,16 +1207,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"משתנה" + "\"משתנה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - " נסכם כך: המשתנה num הצביע תחילה על מספר שנמצא בתוך הרשימה, ועכשיו הוא מצביע על מספר אחר.
                                                                                                \n", - " ההשמה, כרגיל, שינתה את המקום שעליו המשתנה מצביע, ולא את הערך שהמשתנה מצביע עליו.
                                                                                                \n", + "

                                                                                                \n", + " נסכם כך: המשתנה num הצביע תחילה על מספר שנמצא בתוך הרשימה, ועכשיו הוא מצביע על מספר אחר.
                                                                                                \n", + " ההשמה, כרגיל, שינתה את המקום שעליו המשתנה מצביע, ולא את הערך שהמשתנה מצביע עליו.
                                                                                                \n", " בקוד שמתואר למעלה, לא שינינו את האיבר בתוך הרשימה.\n", "

                                                                                                " ] @@ -1229,14 +1225,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### דוגמאות נוספות" + "### דוגמאות נוספות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### סכום רשימה" + "#### סכום רשימה" ] }, { @@ -1259,7 +1255,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### ראשי תיבות" + "#### ראשי תיבות" ] }, { @@ -1291,14 +1287,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### סכום איברים חיוביים" + "#### סכום איברים חיוביים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " קלוט מהמשתמש מספרים. אם צריך, המר את הקלט כך שיהיה מסוג רשימה, ובה יהיו מספרים שלמים. סכום את האיברים הגדולים מ־0.\n", "

                                                                                                " ] @@ -1335,14 +1331,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### 7 בום" + "#### 7 בום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " סכום את האיברים שמופיעים בכל מקום שביעי ברשימה.\n", "

                                                                                                " ] @@ -1367,23 +1363,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### אקרוסטיכון" + "### אקרוסטיכון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "אקרוסטיכון הוא אמצעי ספרותי שבו משתמשים בכתיבת שירה.
                                                                                                \n", - "בשיר שבו יש אקרוסטיכון, כשנחבר את האות הראשונה בכל השורות, נקבל מסר מסוים.
                                                                                                \n", + "

                                                                                                \n", + "אקרוסטיכון הוא אמצעי ספרותי שבו משתמשים בכתיבת שירה.
                                                                                                \n", + "בשיר שבו יש אקרוסטיכון, כשנחבר את האות הראשונה בכל השורות, נקבל מסר מסוים.
                                                                                                \n", "ניקח לדוגמה את שירו של אדגר אלן פו, \"אקרוסטיכון\", שאותו הוא הקדיש ללטישיה אליזבת' לאנדון ובו מופיע האקרוסטיכון ELIZABETH:\n", "

                                                                                                " ] @@ -1392,16 +1388,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                \n", - " Elizabeth it is in vain you say
                                                                                                \n", - " Love not — thou sayest it in so sweet a way:
                                                                                                \n", - " In vain those words from thee or L.E.L.
                                                                                                \n", - " Zantippe's talents had enforced so well:
                                                                                                \n", - " Ah! if that language from thy heart arise,
                                                                                                \n", - " Breath it less gently forth — and veil thine eyes.
                                                                                                \n", - " Endymion, recollect, when Luna tried
                                                                                                \n", - " To cure his love — was cured of all beside —
                                                                                                \n", - " His follie — pride — and passion — for he died.
                                                                                                \n", + "
                                                                                                \n", + "Elizabeth it is in vain you say
                                                                                                \n", + "Love not — thou sayest it in so sweet a way:
                                                                                                \n", + "In vain those words from thee or L.E.L.
                                                                                                \n", + "Zantippe's talents had enforced so well:
                                                                                                \n", + "Ah! if that language from thy heart arise,
                                                                                                \n", + "Breath it less gently forth — and veil thine eyes.
                                                                                                \n", + "Endymion, recollect, when Luna tried
                                                                                                \n", + "To cure his love — was cured of all beside —
                                                                                                \n", + "His follie — pride — and passion — for he died.
                                                                                                \n", "
                                                                                                " ] }, @@ -1409,9 +1405,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - "כתבו פונקציה שמקבלת שיר כמחרוזת.
                                                                                                \n", - "החזירו את האקרוסטיכון שנוצר אם ניקח את האות הראשונה מכל שורה בשיר.
                                                                                                \n", + "

                                                                                                \n", + "כתבו פונקציה שמקבלת שיר כמחרוזת.
                                                                                                \n", + "החזירו את האקרוסטיכון שנוצר אם ניקח את האות הראשונה מכל שורה בשיר.
                                                                                                \n", "

                                                                                                " ] }, @@ -1419,26 +1415,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שעורה תרבותית" + "### שעורה תרבותית" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", - " שנים רבות חלפו מאז אותם ימי הקיץ בשדות השעורה, והזמרת סיגנט שכחה היכן החביאה את הזהב שלה.
                                                                                                \n", - " בידי סיגנט יש מפה, לפיה היא נמצאת כרגע בנקודה (0, 0) בשדה החיטה.
                                                                                                \n", - " המפה מתארת אילו צעדים היא צריכה לעשות כדי להגיע למטמון.
                                                                                                \n", + "

                                                                                                \n", + " שנים רבות חלפו מאז אותם ימי הקיץ בשדות השעורה, והזמרת סיגנט שכחה היכן החביאה את הזהב שלה.
                                                                                                \n", + " בידי סיגנט יש מפה, לפיה היא נמצאת כרגע בנקודה (0, 0) בשדה החיטה.
                                                                                                \n", + " המפה מתארת אילו צעדים היא צריכה לעשות כדי להגיע למטמון.
                                                                                                \n", " עזרו לסיגנט לחשב: בהינתן שהיא תלך לפי כל הצעדים שמופיעים במפה – באיזו נקודה יימצא המטמון?\n", "

                                                                                                \n", - "

                                                                                                \n", + "

                                                                                                \n", " לדוגמה: עבור הצעדים [(1, 5), (6, -2), (4, 3)] יוחזר שהמטמון נמצא בנקודה (11, 6).\n", "

                                                                                                \n", - "

                                                                                                \n", - " הסבר מורחב: קבלו רשימה של צעדים המורים לסיגנט כיצד ללכת.
                                                                                                \n", - " כל \"צעד\" מורכב מזוג מספרים שלמים, שיכולים להיות שליליים – הראשון מסמל כמה צעדים ללכת ימינה, והשני מסמל כמה צעדים ללכת למעלה.
                                                                                                \n", - " אם המספר הראשון שלילי, עליה ללכת את מספר הצעדים הזה שמאלה. אם המספר השני שלילי, עליה ללכת את מספר הצעדים הזה למטה.
                                                                                                \n", + "

                                                                                                \n", + "הסבר מורחב: קבלו רשימה של צעדים המורים לסיגנט כיצד ללכת.
                                                                                                \n", + " כל \"צעד\" מורכב מזוג מספרים שלמים, שיכולים להיות שליליים – הראשון מסמל כמה צעדים ללכת ימינה, והשני מסמל כמה צעדים ללכת למעלה.
                                                                                                \n", + " אם המספר הראשון שלילי, עליה ללכת את מספר הצעדים הזה שמאלה. אם המספר השני שלילי, עליה ללכת את מספר הצעדים הזה למטה.
                                                                                                \n", " כתבו פונקציה שמקבלת רשימה של צעדים ומחזירה את מיקום המטמון.\n", "

                                                                                                " ] @@ -1447,18 +1443,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### גבעת ווטרשיפ" + "### גבעת ווטרשיפ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                \n", + " בגבעת ווטרשיפ קצב ההתרבות גבוה. בכל שנה נוספים עוד ועוד ארנבים לארנבייה.
                                                                                                \n", + " חומש הארנב החליט לנהל מעקב דמוגרפי אחרי הגידול.
                                                                                                \n", + " הוא מעוניין שתבנו לו פונקציה שמקבלת כפרמטר רשימה של מספר הארנבים שנולדו בכל שנה.
                                                                                                \n", + " הפונקציה תחזיר רשימה שבה כל תא מייצג את הכמות הנצברת של הארנבים בארנבייה עד כה.
                                                                                                \n", " לדוגמה: עבור הרשימה [1, 2, 3, 4], הפונקציה תחזיר [1, 3, 6, 10].\n", "

                                                                                                " ] diff --git a/week4/2_Dictionaries.ipynb b/week4/2_Dictionaries.ipynb index 672f8c3..c10638e 100644 --- a/week4/2_Dictionaries.ipynb +++ b/week4/2_Dictionaries.ipynb @@ -4,28 +4,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# מילונים" + "# מילונים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                \n", + "

                                                                                                \n", " ברשימה הבאה, כל תבליט מייצג אוסף של נתונים:\n", "

                                                                                                " ] @@ -34,11 +34,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                  \n", - "
                                                                                                • בחנות של האדון קשטן יש 2 בננות, 3 תפוחים ו־4 גזרים.
                                                                                                • \n", - "
                                                                                                • מספר הזהות של ג'ני הוא 086753092, של קווין 133713370, של איינשטיין 071091797 ושל מנחם 111111118.
                                                                                                • \n", - "
                                                                                                • לקווין מהסעיף הקודם יש צוללות בצבע אדום וכחול. הצוללות של ג'ני מהסעיף הקודם בצבע שחור וירוק. הצוללת שלי צהובה.
                                                                                                • \n", - "
                                                                                                • המחיר של פאי בחנות של קשטן הוא 3.141 ש\"ח. המחיר של אווז מחמד בחנות של קשטן הוא 9.0053 ש\"ח.
                                                                                                • \n", + "
                                                                                                    \n", + "
                                                                                                  • בחנות של האדון קשטן יש 2 בננות, 3 תפוחים ו־4 גזרים.
                                                                                                  • \n", + "
                                                                                                  • מספר הזהות של ג'ני הוא 086753092, של קווין 133713370, של איינשטיין 071091797 ושל מנחם 111111118.
                                                                                                  • \n", + "
                                                                                                  • לקווין מהסעיף הקודם יש צוללות בצבע אדום וכחול. הצוללות של ג'ני מהסעיף הקודם בצבע שחור וירוק. הצוללת שלי צהובה.
                                                                                                  • \n", + "
                                                                                                  • המחיר של פאי בחנות של קשטן הוא 3.141 ש\"ח. המחיר של אווז מחמד בחנות של קשטן הוא 9.0053 ש\"ח.
                                                                                                  • \n", "
                                                                                                  " ] }, @@ -46,21 +46,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                  \n", - "
                                                                                                  \n", - " \"תרגול\" \n", - "
                                                                                                  \n", - "
                                                                                                  \n", - "

                                                                                                  \n", + "

                                                                                                  \n", + "
                                                                                                  \n", + "\"תרגול\"\n", + "
                                                                                                  \n", + "
                                                                                                  \n", + "

                                                                                                  \n", " נסו למצוא מאפיינים משותפים לאוספים שהופיעו מעלה.\n", "

                                                                                                  \n", - "
                                                                                                  \n", - "
                                                                                                  \n", - "

                                                                                                  \n", - " חשוב!
                                                                                                  \n", + "

                                                                                                  \n", + "
                                                                                                  \n", + "

                                                                                                  \n", + "חשוב!
                                                                                                  \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                  \n", - "
                                                                                                  \n", + "
                                                                                                  \n", "
                                                                                                  " ] }, @@ -68,10 +68,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - " אפשר לחלק כל אחד מהאוספים שכתבנו למעלה ל־2 קבוצות ערכים.
                                                                                                  \n", - " הראשונה – הנושאים של האוסף. עבור החנות של קשטן, לדוגמה, הפריט שאנחנו מחזיקים בחנות.
                                                                                                  \n", - " השנייה – הפריטים שהם נתון כלשהו בנוגע לפריט הראשון: המלאי של אותו פריט, לדוגמה.
                                                                                                  \n", + "

                                                                                                  \n", + " אפשר לחלק כל אחד מהאוספים שכתבנו למעלה ל־2 קבוצות ערכים.
                                                                                                  \n", + " הראשונה – הנושאים של האוסף. עבור החנות של קשטן, לדוגמה, הפריט שאנחנו מחזיקים בחנות.
                                                                                                  \n", + " השנייה – הפריטים שהם נתון כלשהו בנוגע לפריט הראשון: המלאי של אותו פריט, לדוגמה.
                                                                                                  \n", "

                                                                                                  " ] }, @@ -80,8 +80,8 @@ "metadata": {}, "source": [ "
                                                                                                  \n", - " \"בתמונה\n", - "
                                                                                                  חלוקת האוספים ל־2 קבוצות של ערכים.
                                                                                                  \n", + "\"בתמונה\n", + "
                                                                                                  חלוקת האוספים ל־2 קבוצות של ערכים.
                                                                                                  \n", "
                                                                                                  " ] }, @@ -89,8 +89,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - " פריטים מהקבוצה הראשונה לעולם לא יחזרו על עצמם – אין היגיון בכך ש\"תפוח ירוק\" יופיע פעמיים ברשימת המלאי בחנות, ולא ייתכן מצב של שני מספרי זהות זהים.
                                                                                                  \n", + "

                                                                                                  \n", + " פריטים מהקבוצה הראשונה לעולם לא יחזרו על עצמם – אין היגיון בכך ש\"תפוח ירוק\" יופיע פעמיים ברשימת המלאי בחנות, ולא ייתכן מצב של שני מספרי זהות זהים.
                                                                                                  \n", " הפריטים מהקבוצה השנייה, לעומת זאת, יכולים לחזור על עצמם – הגיוני שתהיה אותה כמות של בננות ותפוחים בחנות, או שיהיו אנשים בעלי מספרי זהות שונים שנקראים \"משה כהן\".\n", "

                                                                                                  " ] @@ -99,7 +99,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", " נבחן לעומק את המאפיינים המשותפים בדוגמאות שלעיל.\n", "

                                                                                                  " ] @@ -108,42 +108,42 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "
                                                                                                  המשותף לאוספים
                                                                                                  אוסףהערך הקושר (קבוצה ראשונה)הערך המתאים לו (קבוצה שנייה)הסבר
                                                                                                  מוצרים והמלאי שלהם בחנותהמוצר שנמכר בחנותהמלאי מאותו מוצריכולים להיות בחנות 5 תפוזים ו־5 תפוחים, אבל אין משמעות לחנות שיש בה 5 תפוחים וגם 3 תפוחים.
                                                                                                  מספרי הזהות של אזרחיםתעודת הזהותהשם של בעל מספר הזהותיכולים להיות הרבה אזרחים העונים לשם משה לוי, ולכל אחד מהם יהיה מספר זהות שונה. לא ייתכן שמספר זהות מסוים ישויך ליותר מאדם אחד.
                                                                                                  בעלות על צוללות צבעוניותבעל הצוללותצבע הצוללותיכול להיות שגם לקווין וגם לג'ני יש צוללות בצבעים זהים. ג'ני, קווין ואני הם אנשים ספציפיים, שאין יותר מ־1 מהם בעולם (עד שנמציא דרך לשבט אנשים).
                                                                                                  מוצרים ומחיריהםשם המוצרמחיר המוצרלכל מוצר מחיר נקוב. עבור שני מוצרים שונים בחנות יכול להיות מחיר זהה.
                                                                                                  \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                  המשותף לאוספים
                                                                                                  אוסףהערך הקושר (קבוצה ראשונה)הערך המתאים לו (קבוצה שנייה)הסבר
                                                                                                  מוצרים והמלאי שלהם בחנותהמוצר שנמכר בחנותהמלאי מאותו מוצריכולים להיות בחנות 5 תפוזים ו־5 תפוחים, אבל אין משמעות לחנות שיש בה 5 תפוחים וגם 3 תפוחים.
                                                                                                  מספרי הזהות של אזרחיםתעודת הזהותהשם של בעל מספר הזהותיכולים להיות הרבה אזרחים העונים לשם משה לוי, ולכל אחד מהם יהיה מספר זהות שונה. לא ייתכן שמספר זהות מסוים ישויך ליותר מאדם אחד.
                                                                                                  בעלות על צוללות צבעוניותבעל הצוללותצבע הצוללותיכול להיות שגם לקווין וגם לג'ני יש צוללות בצבעים זהים. ג'ני, קווין ואני הם אנשים ספציפיים, שאין יותר מ־1 מהם בעולם (עד שנמציא דרך לשבט אנשים).
                                                                                                  מוצרים ומחיריהםשם המוצרמחיר המוצרלכל מוצר מחיר נקוב. עבור שני מוצרים שונים בחנות יכול להיות מחיר זהה.
                                                                                                  " ] }, @@ -151,16 +151,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מיפוי ערכים" + "### מיפוי ערכים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                  \n", + " כמו שראינו בדוגמאות, מצב נפוץ במיוחד הוא הצורך לאחסן מיפוי בין ערכים.
                                                                                                  \n", + " נחשוב על המיפוי בחנות של קשטן, שבה הוא סופר את המלאי עבור כל מוצר.
                                                                                                  \n", " נוכל לייצג את מלאי המוצרים בחנות של קשטן באמצעות הידע שכבר יש לנו. נשתמש בקוד הבא:\n", "

                                                                                                  " ] @@ -179,9 +179,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - " עבור כל תא ברשימת items, שמרנו במקום התואם ברשימת stock את הכמות שנמצאת ממנו בחנות.
                                                                                                  \n", - " יש 4 גזרים, 3 תפוחים ו־2 בננות על המדף בחנות של אדון קשטן.
                                                                                                  \n", + "

                                                                                                  \n", + " עבור כל תא ברשימת items, שמרנו במקום התואם ברשימת stock את הכמות שנמצאת ממנו בחנות.
                                                                                                  \n", + " יש 4 גזרים, 3 תפוחים ו־2 בננות על המדף בחנות של אדון קשטן.
                                                                                                  \n", " שליפה של כמות המלאי עבור מוצר כלשהו בחנות תתבצע בצורה הבאה:\n", "

                                                                                                  " ] @@ -202,10 +202,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - " בשורה הראשונה בגוף הפונקציה מצאנו את מיקום המוצר שאנחנו מחפשים במלאי. נניח, \"תפוח\" מוחזק במקום 1 ברשימה.
                                                                                                  \n", - " בשורה השנייה פנינו לרשימה השנייה, זו שמאחסנת את המלאי עבור כל מוצר, ומצאנו את המלאי שנמצא באותו מיקום.
                                                                                                  \n", - " כמות היחידות של מוצר מאוחסנת במספר תא מסוים, התואם למספר התא ברשימה של שמות המוצרים. זו הסיבה לכך שהרעיון עובד.
                                                                                                  \n", + "

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

                                                                                                  " ] }, @@ -222,7 +222,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", " צורה נוספת למימוש אותו רעיון תהיה שמירה של זוגות סדורים בתוך רשימה של tuple־ים:\n", "

                                                                                                  " ] @@ -240,7 +240,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", " ברשימה הזו הרעיון נראה מובן יותר. בואו נממש דרך לחלץ איבר מסוים מתוך הרשימה:\n", "

                                                                                                  " ] @@ -263,9 +263,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", - " עבור כל tuple ברשימה, בדקנו אם שם הפריט שהוא מכיל תואם לשם הפריט שחיפשנו.
                                                                                                  \n", - " אם כן, החזרנו את הכמות של אותו פריט במלאי.
                                                                                                  \n", + "

                                                                                                  \n", + " עבור כל tuple ברשימה, בדקנו אם שם הפריט שהוא מכיל תואם לשם הפריט שחיפשנו.
                                                                                                  \n", + " אם כן, החזרנו את הכמות של אותו פריט במלאי.
                                                                                                  \n", " שימוש בפונקציה הזו נראה כך:\n", "

                                                                                                  " ] @@ -283,21 +283,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                  \n", - "
                                                                                                  \n", - " \"תרגול\" \n", - "
                                                                                                  \n", - "
                                                                                                  \n", - "

                                                                                                  \n", + "

                                                                                                  \n", + "
                                                                                                  \n", + "\"תרגול\"\n", + "
                                                                                                  \n", + "
                                                                                                  \n", + "

                                                                                                  \n", " השתמשו ב־unpacking שלמדנו במחברת הקודמת כדי לפשט את לולאת ה־for בקוד של get_stock.\n", "

                                                                                                  \n", - "
                                                                                                  \n", - "
                                                                                                  \n", - "

                                                                                                  \n", - " חשוב!
                                                                                                  \n", + "

                                                                                                  \n", + "
                                                                                                  \n", + "

                                                                                                  \n", + "חשוב!
                                                                                                  \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                  \n", - "
                                                                                                  \n", + "
                                                                                                  \n", "
                                                                                                  " ] }, @@ -305,22 +305,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                  \n", - "
                                                                                                  \n", - " \"תרגול\" \n", - "
                                                                                                  \n", - "
                                                                                                  \n", - "

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

                                                                                                  \n", + "
                                                                                                  \n", + "\"תרגול\"\n", + "
                                                                                                  \n", + "
                                                                                                  \n", + "

                                                                                                  \n", + " שני קטעי הקוד שנתנו כדוגמה פישטו את המצב יתר על המידה, והם אינם מתייחסים למצב שבו הפריט חסר במלאי.
                                                                                                  \n", " הרחיבו את הפונקציות get_stock כך שיחזירו 0 אם הפריט חסר במלאי.\n", "

                                                                                                  \n", - "
                                                                                                  \n", - "
                                                                                                  \n", - "

                                                                                                  \n", - " חשוב!
                                                                                                  \n", + "

                                                                                                  \n", + "
                                                                                                  \n", + "

                                                                                                  \n", + "חשוב!
                                                                                                  \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                  \n", - "
                                                                                                  \n", + "
                                                                                                  \n", "
                                                                                                  " ] }, @@ -328,24 +328,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הגדרה" + "## הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מה זה מילון?" + "### מה זה מילון?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                  " ] }, @@ -353,13 +353,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                  \n", + "

                                                                                                  \n", " ישנן דוגמאות אפשריות רבות לקשרים כאלו:\n", "

                                                                                                  \n", - "
                                                                                                    \n", - "
                                                                                                  1. קשר בין ערים בעולם לבין מספר האנשים שחיים בהן.
                                                                                                  2. \n", - "
                                                                                                  3. קשר בין ברקוד של מוצרים בחנות לבין מספר הפריטים במלאי מכל מוצר.
                                                                                                  4. \n", - "
                                                                                                  5. קשר בין מילים לבין רשימת הפירושים שלהן במילון אבן־שושן.
                                                                                                  6. \n", + "
                                                                                                      \n", + "
                                                                                                    1. קשר בין ערים בעולם לבין מספר האנשים שחיים בהן.
                                                                                                    2. \n", + "
                                                                                                    3. קשר בין ברקוד של מוצרים בחנות לבין מספר הפריטים במלאי מכל מוצר.
                                                                                                    4. \n", + "
                                                                                                    5. קשר בין מילים לבין רשימת הפירושים שלהן במילון אבן־שושן.
                                                                                                    6. \n", "
                                                                                                    " ] }, @@ -367,13 +367,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                    \n", - "לערך המצביע נקרא מפתח (key). זה האיבר מבין זוג האיברים שעל פיו נשמע הגיוני יותר לעשות חיפוש:
                                                                                                    \n", + "

                                                                                                    \n", + "לערך המצביע נקרא מפתח (key). זה האיבר מבין זוג האיברים שעל פיו נשמע הגיוני יותר לעשות חיפוש:
                                                                                                    \n", "

                                                                                                    \n", - "
                                                                                                      \n", - "
                                                                                                    1. העיר שאנחנו רוצים לדעת את מספר התושבים בה.
                                                                                                    2. \n", - "
                                                                                                    3. הברקוד שאנחנו רוצים לדעת כמה פריטים ממנו קיימים במלאי.
                                                                                                    4. \n", - "
                                                                                                    5. המילה שאת הפירושים שלה אנחנו רוצים למצוא.
                                                                                                    6. \n", + "
                                                                                                        \n", + "
                                                                                                      1. העיר שאנחנו רוצים לדעת את מספר התושבים בה.
                                                                                                      2. \n", + "
                                                                                                      3. הברקוד שאנחנו רוצים לדעת כמה פריטים ממנו קיימים במלאי.
                                                                                                      4. \n", + "
                                                                                                      5. המילה שאת הפירושים שלה אנחנו רוצים למצוא.
                                                                                                      6. \n", "
                                                                                                      " ] }, @@ -381,13 +381,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                      \n", - "לערך השני מבין שני הערכים בזוג, נקרא... ובכן, ערך (value). זה הנתון שנרצה למצוא לפי המפתח:
                                                                                                      \n", + "

                                                                                                      \n", + "לערך השני מבין שני הערכים בזוג, נקרא... ובכן, ערך (value). זה הנתון שנרצה למצוא לפי המפתח:
                                                                                                      \n", "

                                                                                                      \n", - "
                                                                                                        \n", - "
                                                                                                      1. מספר התושבים בעיר.
                                                                                                      2. \n", - "
                                                                                                      3. מספר הפריטים הקיימים במלאי עבור ברקוד מסוים.
                                                                                                      4. \n", - "
                                                                                                      5. הפירושים של המילה במילון.
                                                                                                      6. \n", + "
                                                                                                          \n", + "
                                                                                                        1. מספר התושבים בעיר.
                                                                                                        2. \n", + "
                                                                                                        3. מספר הפריטים הקיימים במלאי עבור ברקוד מסוים.
                                                                                                        4. \n", + "
                                                                                                        5. הפירושים של המילה במילון.
                                                                                                        6. \n", "
                                                                                                        " ] }, @@ -395,7 +395,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", + "

                                                                                                        \n", "אם כך, מילון הוא בסך הכול אוסף של זוגות שכאלו: מפתחות וערכים.

                                                                                                        " ] }, @@ -403,21 +403,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הבסיס" + "## הבסיס" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### יצירת מילון" + "### יצירת מילון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", + "

                                                                                                        \n", "ניצור מילון חדש:

                                                                                                        " ] }, @@ -434,8 +434,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", - "במילון הזה ישנם שלושה ערכים: הגיל של ים, של מתושלח ושל בייבי־גרוט.
                                                                                                        \n", + "

                                                                                                        \n", + "במילון הזה ישנם שלושה ערכים: הגיל של ים, של מתושלח ושל בייבי־גרוט.
                                                                                                        \n", "המפתחות במילון הזה הם Yam (הערך הקשור למפתח הזה הוא 27), Methuselah (עם הערך 969) ו־Baby Groot (אליו הוצמד הערך 3).\n", "

                                                                                                        " ] @@ -444,7 +444,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", + "

                                                                                                        \n", "יצרנו את המילון כך:\n", "

                                                                                                        " ] @@ -453,16 +453,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                          \n", - "
                                                                                                        1. פתחנו סוגריים מסולסלים.
                                                                                                        2. \n", - "
                                                                                                        3. יצרנו זוגות של מפתחות וערכים, מופרדים בפסיק:\n", + "
                                                                                                            \n", + "
                                                                                                          1. פתחנו סוגריים מסולסלים.
                                                                                                          2. \n", + "
                                                                                                          3. יצרנו זוגות של מפתחות וערכים, מופרדים בפסיק:\n", "
                                                                                                              \n", - "
                                                                                                            1. המפתח.
                                                                                                            2. \n", - "
                                                                                                            3. הפרדה בנקודתיים.
                                                                                                            4. \n", - "
                                                                                                            5. הערך.
                                                                                                            6. \n", - "
                                                                                                            \n", - "
                                                                                                          4. \n", - "
                                                                                                          5. סגרנו סוגריים מסולסלים.
                                                                                                          6. \n", + "
                                                                                                          7. המפתח.
                                                                                                          8. \n", + "
                                                                                                          9. הפרדה בנקודתיים.
                                                                                                          10. \n", + "
                                                                                                          11. הערך.
                                                                                                          12. \n", + "
                                                                                                          \n", + "
                                                                                                        4. \n", + "
                                                                                                        5. סגרנו סוגריים מסולסלים.
                                                                                                        6. \n", "
                                                                                                        " ] }, @@ -471,8 +471,8 @@ "metadata": {}, "source": [ "
                                                                                                        \n", - " \"בתמונה\n", - "
                                                                                                        המחשה למילון שבו 3 מפתחות ו־3 ערכים.
                                                                                                        \n", + "\"בתמונה\n", + "
                                                                                                        המחשה למילון שבו 3 מפתחות ו־3 ערכים.
                                                                                                        \n", "
                                                                                                        " ] }, @@ -480,7 +480,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", + "

                                                                                                        \n", "אפשר ליצור מילון ריק בעזרת פתיחה וסגירה של סוגריים מסולסלים:

                                                                                                        " ] }, @@ -497,21 +497,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                        \n", - "
                                                                                                        \n", - " \"תרגול\" \n", - "
                                                                                                        \n", - "
                                                                                                        \n", - "

                                                                                                        \n", + "

                                                                                                        \n", + "
                                                                                                        \n", + "\"תרגול\"\n", + "
                                                                                                        \n", + "
                                                                                                        \n", + "

                                                                                                        \n", " צרו מילון עבור המלאי בחנות של אדון קשטן.\n", "

                                                                                                        \n", - "
                                                                                                        \n", - "
                                                                                                        \n", - "

                                                                                                        \n", - " חשוב!
                                                                                                        \n", + "

                                                                                                        \n", + "
                                                                                                        \n", + "

                                                                                                        \n", + "חשוב!
                                                                                                        \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                        \n", - "
                                                                                                        \n", + "
                                                                                                        \n", "
                                                                                                        " ] }, @@ -519,14 +519,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אחזור ערך" + "### אחזור ערך" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", + "

                                                                                                        \n", "ניזכר כיצד מאחזרים ערך מתוך רשימה:\n", "

                                                                                                        " ] @@ -544,7 +544,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", + "

                                                                                                        \n", "כדי לחלץ את הערך שנמצא במקום 2 ברשימה names, נכתוב:\n", "

                                                                                                        " ] @@ -562,8 +562,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", - "עד כאן הכול מוכר.
                                                                                                        \n", + "

                                                                                                        \n", + "עד כאן הכול מוכר.
                                                                                                        \n", "ניקח את המילון שמייצג את המלאי בחנות של אדון קשטן:\n", "

                                                                                                        " ] @@ -581,7 +581,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", + "

                                                                                                        \n", "כדי לחלץ את ערך המלאי שנמצא במקום שבו המפתח הוא 'banana', נרשום את הביטוי הבא:\n", "

                                                                                                        " ] @@ -599,7 +599,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", + "

                                                                                                        \n", "כיוון שבמילון המפתח הוא זה שמצביע על הערך ולא להפך, אפשר לאחזר ערך לפי מפתח, אבל אי־אפשר לאחזר מפתח לפי ערך.

                                                                                                        " ] }, @@ -607,16 +607,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                        \n", - "
                                                                                                        \n", - " \"אזהרה!\" \n", - "
                                                                                                        \n", - "
                                                                                                        \n", - "

                                                                                                        \n", - " ביום־יום, השתמשו במילה \"בְּמָקוֹם\" (b'e-ma-qom) כתחליף למילים סוגריים מרובעים.
                                                                                                        \n", + "

                                                                                                        \n", + "
                                                                                                        \n", + "\"אזהרה!\"\n", + "
                                                                                                        \n", + "
                                                                                                        \n", + "

                                                                                                        \n", + " ביום־יום, השתמשו במילה \"בְּמָקוֹם\" (b'e-ma-qom) כתחליף למילים סוגריים מרובעים.
                                                                                                        \n", " לדוגמה: עבור שורת הקוד האחרונה, אימרו items במקום banana.\n", "

                                                                                                        \n", - "
                                                                                                        \n", + "
                                                                                                        \n", "
                                                                                                        " ] }, @@ -624,16 +624,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הוספה ועדכון" + "### הוספה ועדכון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                        \n", + "אפשר להוסיף מפתח וערך למילון, באמצעות השמת הערך אל המילון במקום של המפתח.
                                                                                                        \n", + "ניקח כדוגמה מקרה שבו יש לנו במלאי מלון אחד.
                                                                                                        \n", "המפתח הוא melon והערך הוא 1, ולכן נשתמש בהשמה הבאה: \n", "

                                                                                                        " ] @@ -651,7 +651,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                        \n", + "

                                                                                                        \n", "אם הגיעו עוד 4 מלונים לחנות של אדון קשטן, נוכל לעדכן את מלאי המלונים באמצעות השמה למקום הנכון במילון:\n", "

                                                                                                        " ] @@ -669,17 +669,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### כללי המשחק" + "### כללי המשחק" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                          \n", - "
                                                                                                        • לא יכולים להיות 2 מפתחות זהים במילון.
                                                                                                        • \n", - "
                                                                                                        • המפתחות במילון חייבים להיות immutables.
                                                                                                        • \n", - "
                                                                                                        • אנחנו נתייחס למילון כאל מבנה ללא סדר מסוים (אין \"איבר ראשון\" או \"איבר אחרון\").
                                                                                                        • \n", + "
                                                                                                            \n", + "
                                                                                                          • לא יכולים להיות 2 מפתחות זהים במילון.
                                                                                                          • \n", + "
                                                                                                          • המפתחות במילון חייבים להיות immutables.
                                                                                                          • \n", + "
                                                                                                          • אנחנו נתייחס למילון כאל מבנה ללא סדר מסוים (אין \"איבר ראשון\" או \"איבר אחרון\").
                                                                                                          • \n", "
                                                                                                          " ] }, @@ -687,16 +687,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                          \n", - "
                                                                                                          \n", - " \"העמקה\" \n", - "
                                                                                                          \n", - "
                                                                                                          \n", - "

                                                                                                          \n", - " בגרסאות האחרונות של פייתון הפך מילון להיות מבנה סדור, שבו סדר האיברים הוא סדר ההכנסה שלהם למילון.
                                                                                                          \n", + "

                                                                                                          \n", + "
                                                                                                          \n", + "\"העמקה\"\n", + "
                                                                                                          \n", + "
                                                                                                          \n", + "

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

                                                                                                          \n", - "
                                                                                                          \n", + "
                                                                                                          \n", "
                                                                                                          " ] }, @@ -704,18 +704,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סיכום ביניים" + "### סיכום ביניים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                          • מילון הוא מבנה שבנוי זוגות־זוגות: יש ערכים ומפתחות, ולכל מפתח יש ערך אחד שעליו הוא מצביע.
                                                                                                          • \n", - "
                                                                                                          • נתייחס למילון כאל מבנה ללא סדר מסוים. אין \"איבר ראשון\" או \"איבר אחרון\".
                                                                                                          • \n", - "
                                                                                                          • בניגוד לרשימה, כאן ה\"מקום\" שאליו אנחנו פונים כדי לאחזר ערך הוא המפתח, ולא מספר שמייצג את המקום הסידורי של התא.
                                                                                                          • \n", - "
                                                                                                          • בעזרת מפתח אפשר להגיע לערך המוצמד אליו, אבל לא להפך.
                                                                                                          • \n", + "
                                                                                                              \n", + "
                                                                                                            • מילון הוא מבנה שבנוי זוגות־זוגות: יש ערכים ומפתחות, ולכל מפתח יש ערך אחד שעליו הוא מצביע.
                                                                                                            • \n", + "
                                                                                                            • נתייחס למילון כאל מבנה ללא סדר מסוים. אין \"איבר ראשון\" או \"איבר אחרון\".
                                                                                                            • \n", + "
                                                                                                            • בניגוד לרשימה, כאן ה\"מקום\" שאליו אנחנו פונים כדי לאחזר ערך הוא המפתח, ולא מספר שמייצג את המקום הסידורי של התא.
                                                                                                            • \n", + "
                                                                                                            • בעזרת מפתח אפשר להגיע לערך המוצמד אליו, אבל לא להפך.
                                                                                                            • \n", "
                                                                                                            " ] }, @@ -723,16 +723,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " חדי העין שמו לב שאנחנו מצליחים להוסיף ערכים למילון, ולשנות בו ערכים קיימים.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " חדי העין שמו לב שאנחנו מצליחים להוסיף ערכים למילון, ולשנות בו ערכים קיימים.
                                                                                                            \n", " מהתכונה הזו אנחנו למדים שמילון הוא mutable.\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -740,22 +740,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מעבר על מילון" + "## מעבר על מילון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### לולאת for" + "### לולאת for" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "כיוון שמילון הוא iterable, דרך מקובלת לעבור עליו היא באמצעות לולאת for.
                                                                                                            \n", + "

                                                                                                            \n", + "כיוון שמילון הוא iterable, דרך מקובלת לעבור עליו היא באמצעות לולאת for.
                                                                                                            \n", "ננסה להשתמש בלולאת for על מילון, ונראה מה התוצאות:\n", "

                                                                                                            " ] @@ -775,8 +775,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " נראה שקיבלנו רק את המפתחות, בלי הערכים.
                                                                                                            \n", + "

                                                                                                            \n", + " נראה שקיבלנו רק את המפתחות, בלי הערכים.
                                                                                                            \n", " נסיק מכאן שמילון הוא אמנם iterable, אך בכל איטרציה הוא מחזיר לנו רק את המפתח, בלי הערך.\n", "

                                                                                                            " ] @@ -785,8 +785,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " אנחנו כבר יודעים איך מחלצים את הערך של מפתח מסוים.
                                                                                                            \n", + "

                                                                                                            \n", + " אנחנו כבר יודעים איך מחלצים את הערך של מפתח מסוים.
                                                                                                            \n", " נוכל להשתמש בידע הזה כדי לקבל בכל חזרור גם את המפתח, וגם את הערך:\n", "

                                                                                                            " ] @@ -808,7 +808,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "אבל הפתרון הזה לא נראה אלגנטי במיוחד, ונראה שנוכל למצוא אחד טוב יותר.\n", "

                                                                                                            " ] @@ -817,8 +817,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "לעזרתנו נחלצת הפעולה items, השייכת לערכים מסוג מילון.
                                                                                                            \n", + "

                                                                                                            \n", + "לעזרתנו נחלצת הפעולה items, השייכת לערכים מסוג מילון.
                                                                                                            \n", "הפעולה הזו מחזירה זוגות איברים, כאשר בכל זוג האיבר הראשון הוא המפתח והאיבר השני הוא הערך.\n", "

                                                                                                            " ] @@ -836,7 +836,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "מאחר שמדובר באיברים שבאים בזוגות, נוכל להשתמש בפירוק איברים כפי שלמדנו בשיעור על לולאות for:\n", "

                                                                                                            " ] @@ -856,9 +856,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "בלולאה שמופיעה למעלה ניצלנו את העובדה שהפעולה items מחזירה לנו איברים בזוגות: מפתח וערך.
                                                                                                            \n", - "בכל חזרור, אנחנו מכניסים למשתנה key את האיבר הראשון בזוג, ולמשתנה value את האיבר השני בזוג.
                                                                                                            \n", + "

                                                                                                            \n", + "בלולאה שמופיעה למעלה ניצלנו את העובדה שהפעולה items מחזירה לנו איברים בזוגות: מפתח וערך.
                                                                                                            \n", + "בכל חזרור, אנחנו מכניסים למשתנה key את האיבר הראשון בזוג, ולמשתנה value את האיבר השני בזוג.
                                                                                                            \n", "נוכל להיות אפילו אלגנטיים יותר ולתת למשתנים הללו שמות ראויים:\n", "

                                                                                                            " ] @@ -878,15 +878,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", " כתבו פונקציה שמקבלת מילון ומדפיסה עבור כל מפתח את האורך של הערך המוצמד אליו.\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -894,24 +894,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מפתחות שלא קיימים" + "## מפתחות שלא קיימים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### הבעיה" + "### הבעיה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                            \n", + "מילונים הם טיפוסים קצת רגישים. הם לא אוהבים כשמזכירים להם מה אין בהם.
                                                                                                            \n", + "אם ננסה לפנות למילון ולבקש ממנו מפתח שאין לו, נקבל הודעת שגיאה.
                                                                                                            \n", + "בפעמים הראשונות שתתעסקו עם מילונים, יש סיכוי לא מבוטל שתקבלו KeyError שנראה כך:
                                                                                                            \n", "

                                                                                                            " ] }, @@ -929,15 +929,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### in במילונים" + "### in במילונים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "יש כמה דרכים לפתור בעיה זו.
                                                                                                            \n", + "

                                                                                                            \n", + "יש כמה דרכים לפתור בעיה זו.
                                                                                                            \n", "דרך אפשרית אחת היא לבדוק שהמפתח קיים לפני שאנחנו ניגשים אליו:

                                                                                                            " ] }, @@ -955,8 +955,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "כאן השתמשנו באופרטור in כדי לבדוק אם מפתח מסוים נמצא במילון.
                                                                                                            \n", + "

                                                                                                            \n", + "כאן השתמשנו באופרטור in כדי לבדוק אם מפתח מסוים נמצא במילון.
                                                                                                            \n", "נוכל גם לבקש את הערך לאחר שבדקנו שהוא קיים:\n", "

                                                                                                            " ] @@ -981,9 +981,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "בקוד שלמעלה, השתמשנו באופרטור ההשוואה in כדי לבדוק אם מפתח מסוים (\"אכילס\") קיים בתוך המילון שיצרנו בשורה הראשונה.
                                                                                                            \n", - "אם הוא נמצא שם, חילצנו את הערך שמוצמד לאותו מפתח (ל\"אכילס\"). אם לא, המצאנו ערך משלנו – \"פוני\".
                                                                                                            \n", + "

                                                                                                            \n", + "בקוד שלמעלה, השתמשנו באופרטור ההשוואה in כדי לבדוק אם מפתח מסוים (\"אכילס\") קיים בתוך המילון שיצרנו בשורה הראשונה.
                                                                                                            \n", + "אם הוא נמצא שם, חילצנו את הערך שמוצמד לאותו מפתח (ל\"אכילס\"). אם לא, המצאנו ערך משלנו – \"פוני\".
                                                                                                            \n", "

                                                                                                            " ] }, @@ -991,16 +991,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " מעבר על מילון יחזיר בכל חזרור מפתח מהמילון, ללא הערך הקשור אליו.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " מעבר על מילון יחזיר בכל חזרור מפתח מהמילון, ללא הערך הקשור אליו.
                                                                                                            \n", " מסיבה זו, אופרטור ההשוואה in יבדוק רק אם קיים מפתח מסוים במילון, ולא יבדוק אם ערך שכזה קיים.\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -1008,23 +1008,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " כתבו פונקציה שמקבלת שלושה פרמטרים: מילון, מפתח וערך ברירת מחדל.
                                                                                                            \n", - " הפונקציה תחפש את המפתח במילון, ואם הוא קיים תחזיר את הערך שלו.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " כתבו פונקציה שמקבלת שלושה פרמטרים: מילון, מפתח וערך ברירת מחדל.
                                                                                                            \n", + " הפונקציה תחפש את המפתח במילון, ואם הוא קיים תחזיר את הערך שלו.
                                                                                                            \n", " אם המפתח לא קיים במילון, הפונקציה תחזיר את ערך ברירת המחדל.\n", "

                                                                                                            \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " חשוב!
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + "חשוב!
                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -1032,7 +1032,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "ננסה לכתוב את הרעיון בקוד שלמעלה כפונקציה כללית:\n", "

                                                                                                            " ] @@ -1054,9 +1054,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "הפונקציה שלמעלה מקבלת מילון, מפתח וערך ברירת מחדל.
                                                                                                            \n", - "אם היא מוצאת את המפתח במילון, היא מחזירה את הערך של אותו מפתח.
                                                                                                            \n", + "

                                                                                                            \n", + "הפונקציה שלמעלה מקבלת מילון, מפתח וערך ברירת מחדל.
                                                                                                            \n", + "אם היא מוצאת את המפתח במילון, היא מחזירה את הערך של אותו מפתח.
                                                                                                            \n", "אם היא לא מוצאת את המפתח במילון, היא מחזירה את ערך ברירת המחדל שנקבע.\n", "

                                                                                                            " ] @@ -1065,7 +1065,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "נבדוק שהפונקציה עובדת:\n", "

                                                                                                            " ] @@ -1085,7 +1085,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "ובכן, זו פונקציה כייפית. כמה נוח היה לו היא הייתה פעולה של מילון.

                                                                                                            " ] }, @@ -1093,15 +1093,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הפעולה get במילונים" + "### הפעולה get במילונים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "מי היה מאמין, יש פעולה כזו במילונים! ננסה להפעיל אותה על המילון שלנו.
                                                                                                            \n", + "

                                                                                                            \n", + "מי היה מאמין, יש פעולה כזו במילונים! ננסה להפעיל אותה על המילון שלנו.
                                                                                                            \n", "שימו לב לצורת הקריאה לפעולה, ששונה מהקריאה לפונקציה שכתבנו למעלה – שם המשתנה של המילון בא לפני שם הפעולה. מדובר בפעולה, ולא בפונקציה:\n", "

                                                                                                            " ] @@ -1121,9 +1121,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "טריק קסום אחרון שנראה הוא שהפעולה get סלחנית ממש, ומתפקדת גם אם לא נותנים לה ערך ברירת מחדל.
                                                                                                            \n", - "אם תספקו רק את שם המפתח שממנו תרצו לאחזר ערך, היא תחפש אותו ותחזיר את הערך שלו, אם הוא קיים.
                                                                                                            \n", + "

                                                                                                            \n", + "טריק קסום אחרון שנראה הוא שהפעולה get סלחנית ממש, ומתפקדת גם אם לא נותנים לה ערך ברירת מחדל.
                                                                                                            \n", + "אם תספקו רק את שם המפתח שממנו תרצו לאחזר ערך, היא תחפש אותו ותחזיר את הערך שלו, אם הוא קיים.
                                                                                                            \n", "אם המפתח לא קיים ולא סופק ערך ברירת מחדל, היא תחזיר את הערך None:\n", "

                                                                                                            " ] @@ -1143,16 +1143,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"תזכורת\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " הערך המיוחד None הוא דרך פייתונית להגיד \"כלום\".
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"תזכורת\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " הערך המיוחד None הוא דרך פייתונית להגיד \"כלום\".
                                                                                                            \n", " אפשר לדמיין אותו כמו רִיק (וָקוּם). לא הערך המספרי אפס, לא False. פשוט כלום.\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -1160,42 +1160,42 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            מילון
                                                                                                            טיפוס פייתוני שמאפשר לנו לשמור זוגות סדורים של מפתחות וערכים, שבהם כל מפתח מצביע על ערך.
                                                                                                            \n", "
                                                                                                            מפתח
                                                                                                            הנתון שלפיו נחפש את הערך הרצוי במילון, ויופיע כאיבר הראשון בזיווג שבין מפתח לערך.
                                                                                                            \n", "
                                                                                                            ערך
                                                                                                            הנתון שעליו מצביע המפתח במילון, יתקבל כאשר נחפש במילון לפי אותו מפתח. יופיע כאיבר השני בזיווג שבין מפתח לערך.
                                                                                                            \n", "
                                                                                                            זוג סדור
                                                                                                            זוג של שני איברים הקשורים זה לזה. במקרה של מילון, מפתח וערך.
                                                                                                            \n", - "
                                                                                                            " + "
                                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מסר של יום טוב" + "### מסר של יום טוב" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                            \n", + "יוגב נבו קיבל מסר מוצפן מאדון יום טוב, והצליח לשים את ידו על שיטה לפענוח המסר.
                                                                                                            \n", + "כדי לפענח את המסר, החליפו כל אות במסר הסודי באות התואמת לה, לפי המילון המופיע למטה.
                                                                                                            \n", "לדוגמה, דאגו שכל המופעים של האות O במסר SONG יוחלפו באות A.\n", "

                                                                                                            " ] @@ -1232,24 +1232,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מראה מראה שעל הקיר" + "### מראה מראה שעל הקיר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "חברו של יום טוב, חיים, שלח ליום טוב מסר מוצפן.
                                                                                                            \n", - "למרבה הצער יוגב שם את ידיו רק על מפת ההצפנה, ולא על מפת הפענוח.
                                                                                                            \n", - "צרו ממילון ההצפנה מילון פענוח, שבו:
                                                                                                            \n", + "

                                                                                                            \n", + "חברו של יום טוב, חיים, שלח ליום טוב מסר מוצפן.
                                                                                                            \n", + "למרבה הצער יוגב שם את ידיו רק על מפת ההצפנה, ולא על מפת הפענוח.
                                                                                                            \n", + "צרו ממילון ההצפנה מילון פענוח, שבו:
                                                                                                            \n", "

                                                                                                            \n", - "
                                                                                                              \n", - "
                                                                                                            • הערכים במילון הפענוח שתיצרו הם המפתחות ממילון ההצפנה.
                                                                                                            • \n", - "
                                                                                                            • המפתחות במילון הפענוח שתיצרו הם הערכים ממילון ההצפנה.
                                                                                                            • \n", + "
                                                                                                                \n", + "
                                                                                                              • הערכים במילון הפענוח שתיצרו הם המפתחות ממילון ההצפנה.
                                                                                                              • \n", + "
                                                                                                              • המפתחות במילון הפענוח שתיצרו הם הערכים ממילון ההצפנה.
                                                                                                              • \n", "
                                                                                                              \n", - "

                                                                                                              \n", - "לדוגמה, המילון {'a': '1', 'b': 2} יהפוך למילון {'1': 'a', '2': 'b'}.
                                                                                                              \n", + "

                                                                                                              \n", + "לדוגמה, המילון {'a': '1', 'b': 2} יהפוך למילון {'1': 'a', '2': 'b'}.
                                                                                                              \n", "השתמשו במילון הפענוח שיצרתם כדי לפענח את המסר שנשלח.\n", "

                                                                                                              " ] @@ -1287,16 +1287,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פטנט, או ברונו הפיל?" + "### פטנט, או ברונו הפיל?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - "בספרו המפורסם של טולסטוי \"מלחמה ושלום\" העלילה מתרחשת בתקופת הפלישה של נפוליאון לרוסיה.
                                                                                                              \n", - "אלכנדרוס הראשן התערב עם ברונו הפיל שהוא המציא פטנט, שבעזרתו הוא יכול למצוא את המספר שהופיע הכי הרבה פעמים בכל ספר שהוא.
                                                                                                              \n", + "

                                                                                                              \n", + "בספרו המפורסם של טולסטוי \"מלחמה ושלום\" העלילה מתרחשת בתקופת הפלישה של נפוליאון לרוסיה.
                                                                                                              \n", + "אלכנדרוס הראשן התערב עם ברונו הפיל שהוא המציא פטנט, שבעזרתו הוא יכול למצוא את המספר שהופיע הכי הרבה פעמים בכל ספר שהוא.
                                                                                                              \n", "השתמשו בקובץ המצורף war-and-peace.txt שנמצא בתיקיית resources, ועזרו לברונו הפיל למצוא את השנה שמוזכרת הכי הרבה פעמים בספר.\n", "

                                                                                                              " ] diff --git a/week4/3_Dictionaries_part2.ipynb b/week4/3_Dictionaries_part2.ipynb index a9885b7..beaa8b9 100644 --- a/week4/3_Dictionaries_part2.ipynb +++ b/week4/3_Dictionaries_part2.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# מילונים – חלק שני" + "# מילונים – חלק שני" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - "במחברת האחרונה למדנו שבפייתון ישנו סוג נתונים שנקרא \"מילון\", שמשמש אותנו לאחסון של זוגות נתונים: מפתח וערך.
                                                                                                              \n", - "המילון מאפשר לנו לפנות למפתח מסוים, ולאחזר לפיו את הערך שמוצמד אליו.
                                                                                                              \n", + "

                                                                                                              \n", + "במחברת האחרונה למדנו שבפייתון ישנו סוג נתונים שנקרא \"מילון\", שמשמש אותנו לאחסון של זוגות נתונים: מפתח וערך.
                                                                                                              \n", + "המילון מאפשר לנו לפנות למפתח מסוים, ולאחזר לפיו את הערך שמוצמד אליו.
                                                                                                              \n", "במחברת זו נלמד על פעולות נוספות שאפשר לבצע על מילונים, ועל השילוב של מילונים עם טיפוסי נתונים אחרים.\n", "

                                                                                                              " ] @@ -36,22 +36,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## פעולות על מילונים" + "## פעולות על מילונים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### ערכים ומפתחות" + "### ערכים ומפתחות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " לפעמים נרצה לעבור רק על הערכים שנמצאים במילון, בלי המפתחות שמצביעים עליהם.
                                                                                                              \n", + "

                                                                                                              \n", + " לפעמים נרצה לעבור רק על הערכים שנמצאים במילון, בלי המפתחות שמצביעים עליהם.
                                                                                                              \n", " לצורך כך נוכל להשתמש בפעולה values, בצורה הזו:\n", "

                                                                                                              " ] @@ -70,7 +70,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", " הערך שהפעולה מחזירה הוא iterable, ולכן קל לרוץ עליו בעזרת לולאה: \n", "

                                                                                                              " ] @@ -89,8 +89,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " הפעולה המקבילה ל־values שמחזירה לנו רק את המפתחות נקראת keys.
                                                                                                              \n", + "

                                                                                                              \n", + " הפעולה המקבילה ל־values שמחזירה לנו רק את המפתחות נקראת keys.
                                                                                                              \n", " יחסית נדיר לראות אותה בקוד, בין היתר כיוון שאפשר לרוץ על מפתחות המילון בלולאה גם בלי להשתמש בפעולה keys:\n", "

                                                                                                              " ] @@ -109,16 +109,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מילת המפתח del" + "### מילת המפתח del" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - "לפעמים עולה צורך למחוק ממילון מפתח ואת הערך שקשור אליו.
                                                                                                              \n", - "כפי שאולי ניחשתם, אין אפשרות למחוק רק את המפתח או רק את הערך – הם באים יחד.
                                                                                                              \n", + "

                                                                                                              \n", + "לפעמים עולה צורך למחוק ממילון מפתח ואת הערך שקשור אליו.
                                                                                                              \n", + "כפי שאולי ניחשתם, אין אפשרות למחוק רק את המפתח או רק את הערך – הם באים יחד.
                                                                                                              \n", "נרצה למחוק מפתח וערך מהמילון כשחשוב לנו לחסוך מקום בזיכרון המחשב, או כשהם כבר לא רלוונטיים ומפריעים לנו.\n", "

                                                                                                              " ] @@ -127,9 +127,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - "הדרך הראשונה למחוק מפתח וערך ממילון היא להשתמש במילת המפתח del, שטרם הכרנו.
                                                                                                              \n", - "מילת המפתח del נגזרת מהמילה delete (למחוק).
                                                                                                              \n", + "

                                                                                                              \n", + "הדרך הראשונה למחוק מפתח וערך ממילון היא להשתמש במילת המפתח del, שטרם הכרנו.
                                                                                                              \n", + "מילת המפתח del נגזרת מהמילה delete (למחוק).
                                                                                                              \n", "נציין את שם המילון ואת המפתח שנרצה למחוק:\n", "

                                                                                                              " ] @@ -149,7 +149,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", "אפשר להשתמש במילת המפתח del גם כדי למחוק תאים מרשימה או למחוק משתנים, אף על פי שהשימושים הללו נדירים למדי.\n", "

                                                                                                              " ] @@ -158,16 +158,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הפעולה pop" + "### הפעולה pop" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - "פעמים רבות נרצה לקבל את הערך המשויך למפתח שאנחנו מוחקים.
                                                                                                              \n", - "חיסרון מובהק של del הוא שבשימוש בה, המפתח והערך יימחקו בלי להחזיר שום מידע על הנתונים שנמחקו.
                                                                                                              \n", + "

                                                                                                              \n", + "פעמים רבות נרצה לקבל את הערך המשויך למפתח שאנחנו מוחקים.
                                                                                                              \n", + "חיסרון מובהק של del הוא שבשימוש בה, המפתח והערך יימחקו בלי להחזיר שום מידע על הנתונים שנמחקו.
                                                                                                              \n", "נוכל לקבל את הערך שנמחק בכל זאת בעזרת הפעולה pop, שחוץ מלמחוק זוג של מפתח וערך לפי המפתח, גם מחזירה את הערך שמחקה:\n", "

                                                                                                              " ] @@ -188,22 +188,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                              \n", - "
                                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                                              \n", - "
                                                                                                              \n", - "

                                                                                                              \n", - " כתבו פונקציה שמקבלת מילון, ומחזירה מילון הפוך, שבו הערכים הופכים למפתחות והמפתחות לערכים.
                                                                                                              \n", + "

                                                                                                              \n", + "
                                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                                              \n", + "
                                                                                                              \n", + "

                                                                                                              \n", + " כתבו פונקציה שמקבלת מילון, ומחזירה מילון הפוך, שבו הערכים הופכים למפתחות והמפתחות לערכים.
                                                                                                              \n", " היעזרו בפעולות שלמדתם על מילון.\n", "

                                                                                                              \n", - "
                                                                                                              \n", - "
                                                                                                              \n", - "

                                                                                                              \n", - " חשוב!
                                                                                                              \n", + "

                                                                                                              \n", + "
                                                                                                              \n", + "

                                                                                                              \n", + "חשוב!
                                                                                                              \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                              \n", - "
                                                                                                              \n", + "
                                                                                                              \n", "
                                                                                                              " ] }, @@ -211,15 +211,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הפעולה update" + "### הפעולה update" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " הוספה של ערכים מרובים למילון עלולה להיות לא נוחה במבט ראשון.
                                                                                                              \n", + "

                                                                                                              \n", + " הוספה של ערכים מרובים למילון עלולה להיות לא נוחה במבט ראשון.
                                                                                                              \n", " נביט בשני המילונים הבאים, שבהם כל ערך הוא המפתח התואם לו, שהועלה בחזקה שנייה.\n", "

                                                                                                              " ] @@ -238,7 +238,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", " אם נרצה למזג את high_powers_of_two לתוך powers_of_two, נצטרך לכתוב את הקוד הבא:\n", "

                                                                                                              " ] @@ -259,9 +259,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                              " ] @@ -290,22 +290,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                              \n", - "
                                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                                              \n", - "
                                                                                                              \n", - "

                                                                                                              \n", - " מה יקרה אם ישנו מפתח שנמצא בשני המילונים?
                                                                                                              \n", + "

                                                                                                              \n", + "
                                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                                              \n", + "
                                                                                                              \n", + "

                                                                                                              \n", + " מה יקרה אם ישנו מפתח שנמצא בשני המילונים?
                                                                                                              \n", " בנו מקרה שכזה ונסו בעצמכם.\n", "

                                                                                                              \n", - "
                                                                                                              \n", - "
                                                                                                              \n", - "

                                                                                                              \n", - " חשוב!
                                                                                                              \n", + "

                                                                                                              \n", + "
                                                                                                              \n", + "

                                                                                                              \n", + "חשוב!
                                                                                                              \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                              \n", - "
                                                                                                              \n", + "
                                                                                                              \n", "
                                                                                                              " ] }, @@ -313,15 +313,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מבנים מורכבים נפוצים" + "## מבנים מורכבים נפוצים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - "העולם לעיתים מורכב, וניסיון לארגן מידע רב יכול ליצור מבני נתונים שנראים מסובכים במבט ראשון.
                                                                                                              \n", + "

                                                                                                              \n", + "העולם לעיתים מורכב, וניסיון לארגן מידע רב יכול ליצור מבני נתונים שנראים מסובכים במבט ראשון.
                                                                                                              \n", "

                                                                                                              " ] }, @@ -329,14 +329,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### רשימת מילונים" + "### רשימת מילונים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", "נראה, לדוגמה, דרך לייצג מאגר קטן של משתמשים:\n", "

                                                                                                              " ] @@ -358,16 +358,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                              \n", - "
                                                                                                              \n", - " \"אזהרה!\" \n", - "
                                                                                                              \n", - "
                                                                                                              \n", - "

                                                                                                              \n", - " כדי לסגנן את הקוד שלנו, הרבה פעמים נרד שורה גם כשלא חייבים.
                                                                                                              \n", + "

                                                                                                              \n", + "
                                                                                                              \n", + "\"אזהרה!\"\n", + "
                                                                                                              \n", + "
                                                                                                              \n", + "

                                                                                                              \n", + " כדי לסגנן את הקוד שלנו, הרבה פעמים נרד שורה גם כשלא חייבים.
                                                                                                              \n", " נפוץ מאוד לרדת שורה במבנים ארוכים אחרי שפתחנו סוגריים – פייתון מבינה שמדובר באותה שורה.\n", "

                                                                                                              \n", - "
                                                                                                              \n", + "
                                                                                                              \n", "
                                                                                                              " ] }, @@ -375,8 +375,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - "למעלה מוצגת רשימה שמכילה 3 מילונים. אפשר למנות את האיברים שבה בעזרת לולאה, כמו בכל רשימה אחרת.
                                                                                                              \n", + "

                                                                                                              \n", + "למעלה מוצגת רשימה שמכילה 3 מילונים. אפשר למנות את האיברים שבה בעזרת לולאה, כמו בכל רשימה אחרת.
                                                                                                              \n", "נדפיס את השמות של כל אחד מהמשתמשים:\n", "

                                                                                                              " ] @@ -395,8 +395,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - "ניזהר במקרה שיש מפתח שעלול לא להופיע באחד המילונים.
                                                                                                              \n", + "

                                                                                                              \n", + "ניזהר במקרה שיש מפתח שעלול לא להופיע באחד המילונים.
                                                                                                              \n", "לדוגמה, לסקרלט ג'והנסון אין בן־זוג, ולכן כשהלולאה הבאה תגיע אליה היא תקפיץ שגיאה:\n", "

                                                                                                              " ] @@ -415,7 +415,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", "נראה דוגמה לטיפול במקרה שכזה בעולם האמיתי:\n", "

                                                                                                              " ] @@ -437,7 +437,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", "או ש\"נרמה\" קצת בעזרת הפעולה get:\n", "

                                                                                                              " ] @@ -457,23 +457,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ערכים מרובים במפתח אחד" + "### ערכים מרובים במפתח אחד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### מילון שערכיו הם רשימות" + "#### מילון שערכיו הם רשימות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - "אנחנו רוצים ליצור תוכנה לניהול ספרייה, שבה אפשר למצוא ספרים לפי שם המחבר.
                                                                                                              \n", - "בשלב הנוכחי ביקשו מאיתנו לשמור עבור כל ספר רק את שמו, ללא פרטים נוספים, כמו מלאי או שנת הוצאה לאור.
                                                                                                              \n", + "

                                                                                                              \n", + "אנחנו רוצים ליצור תוכנה לניהול ספרייה, שבה אפשר למצוא ספרים לפי שם המחבר.
                                                                                                              \n", + "בשלב הנוכחי ביקשו מאיתנו לשמור עבור כל ספר רק את שמו, ללא פרטים נוספים, כמו מלאי או שנת הוצאה לאור.
                                                                                                              \n", "נצטרך לתכנת את האפשרות לשלוף את שמות הספרים לפי שם המחבר, ולהוסיף ולהסיר ספרים בקלות מרשימת ספריו של כל מחבר.\n", "

                                                                                                              " ] @@ -482,22 +482,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                              \n", - "
                                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                                              \n", - "
                                                                                                              \n", - "

                                                                                                              \n", - " השקיעו 5 דקות וחשבו איך הייתם מממשים ספרייה שכזו בעזרת סוגי הנתונים שלמדתם.
                                                                                                              \n", + "

                                                                                                              \n", + "
                                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                                              \n", + "
                                                                                                              \n", + "

                                                                                                              \n", + " השקיעו 5 דקות וחשבו איך הייתם מממשים ספרייה שכזו בעזרת סוגי הנתונים שלמדתם.
                                                                                                              \n", " בונוס: כתבו כיצד אפשר לממש ספרייה שכזו, וממשו פונקציה שמאפשרת להוסיף ולהסיר ספרים עבור כל מחבר.\n", "

                                                                                                              \n", - "
                                                                                                              \n", - "
                                                                                                              \n", - "

                                                                                                              \n", - " חשוב!
                                                                                                              \n", + "

                                                                                                              \n", + "
                                                                                                              \n", + "

                                                                                                              \n", + "חשוב!
                                                                                                              \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                              \n", - "
                                                                                                              \n", + "
                                                                                                              \n", "
                                                                                                              " ] }, @@ -505,7 +505,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", "נסכם לפנינו את הדרישות:\n", "

                                                                                                              " ] @@ -514,9 +514,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                \n", - "
                                                                                                              1. מציאת רשימת הספרים לפי שם המחבר.
                                                                                                              2. \n", - "
                                                                                                              3. עריכת הספרים הקיימים עבור כל מחבר – הוספה והסרה.
                                                                                                              4. \n", + "
                                                                                                                  \n", + "
                                                                                                                1. מציאת רשימת הספרים לפי שם המחבר.
                                                                                                                2. \n", + "
                                                                                                                3. עריכת הספרים הקיימים עבור כל מחבר – הוספה והסרה.
                                                                                                                4. \n", "
                                                                                                                " ] }, @@ -524,8 +524,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                \n", - "עבור הדרישה הראשונה, נראה שהמבנה המתאים ביותר הוא מילון שמקשר את שם המחבר לרשימת הספרים שלו.
                                                                                                                \n", + "

                                                                                                                \n", + "עבור הדרישה הראשונה, נראה שהמבנה המתאים ביותר הוא מילון שמקשר את שם המחבר לרשימת הספרים שלו.
                                                                                                                \n", "עבור הדרישה השנייה, נראה שהמבנה המתאים ביותר הוא רשימה – סוג גמיש שקל לערוך את האיברים שבו (לעומת tuple, נניח).\n", "

                                                                                                                " ] @@ -534,7 +534,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                \n", + "

                                                                                                                \n", "נבנה מילון שכזה לדוגמה:\n", "

                                                                                                                " ] @@ -562,7 +562,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                \n", + "

                                                                                                                \n", "בהינתן המימוש המוצלח שלנו לדרישות, ראו כמה קל לתפעל את הספרייה:

                                                                                                                " ] }, @@ -592,15 +592,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### מילון שערכיו הם מילונים" + "#### מילון שערכיו הם מילונים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                \n", - "הדרישות של בעלי הספרייה השתנו.
                                                                                                                \n", + "

                                                                                                                \n", + "הדרישות של בעלי הספרייה השתנו.
                                                                                                                \n", "הם מבקשים שהפעם, בזמן שאנחנו שומרים על הסידור לפי שמות הסופרים, נוסיף על שם הספר גם את הפרטים הבאים:\n", "

                                                                                                                \n" ] @@ -609,10 +609,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                  \n", - "
                                                                                                                • תאריך ההוצאה לאור
                                                                                                                • \n", - "
                                                                                                                • רשימת הסוגות
                                                                                                                • \n", - "
                                                                                                                • כמות במלאי
                                                                                                                • \n", + "
                                                                                                                    \n", + "
                                                                                                                  • תאריך ההוצאה לאור
                                                                                                                  • \n", + "
                                                                                                                  • רשימת הסוגות
                                                                                                                  • \n", + "
                                                                                                                  • כמות במלאי
                                                                                                                  • \n", "
                                                                                                                  " ] }, @@ -620,8 +620,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                  \n", - "נציץ על שלוש צורות לממש מבני נתונים שיכולים לשמש את הספרייה המדוברת.
                                                                                                                  \n", + "

                                                                                                                  \n", + "נציץ על שלוש צורות לממש מבני נתונים שיכולים לשמש את הספרייה המדוברת.
                                                                                                                  \n", "נשאיר את בחינת נוחות השימוש בכל אחת מהן ואת כתיבת קוד להוספת ספרים ולהסרתם כתרגיל לקורא.\n", "

                                                                                                                  " ] @@ -696,22 +696,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                  \n", - "
                                                                                                                  \n", - " \"תרגול\" \n", - "
                                                                                                                  \n", - "
                                                                                                                  \n", - "

                                                                                                                  \n", - " מה היתרונות שנובעים מהבחירה שלנו לייצג הנתונים בכל אחת מהדרכים? מה החסרונות?
                                                                                                                  \n", + "

                                                                                                                  \n", + "
                                                                                                                  \n", + "\"תרגול\"\n", + "
                                                                                                                  \n", + "
                                                                                                                  \n", + "

                                                                                                                  \n", + " מה היתרונות שנובעים מהבחירה שלנו לייצג הנתונים בכל אחת מהדרכים? מה החסרונות?
                                                                                                                  \n", " אם הייתה לכם ספרייה משלכם, כיצד הייתם מסדרים את הנתונים ומייצגים אותם?\n", "

                                                                                                                  \n", - "
                                                                                                                  \n", - "
                                                                                                                  \n", - "

                                                                                                                  \n", - " חשוב!
                                                                                                                  \n", + "

                                                                                                                  \n", + "
                                                                                                                  \n", + "

                                                                                                                  \n", + "חשוב!
                                                                                                                  \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                  \n", - "
                                                                                                                  \n", + "
                                                                                                                  \n", "
                                                                                                                  " ] }, @@ -719,22 +719,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מילים של אבן ספיר בהווה" + "### מילים של אבן ספיר בהווה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                  \n", - " קבלו רשימה של מילונים, ואחדו את כל המילונים שנמצאים ברשימה למילון אחד.
                                                                                                                  \n", + "

                                                                                                                  \n", + " קבלו רשימה של מילונים, ואחדו את כל המילונים שנמצאים ברשימה למילון אחד.
                                                                                                                  \n", " ודאו שאינכם משנים את המילונים הנמצאים ברשימה.\n", "

                                                                                                                  " ] @@ -743,8 +743,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                  \n", - " לדוגמה, עבור הרשימה: [{'a': 1}, {'b': 2, 'c': 3}, {'d': 4}]
                                                                                                                  \n", + "

                                                                                                                  \n", + " לדוגמה, עבור הרשימה: [{'a': 1}, {'b': 2, 'c': 3}, {'d': 4}]
                                                                                                                  \n", " החזירו: {'a': 1, 'b': 2, 'c': 3, 'd': 4}\n", "

                                                                                                                  " ] @@ -753,16 +753,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### עוד לבנה בחומה" + "### עוד לבנה בחומה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                  \n", - " המורה רוג'רס מעניק ציון לכל תלמיד על פי הציונים שלו במבחנים ובשיעורי הבית.
                                                                                                                  \n", - " צרו מבנה נתונים שייצג את הציונים של כל התלמידים, ולאחר מכן השתמשו בו כדי לחשב את הציון הסופי של כל תלמיד ולהדפיסו.
                                                                                                                  \n", + "

                                                                                                                  \n", + " המורה רוג'רס מעניק ציון לכל תלמיד על פי הציונים שלו במבחנים ובשיעורי הבית.
                                                                                                                  \n", + " צרו מבנה נתונים שייצג את הציונים של כל התלמידים, ולאחר מכן השתמשו בו כדי לחשב את הציון הסופי של כל תלמיד ולהדפיסו.
                                                                                                                  \n", " ציון התלמידים הסופי מורכב מ־20% ממוצע הציונים בשיעורי בית, ועוד 80% ממוצע הציונים במבחנים:\n", "

                                                                                                                  " ] @@ -778,31 +778,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                    \n", - "
                                                                                                                  • ניק\n", + "
                                                                                                                      \n", + "
                                                                                                                    • ניק\n", "
                                                                                                                        \n", - "
                                                                                                                      • ציוני מבחנים: 80, 78, 90, 64
                                                                                                                      • \n", - "
                                                                                                                      • ציוני שיעורי בית: 46, 99, 85, 90, 100
                                                                                                                      • \n", - "
                                                                                                                      \n", - "
                                                                                                                    • \n", - "
                                                                                                                    • ריצ'ארד\n", + "
                                                                                                                    • ציוני מבחנים: 80, 78, 90, 64
                                                                                                                    • \n", + "
                                                                                                                    • ציוני שיעורי בית: 46, 99, 85, 90, 100
                                                                                                                    • \n", + "
                                                                                                                    \n", + "
                                                                                                                  • \n", + "
                                                                                                                  • ריצ'ארד\n", "
                                                                                                                      \n", - "
                                                                                                                    • ציוני מבחנים: 90, 92, 87, 99
                                                                                                                    • \n", - "
                                                                                                                    • ציוני שיעורי בית: 88, 77, 94, 66, 96
                                                                                                                    • \n", - "
                                                                                                                    \n", - "
                                                                                                                  • \n", - "
                                                                                                                  • סיד\n", + "
                                                                                                                  • ציוני מבחנים: 90, 92, 87, 99
                                                                                                                  • \n", + "
                                                                                                                  • ציוני שיעורי בית: 88, 77, 94, 66, 96
                                                                                                                  • \n", + "
                                                                                                                  \n", + "\n", + "
                                                                                                                • סיד\n", "
                                                                                                                    \n", - "
                                                                                                                  • ציוני מבחנים: 66, 6, 66, 6
                                                                                                                  • \n", - "
                                                                                                                  • ציוני שיעורי בית: 100, 100, 100, 100, 100
                                                                                                                  • \n", - "
                                                                                                                  \n", - "
                                                                                                                • \n", - "
                                                                                                                • דוד\n", + "
                                                                                                                • ציוני מבחנים: 66, 6, 66, 6
                                                                                                                • \n", + "
                                                                                                                • ציוני שיעורי בית: 100, 100, 100, 100, 100
                                                                                                                • \n", + "
                                                                                                                \n", + "\n", + "
                                                                                                              5. דוד\n", "
                                                                                                                  \n", - "
                                                                                                                • ציוני מבחנים: 96, 92, 91, 78
                                                                                                                • \n", - "
                                                                                                                • ציוני שיעורי בית: 80, 77, 74, 71, 68
                                                                                                                • \n", - "
                                                                                                                \n", - "
                                                                                                              6. \n", + "
                                                                                                              7. ציוני מבחנים: 96, 92, 91, 78
                                                                                                              8. \n", + "
                                                                                                              9. ציוני שיעורי בית: 80, 77, 74, 71, 68
                                                                                                              10. \n", + "
                                                                                                            \n", + "\n", "
                                                                                                          " ] }, @@ -810,12 +810,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " לדוגמה, הציון של דוד יחושב כך:\n", "

                                                                                                          \n", - "\n", - "

                                                                                                          \n", - " ממוצע ציוני המבחנים ($\\frac{96+92+91+78}{4}$, ששווה ל־$89.25$) במשקל של 80% ($\\frac{89.25\\cdot80}{100}$, ששווה ל־$71.4$).
                                                                                                          \n", + "

                                                                                                          \n", + " ממוצע ציוני המבחנים ($\\frac{96+92+91+78}{4}$, ששווה ל־$89.25$) במשקל של 80% ($\\frac{89.25\\cdot80}{100}$, ששווה ל־$71.4$).
                                                                                                          \n", " ועוד ממוצע ציוני שיעורי הבית ($\\frac{68+71+74+77+80}{5}$, ששווה ל־$74$) במשקל של 20% ($\\frac{74\\cdot20}{100}$, ששווה ל־$14.8$).\n", "

                                                                                                          " ] diff --git a/week4/4_Unpacking.ipynb b/week4/4_Unpacking.ipynb index 60eed6a..a535ed2 100644 --- a/week4/4_Unpacking.ipynb +++ b/week4/4_Unpacking.ipynb @@ -4,28 +4,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Unpacking" + "# Unpacking" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " הנה שורה שתיראה לנו קצת שונה תחבירית מכל מה שהכרנו עד עכשיו:\n", "

                                                                                                          " ] @@ -43,9 +43,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " בצד ימין יש tuple שמכיל שני איברים, ואנחנו מבצעים השמה לשני משתנים ששמותיהם country ו־population.
                                                                                                          \n", - " אומנם לא הייתי מעניק לפיסת הקוד הזו את תואר פיסת הקוד הנאה בעולם, אבל נראה שפייתון יודעת להריץ אותה:
                                                                                                          \n", + "

                                                                                                          \n", + " בצד ימין יש tuple שמכיל שני איברים, ואנחנו מבצעים השמה לשני משתנים ששמותיהם country ו־population.
                                                                                                          \n", + " אומנם לא הייתי מעניק לפיסת הקוד הזו את תואר פיסת הקוד הנאה בעולם, אבל נראה שפייתון יודעת להריץ אותה:
                                                                                                          \n", "

                                                                                                          " ] }, @@ -62,9 +62,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " חזינו כאן במעין השמה כפולה שפייתון מאפשרת לנו לבצע:
                                                                                                          \n", - " את האיבר הראשון בצד ימין היא הכניסה לאיבר הראשון בצד שמאל, ואת האיבר השני בצד ימין היא הכניסה לאיבר השני בצד שמאל.
                                                                                                          \n", + "

                                                                                                          \n", + " חזינו כאן במעין השמה כפולה שפייתון מאפשרת לנו לבצע:
                                                                                                          \n", + " את האיבר הראשון בצד ימין היא הכניסה לאיבר הראשון בצד שמאל, ואת האיבר השני בצד ימין היא הכניסה לאיבר השני בצד שמאל.
                                                                                                          \n", "

                                                                                                          " ] }, @@ -72,14 +72,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"ארבע" + "\"ארבע" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " התחביר שמאפשר לפייתון לפרק מבנה ולבצע השמה של האיברים שבו לכמה שמות משתנים בו־זמנית, קיבל את השם unpacking.\n", "

                                                                                                          " ] @@ -88,22 +88,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Unpacking לתוך משתנים" + "## Unpacking לתוך משתנים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### המקרה הקלאסי" + "### המקרה הקלאסי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " מתכנתים רבים מנצלים את הנוחות שב־unpacking, ולכן תמצאו שהוא מופיע פעמים רבות בקוד \"בעולם האמיתי\".
                                                                                                          \n", + "

                                                                                                          \n", + " מתכנתים רבים מנצלים את הנוחות שב־unpacking, ולכן תמצאו שהוא מופיע פעמים רבות בקוד \"בעולם האמיתי\".
                                                                                                          \n", " אפשר לבצע השמה לכמה משתנים שנרצה בו־זמנית:\n", "

                                                                                                          " ] @@ -121,7 +121,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " הטכניקה הזו עובדת גם עבור טיפוסים אחרים שמוגדרים כ־iterable:\n", "

                                                                                                          " ] @@ -139,7 +139,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " ואפילו בלי סוגריים (זה לא קסם – בצד ימין נוצר בפועל tuple):\n", "

                                                                                                          " ] @@ -157,7 +157,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " או כ\"חילוץ איברים\" מתוך משתנה קיים לתוך כמה משתנים נפרדים:\n", "

                                                                                                          " ] @@ -177,8 +177,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " בדוגמה האחרונה יצרנו בשורה הראשונה משתנה שמצביע ל־tuple. ב־tuple ישנם שני מספרים מסוג float.
                                                                                                          \n", + "

                                                                                                          \n", + " בדוגמה האחרונה יצרנו בשורה הראשונה משתנה שמצביע ל־tuple. ב־tuple ישנם שני מספרים מסוג float.
                                                                                                          \n", " בשורה השנייה פירקנו את ה־tuple – הערך הראשון שלו הוכנס לתוך המשתנה x והערך השני שלו הוכנס לתוך המשתנה y. \n", "

                                                                                                          " ] @@ -187,15 +187,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### unpacking בלולאות for" + "### unpacking בלולאות for" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " שימוש מקובל מאוד ל־unpacking, שאותו כבר הספקתם לראות בעבר, מתרחש בלולאות for.
                                                                                                          \n", + "

                                                                                                          \n", + " שימוש מקובל מאוד ל־unpacking, שאותו כבר הספקתם לראות בעבר, מתרחש בלולאות for.
                                                                                                          \n", " ניצור רשימה של tuple־ים, שבה כל tuple ייצג מדינה ואת מספר האנשים החיים בה:\n", "

                                                                                                          " ] @@ -218,7 +218,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", "בעולם ללא unpacking, היינו צריכים לכתוב כך:\n", "

                                                                                                          " ] @@ -239,7 +239,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " אבל כיוון שאנחנו חיים בעולם טוב יותר, פייתון מאפשרת לנו לעשות את הטריק הבא:\n", "

                                                                                                          " ] @@ -259,95 +259,95 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", - " \n", + "\n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
                                                                                                          תצוגה של המשתנה countries_with_population ושל צורת הפירוק שלו
                                                                                                          0123
                                                                                                          \n", + "
                                                                                                          תצוגה של המשתנה countries_with_population ושל צורת הפירוק שלו
                                                                                                          0123
                                                                                                          \n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                          01
                                                                                                          \"Cyprus\"1198575
                                                                                                          -2-1
                                                                                                          01
                                                                                                          \"Cyprus\"1198575
                                                                                                          -2-1
                                                                                                          \n", - "
                                                                                                          \n", + "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
                                                                                                          01
                                                                                                          \"Eswatini\"1148130
                                                                                                          -2-1
                                                                                                          \n", - "
                                                                                                          \n", + "
                                                                                                          01
                                                                                                          \"Eswatini\"1148130
                                                                                                          -2-1
                                                                                                          \n", + "\n", + "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                          01
                                                                                                          \"Djibouti\"973560
                                                                                                          -2-1
                                                                                                          01
                                                                                                          \"Djibouti\"973560
                                                                                                          -2-1
                                                                                                          \n", - " \n", - " \n", + "\n", + "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                          01
                                                                                                          \"Fiji\"889953
                                                                                                          -2-1
                                                                                                          01
                                                                                                          \"Fiji\"889953
                                                                                                          -2-1
                                                                                                          \n", - " \n", - " \n", - " \n", - " -4\n", - " -3\n", - " -2\n", - " -1\n", - " \n", - " \n", + "\n", + "\n", + "\n", + "-4\n", + "-3\n", + "-2\n", + "-1\n", + "\n", + "\n", "" ] }, @@ -355,8 +355,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " באיור למעלה, התאים האדומים מפורקים לתוך המשתנה country והתאים הירוקים לתוך המשתנה population.
                                                                                                          \n", + "

                                                                                                          \n", + " באיור למעלה, התאים האדומים מפורקים לתוך המשתנה country והתאים הירוקים לתוך המשתנה population.
                                                                                                          \n", " כל איטרציה של הלולאה תגרום לפירוק של צמד אחד מתוך הרשימה, ולהשמתו בהתאמה לתוך צמד המשתנים שבראש לולאת ה־for.\n", "

                                                                                                          " ] @@ -365,15 +365,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### במילונים" + "#### במילונים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " הרעיון של unpacking נעשה שימושי מאוד כשאנחנו רוצים לעבור בו־זמנית על המפתח ועל הערך של מילון.
                                                                                                          \n", + "

                                                                                                          \n", + " הרעיון של unpacking נעשה שימושי מאוד כשאנחנו רוצים לעבור בו־זמנית על המפתח ועל הערך של מילון.
                                                                                                          \n", " כל שנצטרך לעשות כדי לקבל את המפתח לצד הערך בכל איטרציה, זה להשתמש בפעולה items על המילון:\n", "

                                                                                                          " ] @@ -406,16 +406,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### unpacking לערכי חזרה מפונקציה" + "### unpacking לערכי חזרה מפונקציה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " המקרה הזה לא שונה מהמקרים הקודמים שראינו, אבל חשבתי שיהיה נחמד לראות אותו מפורשות.
                                                                                                          \n", - " הפעם ניקח פונקציה שמחזירה tuple, ונשתמש ב־unpacking כדי לפרק את הערכים שהיא מחזירה למשתנים.
                                                                                                          \n", + "

                                                                                                          \n", + " המקרה הזה לא שונה מהמקרים הקודמים שראינו, אבל חשבתי שיהיה נחמד לראות אותו מפורשות.
                                                                                                          \n", + " הפעם ניקח פונקציה שמחזירה tuple, ונשתמש ב־unpacking כדי לפרק את הערכים שהיא מחזירה למשתנים.
                                                                                                          \n", "

                                                                                                          " ] }, @@ -435,7 +435,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " נשתמש בפונקציה:\n", "

                                                                                                          " ] @@ -453,7 +453,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " והרי שאם מוחזר לנו tuple, אפשר לעשות לו unpacking:\n", "

                                                                                                          " ] @@ -472,15 +472,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Unpacking לארגומנטים" + "## Unpacking לארגומנטים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " נבחן את הקוד הפשוט הבא:
                                                                                                          \n", + "

                                                                                                          \n", + " נבחן את הקוד הפשוט הבא:
                                                                                                          \n", "

                                                                                                          " ] }, @@ -501,9 +501,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " הגדרנו פונקציה שמדפיסה לנו יפה מיקומים לפי x ו־y שהיא מקבלת.
                                                                                                          \n", - " המימוש הגיוני, אבל אוי א בראך! השימוש לא מאוד נוח!
                                                                                                          \n", + "

                                                                                                          \n", + " הגדרנו פונקציה שמדפיסה לנו יפה מיקומים לפי x ו־y שהיא מקבלת.
                                                                                                          \n", + " המימוש הגיוני, אבל אוי א בראך! השימוש לא מאוד נוח!
                                                                                                          \n", " בכל פעם אנחנו צריכים לפרק את ה־tuple שמכיל את המיקום ל־2 איברים, ולשלוח כל אחד מהם בנפרד.\n", "

                                                                                                          " ] @@ -512,14 +512,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### unpacking לארגומנטים לפי מיקום" + "### unpacking לארגומנטים לפי מיקום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " כפתרון למצב, פייתון מאפשרת לנו לעשות את הקסם הנפלא הבא:\n", "

                                                                                                          " ] @@ -541,8 +541,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " נראה מוזר? זו לא טעות, זהו באמת תחביר שעדיין לא ראינו!
                                                                                                          \n", + "

                                                                                                          \n", + " נראה מוזר? זו לא טעות, זהו באמת תחביר שעדיין לא ראינו!
                                                                                                          \n", " הכוכבית מפרקת את ה־tuple שהגדרנו, treasure_location, ושולחת לארגומנט x את הערך הראשון ולארגומנט y את הערך השני.\n", "

                                                                                                          " ] @@ -551,7 +551,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " אם היו לנו ערכים רבים, היינו יכולים להשתמש באותו טריק בלולאה:\n", "

                                                                                                          " ] @@ -587,7 +587,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " אבל נזכור שאנחנו יכולים להשתמש גם בתעלול שלמדנו על unpacking בתוך for:\n", "

                                                                                                          " ] @@ -609,14 +609,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### unpacking לארגומנטים לפי שם הארגומנט" + "### unpacking לארגומנטים לפי שם הארגומנט" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " מצוידים בפונקציה להדפסת המיקום, אנחנו מקבלים את רשימת המילונים הבאה:\n", "

                                                                                                          " ] @@ -639,7 +639,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " אין מנוס, דנו אותנו לחיי עבדות של פירוק מילונים ולשליחת ערכיהם לפונקציות! 😢\n", "

                                                                                                          " ] @@ -661,7 +661,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " או שאולי לא?\n", "

                                                                                                          " ] @@ -670,8 +670,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " במקרה המיוחד מאוד של מילון, אפשר לשלוח לפונקציה את הפרמטרים בעזרת unpacking עם שתי כוכביות.
                                                                                                          \n", + "

                                                                                                          \n", + " במקרה המיוחד מאוד של מילון, אפשר לשלוח לפונקציה את הפרמטרים בעזרת unpacking עם שתי כוכביות.
                                                                                                          \n", " המפתחות של המילון צריכים לציין את שם הפרמטרים של הפונקציה, והערכים במילון יהיו הערך שיועבר לאותם פרמטרים:\n", "

                                                                                                          " ] @@ -700,10 +700,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " מה קרה פה?
                                                                                                          \n", - " באיטרציה הראשונה location היה {'x': 36.671111, 'y': 65.808056}.
                                                                                                          \n", - " הפונקציה print_treasure_locations מחכה שיעבירו לה ערך לפרמטר x ולפרמטר y.
                                                                                                          \n", + "

                                                                                                          \n", + " מה קרה פה?
                                                                                                          \n", + " באיטרציה הראשונה location היה {'x': 36.671111, 'y': 65.808056}.
                                                                                                          \n", + " הפונקציה print_treasure_locations מחכה שיעבירו לה ערך לפרמטר x ולפרמטר y.
                                                                                                          \n", " ה־unpacking שעשינו בעזרת שתי הכוכביות העביר את הערך של המפתח 'x' במילון לפרמטר x, ואת הערך של המפתח 'y' במילון לפרמטר y.\n", "

                                                                                                          " ] @@ -712,7 +712,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " נראה דוגמה נוספת לפונקציה שמקבלת שנה, חודש ויום ומחזירה לנו תאריך כמחרוזת:\n", "

                                                                                                          " ] @@ -734,15 +734,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## שגיאות" + "## שגיאות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " אנחנו רגילים שפייתון די סובלנית, אבל על unpacking תקין היא לא מוותרת.
                                                                                                          \n", + "

                                                                                                          \n", + " אנחנו רגילים שפייתון די סובלנית, אבל על unpacking תקין היא לא מוותרת.
                                                                                                          \n", " בדוגמה הבאה אנחנו מנסים לחלץ שני איברים לתוך שלושה משתנים, וזה לא נגמר טוב:\n", "

                                                                                                          " ] @@ -760,7 +760,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " נקבל שגיאה דומה, אך שונה, כשננסה לחלץ מספר לא נכון של ארגומנטים לתוך פונקציה:\n", "

                                                                                                          " ] @@ -782,7 +782,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " אם ננסה לעשות unpacking לאיבר שאינו iterable, תתקבל השגיאה הבאה:\n", "

                                                                                                          " ] @@ -800,16 +800,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## קוד לדוגמה" + "## קוד לדוגמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - "סדרת פיבונאצ'י היא סדרה שמתחילה באיברים 1 ו־1, וכל איבר בה הוא סכום שני האיברים הקודמים לו.
                                                                                                          \n", - "האיברים הראשונים בסדרה, הם (מימין לשמאל) 1, 1, 2, 3, 5, 8, וכך הסדרה ממשיכה.
                                                                                                          \n", + "

                                                                                                          \n", + "סדרת פיבונאצ'י היא סדרה שמתחילה באיברים 1 ו־1, וכל איבר בה הוא סכום שני האיברים הקודמים לו.
                                                                                                          \n", + "האיברים הראשונים בסדרה, הם (מימין לשמאל) 1, 1, 2, 3, 5, 8, וכך הסדרה ממשיכה.
                                                                                                          \n", "במימוש פונקציה שמקבלת מספר ומחזירה את סכום כל איברי הסדרה עד אותו מספר, נוכל להשתמש ב־unpacking כדי לשפר את הקריאות של הפונקציה:\n", "

                                                                                                          " ] @@ -818,7 +818,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", "הפונקציה בלי unpacking:\n", "

                                                                                                          " ] @@ -845,7 +845,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", "הפונקציה עם unpacking:\n", "

                                                                                                          " ] @@ -871,25 +871,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### אליבי לרוצחים" + "### אליבי לרוצחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", - " לפניכם tuple המכיל כמה מילונים, כאשר כל מילון מייצג דמות חשודה ברצח.
                                                                                                          \n", - " בתוך כל אחד מהמילונים, תחת המפתח evidences, ישנו tuple שבו שני איברים.
                                                                                                          \n", - " האיבר הראשון הוא הנשק שתפסה המשטרה, והאיבר השני הוא המיקום המרכזי שבו הייתה הדמות באותו היום.
                                                                                                          \n", - " בהינתן שהרוצח השתמש באקדח דרינגר (derringer) ב־Petersen House, הדפיסו רק את שמות האנשים שעדיין חשודים ברצח.
                                                                                                          \n", + "

                                                                                                          \n", + " לפניכם tuple המכיל כמה מילונים, כאשר כל מילון מייצג דמות חשודה ברצח.
                                                                                                          \n", + " בתוך כל אחד מהמילונים, תחת המפתח evidences, ישנו tuple שבו שני איברים.
                                                                                                          \n", + " האיבר הראשון הוא הנשק שתפסה המשטרה, והאיבר השני הוא המיקום המרכזי שבו הייתה הדמות באותו היום.
                                                                                                          \n", + " בהינתן שהרוצח השתמש באקדח דרינגר (derringer) ב־Petersen House, הדפיסו רק את שמות האנשים שעדיין חשודים ברצח.
                                                                                                          \n", " השתדלו להשתמש ב־unpacking לפחות פעמיים.\n", "

                                                                                                          " ] @@ -911,7 +911,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " לנוחיותכם, הנה פונקציה שמקבלת כלי נשק ומיקום, ובודקת אם הראיות תואמות:\n", "

                                                                                                          " ] diff --git a/week4/5_Builtins.ipynb b/week4/5_Builtins.ipynb index 48aaaf0..3295761 100644 --- a/week4/5_Builtins.ipynb +++ b/week4/5_Builtins.ipynb @@ -4,28 +4,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# פונקציות מובנות" + "# פונקציות מובנות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                          \n", + "

                                                                                                          \n", " אנו פוגשים הרבה בעיות בתכנות לעיתים קרובות ובמגוון מצבים:\n", "

                                                                                                          " ] @@ -34,11 +34,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                          • מציאת הערך הקטן או הגדול ביותר ברשימת ערכים.
                                                                                                          • \n", - "
                                                                                                          • יצירת רשימת מספרים המתחילה בערך מסוים ומסתיימת בערך אחר.
                                                                                                          • \n", - "
                                                                                                          • שינוי מיקום הערכים לפי סדר מסוים.
                                                                                                          • \n", - "
                                                                                                          • המרה של ערך כלשהו למספר, למחרוזת, לבוליאני או לרשימה (נשמע מוכר?)
                                                                                                          • \n", + "
                                                                                                              \n", + "
                                                                                                            • מציאת הערך הקטן או הגדול ביותר ברשימת ערכים.
                                                                                                            • \n", + "
                                                                                                            • יצירת רשימת מספרים המתחילה בערך מסוים ומסתיימת בערך אחר.
                                                                                                            • \n", + "
                                                                                                            • שינוי מיקום הערכים לפי סדר מסוים.
                                                                                                            • \n", + "
                                                                                                            • המרה של ערך כלשהו למספר, למחרוזת, לבוליאני או לרשימה (נשמע מוכר?)
                                                                                                            • \n", "
                                                                                                            " ] }, @@ -46,9 +46,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " כדי שלא נצטרך לכתוב שוב ושוב את אותו פתרון, שפות רבות מצוידות בכלים מוכנים מראש שמטרתם לפתור בעיות נפוצות.
                                                                                                            \n", - " פייתון מתגאה בכך שהיא שפה ש\"הבטריות בה כלולות\" (batteries included), היגד שנועד לתאר את העובדה שהיא מכילה פתרונות מוכנים לאותן בעיות.
                                                                                                            \n", + "

                                                                                                            \n", + " כדי שלא נצטרך לכתוב שוב ושוב את אותו פתרון, שפות רבות מצוידות בכלים מוכנים מראש שמטרתם לפתור בעיות נפוצות.
                                                                                                            \n", + " פייתון מתגאה בכך שהיא שפה ש\"הבטריות בה כלולות\" (batteries included), היגד שנועד לתאר את העובדה שהיא מכילה פתרונות מוכנים לאותן בעיות.
                                                                                                            \n", " במחברת זו נכיר חלק מהפונקציות שפייתון מספקת לנו במטרה להקל על חיינו.\n", "

                                                                                                            " ] @@ -57,7 +57,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " השם הנפוץ עבור הפונקציות הללו הוא builtins, ואפשר למצוא את התיעוד של כולן כאן. \n", "

                                                                                                            " ] @@ -66,22 +66,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " חשבו על פונקציות כאלו שאתם כבר מכירים משיעורים קודמים.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " חשבו על פונקציות כאלו שאתם כבר מכירים משיעורים קודמים.
                                                                                                            \n", " חלק מהפתרונות האפשריים: len, int, float, str, list, type\n", - "

                                                                                                            \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " חשוב!
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + "חשוב!
                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -89,17 +89,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"טיפ!\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " בהמשך המחברת ישנן דוגמאות עבור כל פונקציה חדשה שנכיר.
                                                                                                            \n", - " למען הבהירות אני מדפיס דוגמה בודדת, ואז אני משתמש בלולאה כדי להדפיס כמה דוגמאות ברצף.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"טיפ!\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

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

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -107,15 +107,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מתמטיקה" + "## מתמטיקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                            \n", + " ישנן פעולות מתמטיות שנצטרך לעיתים תכופות, שאת חלקן אפילו מימשנו שוב ושוב לאורך הקורס.
                                                                                                            \n", " נראה מה יש לארגז הכלים של פייתון להציע לנו.\n", "

                                                                                                            " ] @@ -124,16 +124,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ערך מוחלט" + "### ערך מוחלט" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " הפונקציה abs מחזירה את הערך המוחלט של המספר שנעביר לה.
                                                                                                            \n", - " אם נעביר לה כארגומנט מספר שלם או עשרוני, היא תחזיר את המרחק של המספר מ־0 על ציר המספרים:
                                                                                                            \n", + "

                                                                                                            \n", + " הפונקציה abs מחזירה את הערך המוחלט של המספר שנעביר לה.
                                                                                                            \n", + " אם נעביר לה כארגומנט מספר שלם או עשרוני, היא תחזיר את המרחק של המספר מ־0 על ציר המספרים:
                                                                                                            \n", "

                                                                                                            " ] }, @@ -161,16 +161,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"טיפ!\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " המשמעות של :>6 ב־fstring היא \"דאג שיהיו לפחות 6 תווים, וישר את הערך לימין\".
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"טיפ!\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " המשמעות של :>6 ב־fstring היא \"דאג שיהיו לפחות 6 תווים, וישר את הערך לימין\".
                                                                                                            \n", " אפשר להחליף את > בתו ^ לצורך יישור לאמצע, או בתו < לצורך יישור לשמאל.\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -178,14 +178,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מקסימום ומינימום" + "### מקסימום ומינימום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " הפונקציות max ו־min מקבלות iterable, ומחזירות את האיבר הגבוה או הנמוך ביותר ב־iterable (בהתאמה).\n", "

                                                                                                            " ] @@ -217,17 +217,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " מחרוזות בפייתון מושוות לפי הערך המספרי של התווים שמהם הן מורכבות.
                                                                                                            \n", - " כשמדובר ב־iterable שיש בו מחרוזות, פייתון מוצאת את הערך המרבי או המזערי לפי הייצוג המספרי של האותיות באותן מחרוזות.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " מחרוזות בפייתון מושוות לפי הערך המספרי של התווים שמהם הן מורכבות.
                                                                                                            \n", + " כשמדובר ב־iterable שיש בו מחרוזות, פייתון מוצאת את הערך המרבי או המזערי לפי הייצוג המספרי של האותיות באותן מחרוזות.
                                                                                                            \n", " מהסיבה הזו, הסידור האלפבתי לא יחזיר את הערך הרצוי במצב שבו יש גם אותיות גדולות וגם אותיות וקטנות: \n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -245,8 +245,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " זה קורה כיוון שהערכים המספריים של אותיות גדולות קטנים מאלו של אותיות קטנות.
                                                                                                            \n", + "

                                                                                                            \n", + " זה קורה כיוון שהערכים המספריים של אותיות גדולות קטנים מאלו של אותיות קטנות.
                                                                                                            \n", " הערך המספרי של Z במילה ZEBRA הוא 90, והערך המספרי של a (במילה apple, שציפינו שתיחשב כקטנה ביותר) הוא 97.\n", "

                                                                                                            " ] @@ -255,14 +255,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סכום" + "### סכום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " אפשר לחשב את סכום האיברים ב־iterable באמצעות הפונקציה sum: \n", "

                                                                                                            " ] @@ -294,14 +294,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### עיגול" + "### עיגול" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " אפשר גם לעגל מספרים בעזרת הפונקציה round: \n", "

                                                                                                            " ] @@ -331,7 +331,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " ואפשר להחליט על מספר הספרות אחרי הנקודה שלפיו העיגול יתבצע: \n", "

                                                                                                            " ] @@ -364,15 +364,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## המרות" + "## המרות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " טוב, על המרות (casting) כבר למדנו.
                                                                                                            \n", + "

                                                                                                            \n", + " טוב, על המרות (casting) כבר למדנו.
                                                                                                            \n", " אבל בואו בכל זאת נראה כמה דוגמאות מגניבות.\n", "

                                                                                                            " ] @@ -381,7 +381,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " אפשר להמיר מחרוזת לרשימה. הפעולה הזו תפריד כל אחת מהאותיות לתא נפרד ברשימה:\n", "

                                                                                                            " ] @@ -399,8 +399,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " עוד פרט טריוויה נחמד הוא שלכל ערך בפייתון יש ערך בוליאני שקול.
                                                                                                            \n", + "

                                                                                                            \n", + " עוד פרט טריוויה נחמד הוא שלכל ערך בפייתון יש ערך בוליאני שקול.
                                                                                                            \n", " בדרך כלל, ערכים ריקים שקולים ל־False וערכים שאינם ריקים שקולים ל־True:\n", "

                                                                                                            " ] @@ -423,16 +423,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"טיפ!\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " המשמעות של !r ב־fstring היא \"הצג את הערך בתצורתו הגולמית\" (raw).
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"טיפ!\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " המשמעות של !r ב־fstring היא \"הצג את הערך בתצורתו הגולמית\" (raw).
                                                                                                            \n", " לדוגמה, מחרוזות יוצגו עם הגרשיים משני צידיהן.\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -440,7 +440,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " אפשר להמיר ערכים בוליאניים למספר שלם:\n", "

                                                                                                            " ] @@ -459,8 +459,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " מה בנוגע לטריקים על מילונים?
                                                                                                            \n", + "

                                                                                                            \n", + " מה בנוגע לטריקים על מילונים?
                                                                                                            \n", " אם יש לנו iterable שמכיל זוגות של ערכים, אפשר להפוך אותו למילון:\n", "

                                                                                                            " ] @@ -479,7 +479,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " וכטיפ כללי, אפשר להמיר את סוג הערכים שלנו לטיפוס שונה, בעזרת הפונקציה שנקראת על שם הטיפוס שאליו אנחנו רוצים להמיר:\n", "

                                                                                                            " ] @@ -504,7 +504,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " אבל צריך לזכור שלא כל טיפוס אפשר להמיר לטיפוס אחר:\n", "

                                                                                                            " ] @@ -522,14 +522,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מאחורי הקלעים של פייתון" + "## מאחורי הקלעים של פייתון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

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

                                                                                                            " ] @@ -538,17 +538,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### id" + "### id" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " על הפונקציה id כבר למדנו בעבר. היא מקבלת כארגומנט ערך, ומחזירה לנו את \"הזהות\" שלו – ערך אחר שמייצג רק את אותו.
                                                                                                            \n", - " בגרסת הפייתון שאנחנו משתמשים בה, מדובר בכתובת של הערך בזיכרון המחשב.
                                                                                                            \n", - " כל אדם שיריץ את הקוד הבא יקבל ערכים שונים, אבל לעולם לא יודפסו לו 2 ערכים זהים באותה ריצה.
                                                                                                            \n", + "

                                                                                                            \n", + " על הפונקציה id כבר למדנו בעבר. היא מקבלת כארגומנט ערך, ומחזירה לנו את \"הזהות\" שלו – ערך אחר שמייצג רק את אותו.
                                                                                                            \n", + " בגרסת הפייתון שאנחנו משתמשים בה, מדובר בכתובת של הערך בזיכרון המחשב.
                                                                                                            \n", + " כל אדם שיריץ את הקוד הבא יקבל ערכים שונים, אבל לעולם לא יודפסו לו 2 ערכים זהים באותה ריצה.
                                                                                                            \n", " הסיבה לכך שתמיד יודפסו 4 ערכים שונים היא שכל הנתונים שמופיעים ברשימה values שונים זה מזה.\n", "

                                                                                                            " ] @@ -570,7 +570,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " אם ניצור מצב שבו 2 שמות מצביעים על אותו ערך בדיוק, id תחזיר את אותה התוצאה עבור שני הערכים:\n", "

                                                                                                            " ] @@ -598,8 +598,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " הפונקציה הזו יכולה לסייע לנו להגיע לתובנות בנוגע לדרך שבה פייתון עובדת בכל מיני מצבים.
                                                                                                            \n", + "

                                                                                                            \n", + " הפונקציה הזו יכולה לסייע לנו להגיע לתובנות בנוגע לדרך שבה פייתון עובדת בכל מיני מצבים.
                                                                                                            \n", " קשה להבין, לדוגמה, מה קורה בקוד הבא:\n", "

                                                                                                            " ] @@ -620,7 +620,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " בדיקה בעזרת id תעזור לנו לראות שהרשימות הפנימיות בתוך collections_of_numbers מצביעות לאותו מקום:\n", "

                                                                                                            " ] @@ -640,22 +640,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " נסו לכתוב קוד של שורה אחת או יותר, שיחליף את השורה הראשונה בקוד שלמעלה.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " נסו לכתוב קוד של שורה אחת או יותר, שיחליף את השורה הראשונה בקוד שלמעלה.
                                                                                                            \n", " גרמו לכך שהקוד שמוסיף את הערך 100 לרשימה הראשונה לא ישפיע על שאר הרשימות.\n", "

                                                                                                            \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " חשוב!
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + "חשוב!
                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -663,16 +663,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### dir" + "### dir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " גם על הפונקציה dir כבר למדנו. ראיתם אותה לאחרונה במחברת שעסקה בדוקומנטציה.
                                                                                                            \n", - " הפונקציה dir תחזיר לנו את כל הפעולות שאפשר לבצע על משתנה מסוים או על טיפוס מסוים.
                                                                                                            \n", + "

                                                                                                            \n", + " גם על הפונקציה dir כבר למדנו. ראיתם אותה לאחרונה במחברת שעסקה בדוקומנטציה.
                                                                                                            \n", + " הפונקציה dir תחזיר לנו את כל הפעולות שאפשר לבצע על משתנה מסוים או על טיפוס מסוים.
                                                                                                            \n", " נוכל להעביר לה כארגומנט את הערך שנרצה להבין מה הפעולות שאפשר לבצע עליו:\n", "

                                                                                                            " ] @@ -690,7 +690,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "או שנוכל להעביר לה ממש שם של טיפוס:" + "או שנוכל להעביר לה ממש שם של טיפוס:" ] }, { @@ -706,15 +706,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### eval" + "### eval" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " על eval אנחנו מלמדים בעיקר כדי להזהיר ממנה – זו פונקציה שאחראית למחדלי אבטחה בכל שפת תכנות שבה היא קיימת.
                                                                                                            \n", + "

                                                                                                            \n", + " על eval אנחנו מלמדים בעיקר כדי להזהיר ממנה – זו פונקציה שאחראית למחדלי אבטחה בכל שפת תכנות שבה היא קיימת.
                                                                                                            \n", " אתם לא אמורים להשתמש בה בקורס, וכדאי לזכור שכשהתשובה היא eval, ברוב המוחלט של המקרים שאלתם את השאלה הלא נכונה.\n", "

                                                                                                            " ] @@ -723,7 +723,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " אחרי ההקדמה המלודרמטית, נספר לכם ש־eval (מלשון evaluation) פשוט מקבלת קוד כמחרוזת, ומריצה אותו בעזרת פייתון.\n", "

                                                                                                            " ] @@ -743,8 +743,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " לעיתים קרובות הפיתוי להשתמש ב־eval הוא גדול.
                                                                                                            \n", + "

                                                                                                            \n", + " לעיתים קרובות הפיתוי להשתמש ב־eval הוא גדול.
                                                                                                            \n", " אפשר לתכנת, לדוגמה, את המחשבון מהתרגול בשבוע השני בצורה הפשוטה הבאה:\n", "

                                                                                                            " ] @@ -763,9 +763,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " אבל כשחושבים על זה – המשתמש שמתבקש להכניס תרגיל מתמטי, יכול להריץ כל קוד שיתחשק לו, והקוד הזה יבוצע!
                                                                                                            \n", - " הוא יכול לקרוא קבצים שנמצאים על מחשב או למחוק אותם, לחטט בסיסמאות, ולמעשה – לעשות ככל העולה על רוחו.
                                                                                                            \n", + "

                                                                                                            \n", + " אבל כשחושבים על זה – המשתמש שמתבקש להכניס תרגיל מתמטי, יכול להריץ כל קוד שיתחשק לו, והקוד הזה יבוצע!
                                                                                                            \n", + " הוא יכול לקרוא קבצים שנמצאים על מחשב או למחוק אותם, לחטט בסיסמאות, ולמעשה – לעשות ככל העולה על רוחו.
                                                                                                            \n", " לקריאה נוספת על הסכנות, חפשו על code injection.\n", "

                                                                                                            " ] @@ -774,22 +774,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## כלים שימושיים נוספים" + "## כלים שימושיים נוספים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### טווח מספרים" + "### טווח מספרים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " פעמים רבות אנחנו נתקלים במצבים שבהם אנחנו רוצים לעבור על כל המספרים מ־0 ועד ערך מסוים.
                                                                                                            \n", + "

                                                                                                            \n", + " פעמים רבות אנחנו נתקלים במצבים שבהם אנחנו רוצים לעבור על כל המספרים מ־0 ועד ערך מסוים.
                                                                                                            \n", " לדוגמה, כך פתרנו את התרגיל שמחשב את סכום המספרים עד מספר שהתקבל כקלט:\n", "

                                                                                                            " ] @@ -816,8 +816,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " מטרת הפונקציה range היא לפתור לנו את הבעיה הזו בקלות.
                                                                                                            \n", + "

                                                                                                            \n", + " מטרת הפונקציה range היא לפתור לנו את הבעיה הזו בקלות.
                                                                                                            \n", " תנו ל־range מספר כארגומנט, והיא תחזיר לכם iterable שמכיל את כל המספרים הטבעיים עד המספר שנתתם לה, ללא המספר האחרון:\n", "

                                                                                                            " ] @@ -836,7 +836,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " הפונקציה יודעת גם לקבל ערך שממנו היא תתחיל לספור:\n", "

                                                                                                            " ] @@ -855,7 +855,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " וגם ערך דילוג, שקובע על כמה מספרים range תדלג בכל פעם:\n", "

                                                                                                            " ] @@ -874,16 +874,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

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

                                                                                                            \n", + "
                                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " הפונקציה range מזכירה את פעולת החיתוך מהשבוע השלישי, שבה משתמשים בסוגריים מרובעים ובנקודתיים.
                                                                                                            \n", + "range, לעומת חיתוך, היא פונקציה – קוראים לה בעזרת סוגריים עגולים, ומפרידים בין הארגומנטים שנשלחים אליה בעזרת פסיקים.\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -891,22 +891,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " כתבו בעצמכם קוד שמחשב את סכום המספרים מ־0 ועד המספר שהתקבל כקלט.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " כתבו בעצמכם קוד שמחשב את סכום המספרים מ־0 ועד המספר שהתקבל כקלט.
                                                                                                            \n", " השתמשו ב־range.\n", "

                                                                                                            \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " חשוב!
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + "חשוב!
                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -914,16 +914,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סידור" + "### סידור" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " עד כה ארגז הכלים שלנו כלל רק את פעולת הסידור ששייכת לרשימות, sort.
                                                                                                            \n", - " אף שמעשית רוב פעולות הסידור מבוצעות על רשימות, לפעמים יעלה הצורך לסדר טיפוסי נתונים אחרים.
                                                                                                            \n", + "

                                                                                                            \n", + " עד כה ארגז הכלים שלנו כלל רק את פעולת הסידור ששייכת לרשימות, sort.
                                                                                                            \n", + " אף שמעשית רוב פעולות הסידור מבוצעות על רשימות, לפעמים יעלה הצורך לסדר טיפוסי נתונים אחרים.
                                                                                                            \n", " במקרים האלה נשתמש בפונקציה המובנית sorted:\n", "

                                                                                                            " ] @@ -941,8 +941,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " sorted מקבלת iterable, ומחזירה רשימה מסודרת של האיברים ב־iterable.\n", + "

                                                                                                            \n", + "sorted מקבלת iterable, ומחזירה רשימה מסודרת של האיברים ב־iterable.\n", "

                                                                                                            " ] }, @@ -950,8 +950,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " נראה דוגמה נוספת של סידור tuple.
                                                                                                            \n", + "

                                                                                                            \n", + " נראה דוגמה נוספת של סידור tuple.
                                                                                                            \n", " שימו לב שטיפוס הנתונים שמוחזר מ־sorted הוא תמיד רשימה:\n", "

                                                                                                            " ] @@ -970,8 +970,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " גם ל־sorted וגם לפעולה sort שיכולה להתבצע על רשימות, יש 2 פרמטרים שלא למדנו עליהם.
                                                                                                            \n", + "

                                                                                                            \n", + " גם ל־sorted וגם לפעולה sort שיכולה להתבצע על רשימות, יש 2 פרמטרים שלא למדנו עליהם.
                                                                                                            \n", " לפרמטר הראשון קוראים reverse, והוא הפשוט להבנה מבין השניים – ברגע שמועבר אליו True, הוא מחזיר את הרשימה מסודרת בסדר יורד:

                                                                                                            " ] }, @@ -988,9 +988,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " הפרמטר השני, key, מסובך קצת יותר להבנה.
                                                                                                            \n", - " כשנעביר לפרמטר הזה פונקציה, הסידור של איברי ה־iterable יתבצע לפי הערך שחוזר מהפונקציה הזו עבור כל אחד מהאיברים שצריך למיין.
                                                                                                            \n", + "

                                                                                                            \n", + " הפרמטר השני, key, מסובך קצת יותר להבנה.
                                                                                                            \n", + " כשנעביר לפרמטר הזה פונקציה, הסידור של איברי ה־iterable יתבצע לפי הערך שחוזר מהפונקציה הזו עבור כל אחד מהאיברים שצריך למיין.
                                                                                                            \n", " מבולבלים? נראה, לדוגמה, את הרשימה הבאה, שמורכבת משמות אנשי הסגל של אחד מהמחזורים הקודמים:\n", "

                                                                                                            " ] @@ -1009,29 +1009,29 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                            01234
                                                                                                            \"Dafi\"\"Efrat\"\"Ido\"\"Itamar\"\"Yam\"
                                                                                                            -5-4-3-2-1
                                                                                                            01234
                                                                                                            \"Dafi\"\"Efrat\"\"Ido\"\"Itamar\"\"Yam\"
                                                                                                            -5-4-3-2-1
                                                                                                            " ] }, @@ -1039,7 +1039,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " אם ארצה לסדר את הרשימה הזו לפי האורך (len) של שמות כל אחד מאנשי הסגל, אשתמש ב־key בצורה הבאה:\n", "

                                                                                                            " ] @@ -1058,8 +1058,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " מה קרה שם בפועל?
                                                                                                            \n", + "

                                                                                                            \n", + " מה קרה שם בפועל?
                                                                                                            \n", " הפונקציה len הופעלה על כל אחד מהאיברים. התוצאות מופיעות בתרשים הבא:\n", "

                                                                                                            " ] @@ -1069,29 +1069,29 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                            01234
                                                                                                            \"Dafi\"\"Efrat\"\"Ido\"\"Itamar\"\"Yam\"
                                                                                                            45363
                                                                                                            01234
                                                                                                            \"Dafi\"\"Efrat\"\"Ido\"\"Itamar\"\"Yam\"
                                                                                                            45363
                                                                                                            " ] }, @@ -1099,8 +1099,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " בפועל, אנחנו מחזיקים עכשיו רשימה ראשית (שמות אנשי הסגל), ועוד רשימה משנית שבה מאוחסנים אורכי האיברים שברשימה הראשית.
                                                                                                            \n", + "

                                                                                                            \n", + " בפועל, אנחנו מחזיקים עכשיו רשימה ראשית (שמות אנשי הסגל), ועוד רשימה משנית שבה מאוחסנים אורכי האיברים שברשימה הראשית.
                                                                                                            \n", " פייתון תמיין את הרשימה המשנית, ובכל פעם שהיא תזיז את אחד האיברים בה, היא תזיז איתו את האיבר התואם ברשימה המקורית:\n", "

                                                                                                            " ] @@ -1110,55 +1110,54 @@ "metadata": {}, "source": [ "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                            01234
                                                                                                            \"Dafi\"\"Efrat\"\"Ido\"\"Itamar\"\"Yam\"
                                                                                                            45363
                                                                                                            01234
                                                                                                            \"Dafi\"\"Efrat\"\"Ido\"\"Itamar\"\"Yam\"
                                                                                                            45363
                                                                                                            \n", - "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                            01234
                                                                                                            \"Ido\"\"Dafi\"\"Efrat\"\"Itamar\"\"Yam\"
                                                                                                            34563
                                                                                                            01234
                                                                                                            \"Ido\"\"Dafi\"\"Efrat\"\"Itamar\"\"Yam\"
                                                                                                            34563
                                                                                                            " ] }, @@ -1166,58 +1165,56 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "הרשימה המשנית עדיין לא מסודרת. נמשיך:\n", - "\n", + "הרשימה המשנית עדיין לא מסודרת. נמשיך:\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                            01234
                                                                                                            \"Ido\"\"Dafi\"\"Efrat\"\"Itamar\"\"Yam\"
                                                                                                            34563
                                                                                                            01234
                                                                                                            \"Ido\"\"Dafi\"\"Efrat\"\"Itamar\"\"Yam\"
                                                                                                            34563
                                                                                                            \n", - "\n", "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                            01234
                                                                                                            \"Ido\"\"Yam\"\"Dafi\"\"Efrat\"\"Itamar\"
                                                                                                            33456
                                                                                                            01234
                                                                                                            \"Ido\"\"Yam\"\"Dafi\"\"Efrat\"\"Itamar\"
                                                                                                            33456
                                                                                                            " ] }, @@ -1225,8 +1222,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " עכשיו הרשימה המשנית מסודרת, ואפשר להפסיק את פעולת הסידור.
                                                                                                            \n", + "

                                                                                                            \n", + " עכשיו הרשימה המשנית מסודרת, ואפשר להפסיק את פעולת הסידור.
                                                                                                            \n", " הקסם הוא שאפשר להכניס ל־key כל פונקציה, ולקבל iterable מסודר לפי ערכי ההחזרה של אותה פונקציה עבור הערכים ב־iterable.\n", "

                                                                                                            " ] @@ -1235,23 +1232,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " כתבו פונקציה שמקבלת כפרמטר את רשימת השמות של המשתתפות בכיתה.
                                                                                                            \n", - " הפונקציה תחזיר רשימה המורכבת מאותם שמות, מסודרים לפי סדר האלף־בית.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " כתבו פונקציה שמקבלת כפרמטר את רשימת השמות של המשתתפות בכיתה.
                                                                                                            \n", + " הפונקציה תחזיר רשימה המורכבת מאותם שמות, מסודרים לפי סדר האלף־בית.
                                                                                                            \n", " סדרו נכונה גם מקרים שבהם חלק מהשמות מתחילים באות גדולה, וחלק – באות קטנה.\n", "

                                                                                                            \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " חשוב!
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + "חשוב!
                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -1259,15 +1256,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### צימוד ערכים" + "### צימוד ערכים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " הרבה פעמים נגיע למצב שבו יש לנו 2 iterables ואנחנו מעוניינים לעבור על הערכים שלהם, זה לצד זה.
                                                                                                            \n", + "

                                                                                                            \n", + " הרבה פעמים נגיע למצב שבו יש לנו 2 iterables ואנחנו מעוניינים לעבור על הערכים שלהם, זה לצד זה.
                                                                                                            \n", " נניח שיש לנו רשימה של ציורים, ורשימה של הציירים שציירו אותם:\n", "

                                                                                                            " ] @@ -1286,7 +1283,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " צורה אחת לעבור על שתי הרשימות תהיה כזו:\n", "

                                                                                                            " ] @@ -1311,8 +1308,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "אבל אפשר להסכים על כך שהדרך הזו לא נוחה במיוחד.
                                                                                                            \n", + "

                                                                                                            \n", + "אבל אפשר להסכים על כך שהדרך הזו לא נוחה במיוחד.
                                                                                                            \n", "אפשרות אחרת היא להשתמש ב־zip, שיצמיד בין שני הערכים ויצור לנו את המבנה הבא:\n", "

                                                                                                            " ] @@ -1331,15 +1328,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", " אם שתי הרשימות אינן זהות באורכן, zip לא יתייחס לאיברים העודפים של הרשימה הארוכה יותר.\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -1347,7 +1344,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "אחד השימושים האפשריים ל־zip הוא unpacking בתוך לולאת for:\n", "

                                                                                                            " ] @@ -1366,7 +1363,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "והיא אפילו לא מוגבלת ל־2 ארגומנטים בלבד:\n", "

                                                                                                            " ] @@ -1389,21 +1386,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", " יש טיפוס נתונים שהיה מתאים יותר למקרה הזה מאשר 2 רשימות. מהו לדעתכם?\n", "

                                                                                                            \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " חשוב!
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + "חשוב!
                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -1411,8 +1408,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "שימוש נפוץ ל־zip הוא במקרה שיש לנו שתי רשימות שמתאימות זו לזו, ויחד יכולות ליצור מילון.
                                                                                                            \n", + "

                                                                                                            \n", + "שימוש נפוץ ל־zip הוא במקרה שיש לנו שתי רשימות שמתאימות זו לזו, ויחד יכולות ליצור מילון.
                                                                                                            \n", "אם רשימה אחת מתאימה להיות המפתחות במילון, והאחרת להיות הערכים באותו מילון, נוכל להשתמש ב־zip כדי לבצע את ההמרה:\n", "

                                                                                                            " ] @@ -1433,7 +1430,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " עכשיו נוכל לשאול מי צייר את המונה ליזה:\n", "

                                                                                                            " ] @@ -1451,7 +1448,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " או לעבור על המילון ולהדפיס את הערכים, כמו שעשינו לפני כן:\n", "

                                                                                                            " ] @@ -1470,15 +1467,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### המרת תווים למספרים ולהפך" + "### המרת תווים למספרים ולהפך" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " כפי שהסברנו במחברת קבצים בשבוע שעבר, לכל תו מוצמד מספר שמזהה אותו.
                                                                                                            \n", + "

                                                                                                            \n", + " כפי שהסברנו במחברת קבצים בשבוע שעבר, לכל תו מוצמד מספר שמזהה אותו.
                                                                                                            \n", " בעזרת הפונקציה ord נוכל לאחזר את הערך הזה:\n", "

                                                                                                            " ] @@ -1507,8 +1504,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " ויש גם דרך לעשות את הפעולה ההפוכה!
                                                                                                            \n", + "

                                                                                                            \n", + " ויש גם דרך לעשות את הפעולה ההפוכה!
                                                                                                            \n", " בעזרת הפונקציה chr נוכל לקבל את התו לפי המספר שמייצג אותו:\n", "

                                                                                                            " ] @@ -1529,22 +1526,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " כתבו תוכנית שמדפיסה זוג ערכים עבור כל מספר מ־9,760 ועד 10,100.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " כתבו תוכנית שמדפיסה זוג ערכים עבור כל מספר מ־9,760 ועד 10,100.
                                                                                                            \n", " הערך הראשון יהיה המספר, והערך השני יהיה התו שאותו המספר מייצג.\n", "

                                                                                                            \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " חשוב!
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + "חשוב!
                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -1552,14 +1549,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מניית איברים" + "### מניית איברים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " נניח שאנחנו רוצים לעבור על כל השורות בקובץ מסוים, ולהדפיס ליד כל שורה את המספר הסידורי שלה:\n", "

                                                                                                            " ] @@ -1590,8 +1587,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " חייבת להיות דרך טובה יותר!
                                                                                                            \n", + "

                                                                                                            \n", + " חייבת להיות דרך טובה יותר!
                                                                                                            \n", " הפונקציה המובנית enumerate מאפשרת למתכנת להצמיד מספר רץ ל־iterable:\n", "

                                                                                                            " ] @@ -1610,7 +1607,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " השימוש הנפוץ ביותר ל־enumerate הוא בלולאות for:\n", "

                                                                                                            " ] @@ -1630,7 +1627,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " טריק מדליק: אם בא לנו להתחיל למספר ממספר שהוא לא 0, אפשר להעביר ל־enumerate את המספר הזה כפרמטר:\n", "

                                                                                                            " ] @@ -1650,23 +1647,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## דוגמאות לשימושים" + "## דוגמאות לשימושים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מפת צופן קיסר" + "### מפת צופן קיסר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " צופן קיסר היא שיטת הצפנה, שבה כל תו מוחלף בתו שנמצא 3 תווים אחריו באלף־בית של השפה.
                                                                                                            \n", - " בעברית, לדוגמה, האות א' תוחלף באות ד', האות ג' באות ו' והאות ת' באות ג'.
                                                                                                            \n", + "

                                                                                                            \n", + " צופן קיסר היא שיטת הצפנה, שבה כל תו מוחלף בתו שנמצא 3 תווים אחריו באלף־בית של השפה.
                                                                                                            \n", + " בעברית, לדוגמה, האות א' תוחלף באות ד', האות ג' באות ו' והאות ת' באות ג'.
                                                                                                            \n", " נבנה מפת פענוח לצופן קיסר בעזרת הפונקציות שלמדנו במחברת:\n", "

                                                                                                            " ] @@ -1704,7 +1701,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " ורק בשביל הכיף, נבנה קוד שיאפשר לנו להשתמש במפה כדי להצפין מסרים:\n", "

                                                                                                            " ] @@ -1756,14 +1753,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סכימה מדורגת" + "### סכימה מדורגת" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", " נבנה תוכנה קצרה שמאפשרת למשתמש להזין מספרים, מסדרת אותם בסדר הפוך, ומדפיסה עבור כל איבר את סכום האיברים עד המיקום של אותו איבר:\n", "

                                                                                                            " ] @@ -1795,15 +1792,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ממוצע ציונים" + "### ממוצע ציונים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " קבלו רשימת שמות תלמידים, ועבור כל תלמיד את רשימת הציונים שלו.
                                                                                                            \n", + "

                                                                                                            \n", + " קבלו רשימת שמות תלמידים, ועבור כל תלמיד את רשימת הציונים שלו.
                                                                                                            \n", " הדפיסו את שם התלמיד שממוצע הציונים שלו הוא הגבוה ביותר, לצד הציונים שלו.\n", "

                                                                                                            " ] @@ -1866,22 +1863,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### אותיות או לא להיות" + "### אותיות או לא להיות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "כתבו תוכנה שמדפיסה את המספר הסידורי של כל אות באלף־בית האנגלי, מהסוף להתחלה.
                                                                                                            \n", + "

                                                                                                            \n", + "כתבו תוכנה שמדפיסה את המספר הסידורי של כל אות באלף־בית האנגלי, מהסוף להתחלה.
                                                                                                            \n", "השתמשו בכמה שיותר פונקציות מובנות בדרך.\n", "

                                                                                                            " ] @@ -1890,7 +1887,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "הפלט אמור להיראות כך:\n", "

                                                                                                            " ] @@ -1911,7 +1908,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "אנחנו הצלחנו להשתמש ב־5 פונקציות שנלמדו במחברת הזו, בקוד שאורכו 2 שורות.\n", "

                                                                                                            " ] @@ -1920,23 +1917,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מלחמה וזהו" + "### מלחמה וזהו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                            \n", - "
                                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                                            \n", - "
                                                                                                            \n", - "

                                                                                                            \n", - " זהו תרגיל ברמת קושי גבוהה, שמערב נושאים רבים.
                                                                                                            \n", + "

                                                                                                            \n", + "
                                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                                            \n", + "
                                                                                                            \n", + "

                                                                                                            \n", + " זהו תרגיל ברמת קושי גבוהה, שמערב נושאים רבים.
                                                                                                            \n", " הרגישו בנוח להיעזר במתרגלים שלכם.\n", "

                                                                                                            \n", - "
                                                                                                            \n", + "
                                                                                                            \n", "
                                                                                                            " ] }, @@ -1944,9 +1941,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " מצאו את עשר המילים הנפוצות ביותר בספר \"מלחמה ושלום\", והדפיסו אותן למסך מהמילה הנפוצה ביותר למילה הנפוצה הכי פחות.
                                                                                                            \n", - " ליד כל מילה הדפיסו את מספר המופעים שלה בספר.
                                                                                                            \n", + "

                                                                                                            \n", + " מצאו את עשר המילים הנפוצות ביותר בספר \"מלחמה ושלום\", והדפיסו אותן למסך מהמילה הנפוצה ביותר למילה הנפוצה הכי פחות.
                                                                                                            \n", + " ליד כל מילה הדפיסו את מספר המופעים שלה בספר.
                                                                                                            \n", " הספר נמצא בקובץ war-and-peace.txt בתוך התיקייה resources.\n", "

                                                                                                            " ] diff --git a/week4/Summary.ipynb b/week4/Summary.ipynb index c171e72..924e855 100644 --- a/week4/Summary.ipynb +++ b/week4/Summary.ipynb @@ -4,33 +4,33 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                                                                                            תרגילים

                                                                                                            " + "#

                                                                                                            תרגילים

                                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                                                            בחירות במדינת הגמדים

                                                                                                            " + "##

                                                                                                            בחירות במדינת הגמדים

                                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " במדינת הגמדים רעש מהומה, ולכן החליטו ללכת לבחירות.
                                                                                                            \n", - " ועדת הבחירות המרכזית, בראשות דרדסבא, ערכה בחירות חשאיות והוגנות והציגה לפניכם את התוצאות בקובץ elections.txt המצורף (בתיקיית resources), על כל 353,400 בוחריה.
                                                                                                            \n", - " הקובץ הינו רשימה של שמות המפלגות שבהן בחרו תושבי מדינת הגמדים, כאשר כל שורה מייצגת בחירה של תושב מדינת הגמדים.
                                                                                                            \n", - " כדי לשמור על טוהר הבחירות לא נאמר לכם במפורש מהו מספר המפלגות שהגישו את רשימותיהן לוועדת הבחירות.
                                                                                                            \n", - " עליכם הוטלה המשימה לעבור על קובץ תוצאות הבחירות ולדווח כמה קולות קיבלה כל מפלגה.
                                                                                                            \n", + "

                                                                                                            \n", + " במדינת הגמדים רעש מהומה, ולכן החליטו ללכת לבחירות.
                                                                                                            \n", + " ועדת הבחירות המרכזית, בראשות דרדסבא, ערכה בחירות חשאיות והוגנות והציגה לפניכם את התוצאות בקובץ elections.txt המצורף (בתיקיית resources), על כל 353,400 בוחריה.
                                                                                                            \n", + " הקובץ הינו רשימה של שמות המפלגות שבהן בחרו תושבי מדינת הגמדים, כאשר כל שורה מייצגת בחירה של תושב מדינת הגמדים.
                                                                                                            \n", + " כדי לשמור על טוהר הבחירות לא נאמר לכם במפורש מהו מספר המפלגות שהגישו את רשימותיהן לוועדת הבחירות.
                                                                                                            \n", + " עליכם הוטלה המשימה לעבור על קובץ תוצאות הבחירות ולדווח כמה קולות קיבלה כל מפלגה.
                                                                                                            \n", " כתבו פונקציה שלא מקבלת פרמטרים ומחזירה את תוצאות הבחירות במילון ובו שם המפלגה ומספר הקולות שקיבלה.\n", "

                                                                                                            " ] @@ -48,10 +48,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " אחוז החסימה במדינת הגמדים הוא אכזרי למדי ועומד על 10%.
                                                                                                            \n", + "

                                                                                                            \n", + " אחוז החסימה במדינת הגמדים הוא אכזרי למדי ועומד על 10%.
                                                                                                            \n", " כיון שהצביעו 353,400 גמדים – אחוז החסימה עומד על\n", - " $353,400*0.1=35,340$ קולות.
                                                                                                            \n", + " $353,400*0.1=35,340$ קולות.
                                                                                                            \n", " כתבו פונקציה המקבלת את מילון תוצאות הבחירות ומדפיסה אילו מפלגות עברו את אחוז החסימה ואילו לא.\n", "

                                                                                                            " ] @@ -67,7 +67,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "כעת כתבו פונקציה המקבלת את מילון תוצאות הבחירות ומחזירה את מספר הקולות שקיבלו רק מפלגות שעברו את אחוז החסימה.

                                                                                                            " ] }, @@ -82,8 +82,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " אחרי שסיימתם בדקו שקיבלתם את הערך הבא: 249,333\n", + "

                                                                                                            \n", + " אחרי שסיימתם בדקו שקיבלתם את הערך הבא: 249,333\n", "

                                                                                                            " ] }, @@ -91,11 +91,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " לאחר קבלת תוצאות האמת המפלגות פועלות להקים קואליציה. קואליציה מורכבת מ־61 מנדטים לפחות.
                                                                                                            \n", - " מנדט שווה: $\\dfrac{votes}{120}=2.077.775\\cong2,078$ קולות.
                                                                                                            \n", - " שימו לב, הקולות בתרגיל זה הם התוצאה של הסעיף הקודם. כלומר הקולות בניכוי הקולות עבור מפלגות שלא עברו את אחוז החסימה.
                                                                                                            \n", - " כעת כתבו פונקציה המקבלת את מילון התוצאות ומחזירה מילון שבו שם המפלגה ממופה עם מספר המנדטים שקיבלה המפלגה.
                                                                                                            \n", + "

                                                                                                            \n", + " לאחר קבלת תוצאות האמת המפלגות פועלות להקים קואליציה. קואליציה מורכבת מ־61 מנדטים לפחות.
                                                                                                            \n", + " מנדט שווה: $\\dfrac{votes}{120}=2.077.775\\cong2,078$ קולות.
                                                                                                            \n", + " שימו לב, הקולות בתרגיל זה הם התוצאה של הסעיף הקודם. כלומר הקולות בניכוי הקולות עבור מפלגות שלא עברו את אחוז החסימה.
                                                                                                            \n", + " כעת כתבו פונקציה המקבלת את מילון התוצאות ומחזירה מילון שבו שם המפלגה ממופה עם מספר המנדטים שקיבלה המפלגה.
                                                                                                            \n", " הפעילו את פונקנציית round על תוצאת החלוקה (השתמשו ב־2,078) כדי לקבל את מספר המנדטים השלם.\n", "

                                                                                                            " ] @@ -111,7 +111,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", + "

                                                                                                            \n", "הדפיסו את המילון שקיבלתם. ודאו שסך המנדטים מסתכם ל־120.

                                                                                                            " ] }, @@ -119,9 +119,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - "כדי להרכיב קואליציה דרושים 61 מנדטים.
                                                                                                            \n", - "המפלגות MidgeLandIsUs ו־NilsIsALeader לא מוכנות לשבת יחד בקואליציה.
                                                                                                            \n", + "

                                                                                                            \n", + "כדי להרכיב קואליציה דרושים 61 מנדטים.
                                                                                                            \n", + "המפלגות MidgeLandIsUs ו־NilsIsALeader לא מוכנות לשבת יחד בקואליציה.
                                                                                                            \n", "כתבו פונקציה המקבלת את המילון המכיל את תוצאות המנדטים ומדפיסה קואליציה אפשרית עבור NilsIsALeader וקואליציה אפשרית עבור MidgeLandIsUs.\n", "

                                                                                                            " ] @@ -130,27 +130,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "##

                                                                                                            Leveraging Simple Dictionaries

                                                                                                            " + "##

                                                                                                            Leveraging Simple Dictionaries

                                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                                            הקדמה

                                                                                                            " + "###

                                                                                                            הקדמה

                                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " אוטומט סופי דטרמיניסטי הוא מודל מתמטי שמגדיר אוסף של מצבים, וכללי מעבר ביניהם.
                                                                                                            \n", - " נפתח בדוגמה:
                                                                                                            \n", - "

                                                                                                            \n", - " \"תמונת\n", - "
                                                                                                            אוטומט סופי דטרמיניסטי שבודק האם מספר מסוים הוא מספר זוגי.
                                                                                                            \n", - "
                                                                                                            \n", + "

                                                                                                            \n", + "אוטומט סופי דטרמיניסטי הוא מודל מתמטי שמגדיר אוסף של מצבים, וכללי מעבר ביניהם.
                                                                                                            \n", + " נפתח בדוגמה:
                                                                                                            \n", + "

                                                                                                            \n", + "\"תמונת\n", + "
                                                                                                            אוטומט סופי דטרמיניסטי שבודק האם מספר מסוים הוא מספר זוגי.
                                                                                                            \n", + "
                                                                                                            \n", "

                                                                                                            " ] }, @@ -158,8 +158,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                            \n", - " לפניכם מכונת מצבים שמקבלת מספר, ובודקת האם הוא זוגי.
                                                                                                            \n", + "

                                                                                                            \n", + " לפניכם מכונת מצבים שמקבלת מספר, ובודקת האם הוא זוגי.
                                                                                                            \n", " כל מצב מיוצג בתמונה על ידי עיגול, וכללי המעבר ביניהם מיוצגים באמצעות חצים.\n", "

                                                                                                            " ] @@ -168,9 +168,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                            \n", + " המכונה מתחילה מ\"מצב התחלתי\" נתון כלשהו, במקרה שלנו \"מספר אי זוגי\".
                                                                                                            \n", + " כל פעם שמתקבל קלט חדש, המכונה מחליטה לאיזה מצב לעבור לפי כללי המעבר הרשומים על החצים.
                                                                                                            \n", " לדוגמה, עבור הקלט 2 ואז 7 ואז 4 (274) מכונת המצבים המופיעה מעלה תבצע את הפעולות הבאות:\n", "

                                                                                                            " ] @@ -179,11 +179,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                              \n", - "
                                                                                                            1. תכנס למצב ההתחלתי \"מספר אי זוגי\".
                                                                                                            2. \n", - "
                                                                                                            3. תקרא את הספרה הראשונה במספר – 2, ותחליט לעבור (לפי החץ) למצב \"מספר זוגי\".
                                                                                                            4. \n", - "
                                                                                                            5. תקרא את הספרה השנייה במספר – 7, ותחליט לעבור (לפי החץ) למצב \"מספר אי־זוגי\".
                                                                                                            6. \n", - "
                                                                                                            7. תקרא את הספרה השלישית במספר – 4, ותחליט לעבור (לפי החץ) למצב \"מספר זוגי\".
                                                                                                            8. \n", + "
                                                                                                                \n", + "
                                                                                                              1. תכנס למצב ההתחלתי \"מספר אי זוגי\".
                                                                                                              2. \n", + "
                                                                                                              3. תקרא את הספרה הראשונה במספר – 2, ותחליט לעבור (לפי החץ) למצב \"מספר זוגי\".
                                                                                                              4. \n", + "
                                                                                                              5. תקרא את הספרה השנייה במספר – 7, ותחליט לעבור (לפי החץ) למצב \"מספר אי־זוגי\".
                                                                                                              6. \n", + "
                                                                                                              7. תקרא את הספרה השלישית במספר – 4, ותחליט לעבור (לפי החץ) למצב \"מספר זוגי\".
                                                                                                              8. \n", "
                                                                                                              " ] }, @@ -191,10 +191,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " לכל מצב באוטומט סופי דטרמיניסטי יש \"סוג מצב\": מקבל או לא מקבל.
                                                                                                              \n", - " מצב מקבל מסומן בעיגול כפול, כמו המצב \"מספר זוגי\" באוטומט דלעיל.
                                                                                                              \n", - " אם בסוף הריצה הגענו למצב מקבל, סימן שהקלט תקין, ואם לא – סימן שהקלט אינו תקין.
                                                                                                              \n", + "

                                                                                                              \n", + " לכל מצב באוטומט סופי דטרמיניסטי יש \"סוג מצב\": מקבל או לא מקבל.
                                                                                                              \n", + " מצב מקבל מסומן בעיגול כפול, כמו המצב \"מספר זוגי\" באוטומט דלעיל.
                                                                                                              \n", + " אם בסוף הריצה הגענו למצב מקבל, סימן שהקלט תקין, ואם לא – סימן שהקלט אינו תקין.
                                                                                                              \n", " באוטומט הדוגמה שלנו כל קלט מספרי זוגי הוא תקין, וכל מספרי אי־זוגי נחשב ללא תקין.\n", "

                                                                                                              " ] @@ -203,9 +203,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " כל אפשרות הכלולה במצבי המעבר נקראת אות. אוסף כל האותיות הכלולות באוטומט מסוים נקרא א\"ב הקלט.
                                                                                                              \n", - " שימו לב שבאוטומט יכולה להיות כמות גדולה של מצבים וכללי־מעבר, ובכל אוטומט יכול להיות יותר ממצב מקבל אחד.
                                                                                                              \n", + "

                                                                                                              \n", + " כל אפשרות הכלולה במצבי המעבר נקראת אות. אוסף כל האותיות הכלולות באוטומט מסוים נקרא א\"ב הקלט.
                                                                                                              \n", + " שימו לב שבאוטומט יכולה להיות כמות גדולה של מצבים וכללי־מעבר, ובכל אוטומט יכול להיות יותר ממצב מקבל אחד.
                                                                                                              \n", " כמו כן, \"אות\" בא\"ב יכולה לכלול יותר מתו אחד.\n", "

                                                                                                              " ] @@ -214,16 +214,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                                              תרגיל

                                                                                                              " + "###

                                                                                                              תרגיל

                                                                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " כתבו תוכנה שקוראת קובץ ויוצרת ממנו אוטומט סופי דטרמיניסטי.
                                                                                                              \n", - " בקובץ ישנו כל המידע הדרוש לבניית האוטומט, ורשימת קלטים. דוגמה לקובץ שכזה מופיעה מטה.
                                                                                                              \n", + "

                                                                                                              \n", + " כתבו תוכנה שקוראת קובץ ויוצרת ממנו אוטומט סופי דטרמיניסטי.
                                                                                                              \n", + " בקובץ ישנו כל המידע הדרוש לבניית האוטומט, ורשימת קלטים. דוגמה לקובץ שכזה מופיעה מטה.
                                                                                                              \n", " הדפיסו עבור כל קלט האם לאחר הרצתו האוטומט הגיע למצב מקבל או למצב לא מקבל.\n", "

                                                                                                              " ] @@ -232,7 +232,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", " הקובץ שהתוכנה שלכם אמורה לקרוא ונועד לתאר את האוטומט המופיע למעלה נראה כך:\n", "

                                                                                                              " ] @@ -262,7 +262,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", " על התוכנה שבניתם להדפיס במקרה הזה:\n", "

                                                                                                              " ] @@ -280,19 +280,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                                              הסבר עבור הדוגמה

                                                                                                              " + "###

                                                                                                              הסבר עבור הדוגמה

                                                                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " הפסקה הראשונה תמיד תראה כך:
                                                                                                              \n", - " הקובץ תמיד יפתח במילה Definitions:.
                                                                                                              \n", - " שורה אחריה תמיד תופיע המילה States:, ואחריה כל המצבים הקיימים במכונת המצבים, מופרדים בפסיק.
                                                                                                              \n", - " שורה אחריה תמיד תופיע המילה Start:, ואחריה המצב ההתחלתי של המכונה.
                                                                                                              \n", - " שורה אחריה תמיד תופיע המילה Accepting:, ואחריה כל המצבים שמוגדרים כמצבים מקבלים במכונת המצבים, מופרדים בפסיק.
                                                                                                              \n", + "

                                                                                                              \n", + " הפסקה הראשונה תמיד תראה כך:
                                                                                                              \n", + " הקובץ תמיד יפתח במילה Definitions:.
                                                                                                              \n", + " שורה אחריה תמיד תופיע המילה States:, ואחריה כל המצבים הקיימים במכונת המצבים, מופרדים בפסיק.
                                                                                                              \n", + " שורה אחריה תמיד תופיע המילה Start:, ואחריה המצב ההתחלתי של המכונה.
                                                                                                              \n", + " שורה אחריה תמיד תופיע המילה Accepting:, ואחריה כל המצבים שמוגדרים כמצבים מקבלים במכונת המצבים, מופרדים בפסיק.
                                                                                                              \n", "

                                                                                                              " ] }, @@ -300,12 +300,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " הפסקה השנייה תמיד תראה כך:
                                                                                                              \n", - " הפסקה תמיד תפתח במילה Transitions:, ואחריה רשימה של כללי מעבר.
                                                                                                              \n", - " כל כלל מעבר מורכב מהמצב ממנו יוצאים, המצב אליו מגיעים ומה הקלט ש\"מפעיל\" את המעבר.
                                                                                                              \n", - " השורה תכתב באופן הבא, כאשר X הוא המצב ממנו יוצאים, Z הוא המצב אליו מגיעים ו־Y היא רשימת הקלטים שמפעילה את מצב המעבר:
                                                                                                              \n", - " X: Y -> Z
                                                                                                              \n", + "

                                                                                                              \n", + " הפסקה השנייה תמיד תראה כך:
                                                                                                              \n", + " הפסקה תמיד תפתח במילה Transitions:, ואחריה רשימה של כללי מעבר.
                                                                                                              \n", + " כל כלל מעבר מורכב מהמצב ממנו יוצאים, המצב אליו מגיעים ומה הקלט ש\"מפעיל\" את המעבר.
                                                                                                              \n", + " השורה תכתב באופן הבא, כאשר X הוא המצב ממנו יוצאים, Z הוא המצב אליו מגיעים ו־Y היא רשימת הקלטים שמפעילה את מצב המעבר:
                                                                                                              \n", + " X: Y -> Z
                                                                                                              \n", "

                                                                                                              " ] }, @@ -313,9 +313,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " הפסקה השלישית תמיד תראה כך:
                                                                                                              \n", - " הפסקה תמיד תפתח במילה Inputs:, ואחריה רשימה של קלטים תקינים.
                                                                                                              \n", + "

                                                                                                              \n", + " הפסקה השלישית תמיד תראה כך:
                                                                                                              \n", + " הפסקה תמיד תפתח במילה Inputs:, ואחריה רשימה של קלטים תקינים.
                                                                                                              \n", " כל שורת קלט תופיע בשורה נפרדת בקובץ, ותכלול את רצף הקלטים שיועברו לאוטומט אחד אחרי השני, כאשר הם מופרדים בפסיק.\n", "

                                                                                                              " ] @@ -324,10 +324,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " עבור הקלט הראשון, האוטומט יתחיל מהמצב ההתחלתי q0. האות 1 תשאיר אותו שם, כך גם 3, כך גם 1. מצב לא מקבל.
                                                                                                              \n", - " עבור הקלט השני, האוטומט יתחיל מהמצב ההתחלתי q0. האות 2 תעביר אותו ל־q1, האות 7 תעביר אותו ל־q0, האות 4 תעביר אותו חזרה ל־q1. מצב מקבל.
                                                                                                              \n", - " עבור הקלט השלישי, האוטומט יתחיל מהמצב ההתחלתי q0. האות 2 תעביר אותו ל־q1, האות 2 תשאיר אותו ב־q1 בכל המופעים הבאים שלה. מצב מקבל.
                                                                                                              \n", + "

                                                                                                              \n", + " עבור הקלט הראשון, האוטומט יתחיל מהמצב ההתחלתי q0. האות 1 תשאיר אותו שם, כך גם 3, כך גם 1. מצב לא מקבל.
                                                                                                              \n", + " עבור הקלט השני, האוטומט יתחיל מהמצב ההתחלתי q0. האות 2 תעביר אותו ל־q1, האות 7 תעביר אותו ל־q0, האות 4 תעביר אותו חזרה ל־q1. מצב מקבל.
                                                                                                              \n", + " עבור הקלט השלישי, האוטומט יתחיל מהמצב ההתחלתי q0. האות 2 תעביר אותו ל־q1, האות 2 תשאיר אותו ב־q1 בכל המופעים הבאים שלה. מצב מקבל.
                                                                                                              \n", "

                                                                                                              " ] }, @@ -335,14 +335,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "###

                                                                                                              דוגמה נוספת

                                                                                                              " + "###

                                                                                                              דוגמה נוספת

                                                                                                              " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", " זוהי דוגמה לקובץ שמתאר את האוטומט המופיע כאן.\n", "

                                                                                                              " ] diff --git a/week5/1_Modules.ipynb b/week5/1_Modules.ipynb index 0896d4d..c37b487 100644 --- a/week5/1_Modules.ipynb +++ b/week5/1_Modules.ipynb @@ -4,29 +4,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# מודולים" + "# מודולים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", - " מתכנתים העוסקים בקביעות במלאכתם, יזכו לעיתים תכופות להיתקל באתגרים בתחומים שונים.
                                                                                                              \n", + "

                                                                                                              \n", + " מתכנתים העוסקים בקביעות במלאכתם, יזכו לעיתים תכופות להיתקל באתגרים בתחומים שונים.
                                                                                                              \n", "

                                                                                                              " ] }, @@ -34,7 +34,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                              \n", + "

                                                                                                              \n", " דוגמה טובה לאתגר נפוץ שכזה היא יצירת מידע אקראי:\n", "

                                                                                                              " ] @@ -43,10 +43,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                \n", - "
                                                                                                              • מתכנת שיוצר משחק קלפים יצטרך לכתוב קוד לשליפת קלף אקראי מחפיסת הקלפים.
                                                                                                              • \n", - "
                                                                                                              • מתכנת שמתקשה להחליט אם הוא רוצה להיות בפריז, ברומא או בקוטב הצפוני, יכתוב תוכנית שתבחר עבורו את היעד באקראיות.
                                                                                                              • \n", - "
                                                                                                              • מתכנת שרוצה לבנות סימולציות למצבים מהחיים האמיתיים, יצטרך פעמים רבות להשתמש במידע אקראי.
                                                                                                              • \n", + "
                                                                                                                  \n", + "
                                                                                                                • מתכנת שיוצר משחק קלפים יצטרך לכתוב קוד לשליפת קלף אקראי מחפיסת הקלפים.
                                                                                                                • \n", + "
                                                                                                                • מתכנת שמתקשה להחליט אם הוא רוצה להיות בפריז, ברומא או בקוטב הצפוני, יכתוב תוכנית שתבחר עבורו את היעד באקראיות.
                                                                                                                • \n", + "
                                                                                                                • מתכנת שרוצה לבנות סימולציות למצבים מהחיים האמיתיים, יצטרך פעמים רבות להשתמש במידע אקראי.
                                                                                                                • \n", "
                                                                                                                " ] }, @@ -54,7 +54,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                \n", + "

                                                                                                                \n", " דוגמה טובה נוספת היא עבודה עם תאריכים:\n", "

                                                                                                                " ] @@ -63,10 +63,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                  \n", - "
                                                                                                                • מתכנת שרוצה לדעת בעוד כמה זמן מגיע תאריך מסוים (יום הולדת, לדוגמה).
                                                                                                                • \n", - "
                                                                                                                • מתכנת שרוצה לבדוק מה יהיה התאריך בעוד 100,000,000 שניות.
                                                                                                                • \n", - "
                                                                                                                • מתכנת שקיבל מסמך עם תאריכי הלידה של כל אוכלוסיית ישראל, ורוצה לדעת מהו החודש שבו נולדים הכי הרבה תינוקות בישראל.
                                                                                                                • \n", + "
                                                                                                                    \n", + "
                                                                                                                  • מתכנת שרוצה לדעת בעוד כמה זמן מגיע תאריך מסוים (יום הולדת, לדוגמה).
                                                                                                                  • \n", + "
                                                                                                                  • מתכנת שרוצה לבדוק מה יהיה התאריך בעוד 100,000,000 שניות.
                                                                                                                  • \n", + "
                                                                                                                  • מתכנת שקיבל מסמך עם תאריכי הלידה של כל אוכלוסיית ישראל, ורוצה לדעת מהו החודש שבו נולדים הכי הרבה תינוקות בישראל.
                                                                                                                  • \n", "
                                                                                                                  " ] }, @@ -74,9 +74,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                  \n", - " פתירת האתגרים הללו עשויה להיות משימה מורכבת, ולטמון בחובה בעיות ומקרי קצה רבים.
                                                                                                                  \n", - " תארו לעצמכם כמה זמן היה נחסך לו היה מישהו פותר את הבעיות הנפוצות הללו עבור כל המתכנתים!
                                                                                                                  \n", + "

                                                                                                                  \n", + " פתירת האתגרים הללו עשויה להיות משימה מורכבת, ולטמון בחובה בעיות ומקרי קצה רבים.
                                                                                                                  \n", + " תארו לעצמכם כמה זמן היה נחסך לו היה מישהו פותר את הבעיות הנפוצות הללו עבור כל המתכנתים!
                                                                                                                  \n", "

                                                                                                                  " ] }, @@ -84,17 +84,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הגדרה" + "## הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                  \n", - " כרעיון, מודול הוא פיסת תוכנה עצמאית המשרתת מטרה מוגדרת.
                                                                                                                  \n", - " המטרה יכולה להיות, לדוגמה, טיפול בתאריכים, יצירת נתונים אקראיים או תקשורת עם אתרי אינטרנט.
                                                                                                                  \n", - " בפייתון, מודול הוא קובץ המאגד הגדרות ופקודות, שיחדיו יוצרות אוסף כלים בתחום מסוים.
                                                                                                                  \n", + "

                                                                                                                  \n", + " כרעיון, מודול הוא פיסת תוכנה עצמאית המשרתת מטרה מוגדרת.
                                                                                                                  \n", + " המטרה יכולה להיות, לדוגמה, טיפול בתאריכים, יצירת נתונים אקראיים או תקשורת עם אתרי אינטרנט.
                                                                                                                  \n", + " בפייתון, מודול הוא קובץ המאגד הגדרות ופקודות, שיחדיו יוצרות אוסף כלים בתחום מסוים.
                                                                                                                  \n", "

                                                                                                                  " ] }, @@ -102,22 +102,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## שימוש" + "## שימוש" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### יבוא" + "### יבוא" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                  \n", - " ניקח כדוגמה את המודול random, שמטרתו לעזור לנו ליצור מידע אקראי.
                                                                                                                  \n", + "

                                                                                                                  \n", + " ניקח כדוגמה את המודול random, שמטרתו לעזור לנו ליצור מידע אקראי.
                                                                                                                  \n", " לפני שנוכל להשתמש ביכולותיו של המודול, נצטרך לבקש מפייתון לטעון אותו בעזרת מילת המפתח import:\n", "

                                                                                                                  " ] @@ -135,9 +135,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                  \n", - " פעולה זו טוענת את המודול ומאפשרת לנו להשתמש בו בהמשך הקוד. נהוג להגיד שייבאנו את המודול random.
                                                                                                                  \n", - " עכשיו, כשהמודול יובא, אפשר להשתמש בו בקוד התוכנית שלנו באופן שיענה על הצורך ליצירת דברים אקראיים.
                                                                                                                  \n", + "

                                                                                                                  \n", + " פעולה זו טוענת את המודול ומאפשרת לנו להשתמש בו בהמשך הקוד. נהוג להגיד שייבאנו את המודול random.
                                                                                                                  \n", + " עכשיו, כשהמודול יובא, אפשר להשתמש בו בקוד התוכנית שלנו באופן שיענה על הצורך ליצירת דברים אקראיים.
                                                                                                                  \n", " כדי להבין איך להשתמש במודול ומהן יכולותיו, נוכל לקרוא מידע נוסף על אודותיו במגוון דרכים:\n", "

                                                                                                                  " ] @@ -146,10 +146,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                    \n", - "
                                                                                                                  1. בעזרת התיעוד באתר פייתון, שאליו אפשר להגיע אם כותבים python documentation random במנועי חיפוש.
                                                                                                                  2. \n", - "
                                                                                                                  3. בעזרת הפונקציה dir – נוכל לכתוב dir(random).
                                                                                                                  4. \n", - "
                                                                                                                  5. בג'ופיטר, אם נכתוב בתא קוד random. ונלחץ Tab ↹.
                                                                                                                  6. \n", + "
                                                                                                                      \n", + "
                                                                                                                    1. בעזרת התיעוד באתר פייתון, שאליו אפשר להגיע אם כותבים python documentation random במנועי חיפוש.
                                                                                                                    2. \n", + "
                                                                                                                    3. בעזרת הפונקציה dir – נוכל לכתוב dir(random).
                                                                                                                    4. \n", + "
                                                                                                                    5. בג'ופיטר, אם נכתוב בתא קוד random. ונלחץ Tab ↹.
                                                                                                                    6. \n", "
                                                                                                                    " ] }, @@ -157,16 +157,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### דוגמאות לשימוש" + "### דוגמאות לשימוש" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                    \n", - " במשחק הפוקימון \"פוקימון אדום\" אפשר לבחור בתור הפוקימון ההתחלתי את בלבזאור, את סקווירטל או את צ'רמנדר.
                                                                                                                    \n", - " על הפוקימון הטוב ביותר לבחירה ניטשים ויכוחים רבים עוד מאז שחרורו של המשחק ב־1996.
                                                                                                                    \n", + "

                                                                                                                    \n", + " במשחק הפוקימון \"פוקימון אדום\" אפשר לבחור בתור הפוקימון ההתחלתי את בלבזאור, את סקווירטל או את צ'רמנדר.
                                                                                                                    \n", + " על הפוקימון הטוב ביותר לבחירה ניטשים ויכוחים רבים עוד מאז שחרורו של המשחק ב־1996.
                                                                                                                    \n", " כדי לא להיקלע לעין הסערה, נבנה תוכנה שתבחר את הפוקימון עבורנו באופן אקראי.\n", "

                                                                                                                    " ] @@ -175,9 +175,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                    \n", - " התיעוד של המודול random, כולל פונקציה בשם choice, שבאמצעותה נוכל לבחור איבר אקראי מתוך iterable.
                                                                                                                    \n", - " השימוש בתיעוד מומלץ במיוחד בהקשרי מודולים, שכן ההסברים שם בהירים, ופעמים רבות מובאות שם דוגמאות לשימוש בפונקציות של המודול.
                                                                                                                    \n", + "

                                                                                                                    \n", + "התיעוד של המודול random, כולל פונקציה בשם choice, שבאמצעותה נוכל לבחור איבר אקראי מתוך iterable.
                                                                                                                    \n", + " השימוש בתיעוד מומלץ במיוחד בהקשרי מודולים, שכן ההסברים שם בהירים, ופעמים רבות מובאות שם דוגמאות לשימוש בפונקציות של המודול.
                                                                                                                    \n", " נייבא את random ואז נשתמש ב־choice:\n", "

                                                                                                                    " ] @@ -199,16 +199,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                    \n", - "
                                                                                                                    \n", - " \"אזהרה!\" \n", - "
                                                                                                                    \n", - "
                                                                                                                    \n", - "

                                                                                                                    \n", - " לא היינו יכולים להשתמש ב־random.choice לולא היינו מייבאים את random.
                                                                                                                    \n", + "

                                                                                                                    \n", + "
                                                                                                                    \n", + "\"אזהרה!\"\n", + "
                                                                                                                    \n", + "
                                                                                                                    \n", + "

                                                                                                                    \n", + " לא היינו יכולים להשתמש ב־random.choice לולא היינו מייבאים את random.
                                                                                                                    \n", " מרגע שייבאנו את המודול – נוכל להשתמש בו לאורך כל הקוד.\n", "

                                                                                                                    \n", - "
                                                                                                                    \n", + "
                                                                                                                    \n", "
                                                                                                                    " ] }, @@ -216,23 +216,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                    \n", - "
                                                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                                                    \n", - "
                                                                                                                    \n", - "

                                                                                                                    \n", - " השתמשו בפונקציה הנמצאת במודול random כדי לדמות הטלת קובייה בעלת 20 פאות (D20).
                                                                                                                    \n", - " הגרילו מספר בין 1 ל־20, הפעם בעזרת פונקציה שהיא לא choice.
                                                                                                                    \n", + "

                                                                                                                    \n", + "
                                                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                                                    \n", + "
                                                                                                                    \n", + "

                                                                                                                    \n", + " השתמשו בפונקציה הנמצאת במודול random כדי לדמות הטלת קובייה בעלת 20 פאות (D20).
                                                                                                                    \n", + " הגרילו מספר בין 1 ל־20, הפעם בעזרת פונקציה שהיא לא choice.
                                                                                                                    \n", " השתמשו במקורות המידע שצוינו כדי למצוא את הפונקציה המתאימה למשימה.\n", "

                                                                                                                    \n", - "
                                                                                                                    \n", - "
                                                                                                                    \n", - "

                                                                                                                    \n", - " חשוב!
                                                                                                                    \n", + "

                                                                                                                    \n", + "
                                                                                                                    \n", + "

                                                                                                                    \n", + "חשוב!
                                                                                                                    \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                    \n", - "
                                                                                                                    \n", + "
                                                                                                                    \n", "
                                                                                                                    " ] }, @@ -240,14 +240,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### יתרונות" + "### יתרונות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                    \n", + "

                                                                                                                    \n", " אלו, בין היתר, היתרונות של שימוש במודולים הקיימים בפייתון:\n", "

                                                                                                                    " ] @@ -256,18 +256,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                      \n", - "
                                                                                                                    1. \n", - " פישוט: מודול לרוב יפתור לנו בעיה אחת, קטנה ומוגדרת היטב.\n", + "
                                                                                                                        \n", + "
                                                                                                                      1. \n", + "פישוט: מודול לרוב יפתור לנו בעיה אחת, קטנה ומוגדרת היטב.\n", "
                                                                                                                      2. \n", - "
                                                                                                                      3. \n", - " הפרדה: המודול מופרד מהקוד שלנו, ישאיר את הקוד שלנו נקי ויעזור לנו להתמקד בבעיה שאנחנו מעוניינים לפתור. \n", + "
                                                                                                                      4. \n", + "הפרדה: המודול מופרד מהקוד שלנו, ישאיר את הקוד שלנו נקי ויעזור לנו להתמקד בבעיה שאנחנו מעוניינים לפתור. \n", "
                                                                                                                      5. \n", - "
                                                                                                                      6. \n", - " מִחזוּר: מודול מאפשר לנו להשתמש בקוד שכתבנו בפרויקטים רבים, מבלי לכתוב את הקוד מחדש בכל פרויקט. \n", + "
                                                                                                                      7. \n", + "מִחזוּר: מודול מאפשר לנו להשתמש בקוד שכתבנו בפרויקטים רבים, מבלי לכתוב את הקוד מחדש בכל פרויקט. \n", "
                                                                                                                      8. \n", - "
                                                                                                                      9. \n", - " רמת גימור: המודולים הרשמיים של פייתון מתוחזקים ברמה גבוהה, יש בהם מעט באגים והם מכסים מקרי קצה רבים. \n", + "
                                                                                                                      10. \n", + "רמת גימור: המודולים הרשמיים של פייתון מתוחזקים ברמה גבוהה, יש בהם מעט באגים והם מכסים מקרי קצה רבים. \n", "
                                                                                                                      11. \n", "
                                                                                                                      " ] @@ -276,8 +276,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                      \n", - " רוב התוכנות שבהן אתם משתמשים נעזרות במספר לא מועט של מודולים.
                                                                                                                      \n", + "

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

                                                                                                                      " ] @@ -286,14 +286,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: יצירת סיסמה" + "### תרגיל ביניים: יצירת סיסמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                      \n", + "

                                                                                                                      \n", " איש דג החרב מגדיר \"מחולל סיסמאות חזקות\" כך:\n", "

                                                                                                                      " ] @@ -302,10 +302,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                        \n", - "
                                                                                                                      1. בקריאה לפונקציית המחולל, המחולל יחזיר סיסמה חזקה.
                                                                                                                      2. \n", - "
                                                                                                                      3. אורכה של סיסמה חזקה הוא בין 12 ל־20 תווים.
                                                                                                                      4. \n", - "
                                                                                                                      5. לפחות בחלק מהסיסמאות שמייצר המחולל יהיו גם אותיות גדולות, גם אותיות קטנות וגם מספרים.
                                                                                                                      6. \n", + "
                                                                                                                          \n", + "
                                                                                                                        1. בקריאה לפונקציית המחולל, המחולל יחזיר סיסמה חזקה.
                                                                                                                        2. \n", + "
                                                                                                                        3. אורכה של סיסמה חזקה הוא בין 12 ל־20 תווים.
                                                                                                                        4. \n", + "
                                                                                                                        5. לפחות בחלק מהסיסמאות שמייצר המחולל יהיו גם אותיות גדולות, גם אותיות קטנות וגם מספרים.
                                                                                                                        6. \n", "
                                                                                                                        " ] }, @@ -313,7 +313,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                        \n", + "

                                                                                                                        \n", " כתבו מחולל סיסמאות חזקות.\n", "

                                                                                                                        " ] @@ -322,16 +322,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                        \n", - "
                                                                                                                        \n", - " \"אזהרה!\" \n", - "
                                                                                                                        \n", - "
                                                                                                                        \n", - "

                                                                                                                        \n", - " על אף שזהו תרגיל נחמד, לעולם לא נשתמש ב־random לצורכי אבטחת מידע.
                                                                                                                        \n", + "

                                                                                                                        \n", + "
                                                                                                                        \n", + "\"אזהרה!\"\n", + "
                                                                                                                        \n", + "
                                                                                                                        \n", + "

                                                                                                                        \n", + " על אף שזהו תרגיל נחמד, לעולם לא נשתמש ב־random לצורכי אבטחת מידע.
                                                                                                                        \n", " להרחבה, קראו על יתרונותיו של המודול secrets.\n", "

                                                                                                                        \n", - "
                                                                                                                        \n", + "
                                                                                                                        \n", "
                                                                                                                        " ] }, @@ -339,15 +339,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### יבוא מתוך מודול" + "### יבוא מתוך מודול" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                        \n", - " עצרת של המספר $n$ (המסומנת כ־$n!$) היא מכפלת כל המספרים השלמים החיוביים עד $n$, כולל.
                                                                                                                        \n", + "

                                                                                                                        \n", + " עצרת של המספר $n$ (המסומנת כ־$n!$) היא מכפלת כל המספרים השלמים החיוביים עד $n$, כולל.
                                                                                                                        \n", " נחשב את העצרת של 6 באמצעות המודול math:\n", "

                                                                                                                        " ] @@ -366,9 +366,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                        \n", - " במקרה שהצגנו, אין לנו באמת צורך בכל הפונקציות הנמצאות במודול math, אלא רק בפונקציה factorial.
                                                                                                                        \n", - " תעלול נחמד שאפשר לעשות הוא לייבא רק את factorial באמצעות מילת המפתח from:
                                                                                                                        \n", + "

                                                                                                                        \n", + " במקרה שהצגנו, אין לנו באמת צורך בכל הפונקציות הנמצאות במודול math, אלא רק בפונקציה factorial.
                                                                                                                        \n", + " תעלול נחמד שאפשר לעשות הוא לייבא רק את factorial באמצעות מילת המפתח from:
                                                                                                                        \n", "

                                                                                                                        " ] }, @@ -386,8 +386,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                        \n", - " כדאי לשים לב שלאחר שייבאנו בעזרת from נשתמש ישירות ב־factorial, מבלי להזכיר את השייכות שלה למודול math.
                                                                                                                        \n", + "

                                                                                                                        \n", + " כדאי לשים לב שלאחר שייבאנו בעזרת from נשתמש ישירות ב־factorial, מבלי להזכיר את השייכות שלה למודול math.
                                                                                                                        \n", " אפשר גם לייבא יותר משם אחד מאותו מודול, במכה אחת:\n", "

                                                                                                                        " ] @@ -406,9 +406,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                        \n", - " באופן כללי, העדיפו לייבא את המודול כולו ולא חלקים מתוכו.
                                                                                                                        \n", - " זה יעזור לכם להימנע מיצירת מקרים מבלבלים כמו זה:
                                                                                                                        \n", + "

                                                                                                                        \n", + " באופן כללי, העדיפו לייבא את המודול כולו ולא חלקים מתוכו.
                                                                                                                        \n", + " זה יעזור לכם להימנע מיצירת מקרים מבלבלים כמו זה:
                                                                                                                        \n", "

                                                                                                                        " ] }, @@ -428,7 +428,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                        \n", + "

                                                                                                                        \n", " אם ממשיכים בכיוון, פייתון מאפשרת לנו לעשות את הדבר המזעזע הבא:\n", "

                                                                                                                        " ] @@ -446,8 +446,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                        \n", - " יבוא בעזרת כוכבית יגרום לכך שכל מה שמוגדר במודול \"יישפך\" לתוך התוכנית שלנו.
                                                                                                                        \n", + "

                                                                                                                        \n", + " יבוא בעזרת כוכבית יגרום לכך שכל מה שמוגדר במודול \"יישפך\" לתוך התוכנית שלנו.
                                                                                                                        \n", " זה יאפשר לנו להשתמש בכל התוכן של math בלי להזכיר את שם המודול:\n", "

                                                                                                                        " ] @@ -468,8 +468,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                        \n", - " פרקטיקה זו נחשבת מאוד לא מנומסת, ואתם מתבקשים לא להשתמש בה, אלא אם כן אלו ההוראות הכתובות בתיעוד של המודול.
                                                                                                                        \n", + "

                                                                                                                        \n", + " פרקטיקה זו נחשבת מאוד לא מנומסת, ואתם מתבקשים לא להשתמש בה, אלא אם כן אלו ההוראות הכתובות בתיעוד של המודול.
                                                                                                                        \n", " ישנן לא מעט סיבות הגיוניות מאחורי איסור זה:\n", "

                                                                                                                        " ] @@ -478,10 +478,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                          \n", - "
                                                                                                                        • זה מקשה על מתכנת שקורא את הקוד להבין איפה הוגדרו ceil, floor, e ו־pow.
                                                                                                                        • \n", - "
                                                                                                                        • אנחנו \"מזהמים\" את הסביבה שלנו בהגדרות רבות שלעולם לא נשתמש בהן.
                                                                                                                        • \n", - "
                                                                                                                        • חלק מהכלים שבהם תשתמשו בעתיד לא ידעו לזהות את השמות הללו, כיוון שלא ייבאתם אותם מפורשות.
                                                                                                                        • \n", + "
                                                                                                                            \n", + "
                                                                                                                          • זה מקשה על מתכנת שקורא את הקוד להבין איפה הוגדרו ceil, floor, e ו־pow.
                                                                                                                          • \n", + "
                                                                                                                          • אנחנו \"מזהמים\" את הסביבה שלנו בהגדרות רבות שלעולם לא נשתמש בהן.
                                                                                                                          • \n", + "
                                                                                                                          • חלק מהכלים שבהם תשתמשו בעתיד לא ידעו לזהות את השמות הללו, כיוון שלא ייבאתם אותם מפורשות.
                                                                                                                          • \n", "
                                                                                                                          " ] }, @@ -489,18 +489,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שינוי שם ביבוא" + "### שינוי שם ביבוא" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                          \n", - " המודול turtle הוא דרך פופולרית ללמד ילדים תכנות באמצעים גרפיים.
                                                                                                                          \n", - " תכנות ב־turtle הוא מעין משחק: ישנו צב שהולך במרחב, ומשאיר צבע בכל מקום שאליו הוא מגיע.
                                                                                                                          \n", - " אפשר להורות לצב בכמה מעלות להסתובב לכל כיוון, ולאיזה מרחק ללכת בכיוון שאליו הוא מופנה.
                                                                                                                          \n", - " כך, בסוף מסלול הטיול של הצב, מתקבל ציור מלא חן.
                                                                                                                          \n", + "

                                                                                                                          \n", + " המודול turtle הוא דרך פופולרית ללמד ילדים תכנות באמצעים גרפיים.
                                                                                                                          \n", + " תכנות ב־turtle הוא מעין משחק: ישנו צב שהולך במרחב, ומשאיר צבע בכל מקום שאליו הוא מגיע.
                                                                                                                          \n", + " אפשר להורות לצב בכמה מעלות להסתובב לכל כיוון, ולאיזה מרחק ללכת בכיוון שאליו הוא מופנה.
                                                                                                                          \n", + " כך, בסוף מסלול הטיול של הצב, מתקבל ציור מלא חן.
                                                                                                                          \n", " הרעיון נוצר כחלק משפת התכנות Logo בשנת 1967.\n", "

                                                                                                                          " ] @@ -509,8 +509,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                          \n", - " נראה דוגמה לתוצר של ריצת תוכנית שכזו, שבה אנחנו משרטטים 100 ריבועים בהיסט של מעלה אחת בכל פעם.
                                                                                                                          \n", + "

                                                                                                                          \n", + " נראה דוגמה לתוצר של ריצת תוכנית שכזו, שבה אנחנו משרטטים 100 ריבועים בהיסט של מעלה אחת בכל פעם.
                                                                                                                          \n", " אנחנו ממליצים לשחק עם המודול קצת (זה כיף!) ולראות אם אתם מצליחים לצייר כוכב, לדוגמה :)\n", "

                                                                                                                          " ] @@ -538,16 +538,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                          \n", - "
                                                                                                                          \n", - " \"אזהרה!\" \n", - "
                                                                                                                          \n", - "
                                                                                                                          \n", - "

                                                                                                                          \n", - " הרצת קוד של turtle תפתח לכם חלון חדש בו יצויר פלט התוכנית.
                                                                                                                          \n", + "

                                                                                                                          \n", + "
                                                                                                                          \n", + "\"אזהרה!\"\n", + "
                                                                                                                          \n", + "
                                                                                                                          \n", + "

                                                                                                                          \n", + " הרצת קוד של turtle תפתח לכם חלון חדש בו יצויר פלט התוכנית.
                                                                                                                          \n", " כדי להמשיך להריץ את התאים במחברת, סגרו את החלון.\n", "

                                                                                                                          \n", - "
                                                                                                                          \n", + "
                                                                                                                          \n", "
                                                                                                                          " ] }, @@ -555,8 +555,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                          \n", - " כדי לשנות את השם שבו אנחנו מתייחסים למודול, ניעזר במילת המפתח as.
                                                                                                                          \n", + "

                                                                                                                          \n", + " כדי לשנות את השם שבו אנחנו מתייחסים למודול, ניעזר במילת המפתח as.
                                                                                                                          \n", " לדוגמה:\n", "

                                                                                                                          " ] @@ -584,8 +584,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                          \n", - " כך אפשר לקצר את שם המודול שאנחנו מייבאים, ולהימנע מסרבול מיותר.
                                                                                                                          \n", + "

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

                                                                                                                          " ] @@ -594,13 +594,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                          \n", + "

                                                                                                                          \n", " ישנם שני מקרים יוצאי דופן, שבהם השימוש ב־as נחשב רצוי:\n", "

                                                                                                                          \n", - "\n", - "
                                                                                                                            \n", - "
                                                                                                                          1. כאשר מבקשים מאיתנו להשתמש ב־as במסמכי התיעוד של המודול.
                                                                                                                          2. \n", - "
                                                                                                                          3. כאשר אנחנו רוצים להתנסות בדברים ולחסוך זמן, נקצר את השמות של המודולים, הפונקציות או הקבועים שאותם אנחנו מייבאים.
                                                                                                                          4. \n", + "
                                                                                                                              \n", + "
                                                                                                                            1. כאשר מבקשים מאיתנו להשתמש ב־as במסמכי התיעוד של המודול.
                                                                                                                            2. \n", + "
                                                                                                                            3. כאשר אנחנו רוצים להתנסות בדברים ולחסוך זמן, נקצר את השמות של המודולים, הפונקציות או הקבועים שאותם אנחנו מייבאים.
                                                                                                                            4. \n", "
                                                                                                                            " ] }, @@ -608,16 +607,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### נימוסים והליכות" + "### נימוסים והליכות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                            \n", - " לשימוש במודולים יש כללי סגנון שמוסכמים על רוב המתכנתים.
                                                                                                                            \n", - " הם מופיעים במסמך בשם PEP8, שמטרתו להגדיר איך נראה קוד פייתון המסוגנן כראוי.
                                                                                                                            \n", + "

                                                                                                                            \n", + " לשימוש במודולים יש כללי סגנון שמוסכמים על רוב המתכנתים.
                                                                                                                            \n", + " הם מופיעים במסמך בשם PEP8, שמטרתו להגדיר איך נראה קוד פייתון המסוגנן כראוי.
                                                                                                                            \n", " הנה כמה כללים שראוי שתעקבו אחריהם:\n", "

                                                                                                                            " ] @@ -626,12 +625,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                              \n", - "
                                                                                                                            • יבוא המודולים תמיד יתבצע בראש הקוד, לפני כל דבר אחר.
                                                                                                                            • \n", - "
                                                                                                                            • כאשר מייבאים יותר ממודול אחד, סדר היבוא צריך להיות מילוני – לפי שם המודול שיובא.
                                                                                                                            • \n", - "
                                                                                                                            • טכנית, אפשר לייבא יותר ממודול אחד בשורה, אם נפריד את שמות המודולים בפסיק. מעשית זה לא מנומס.
                                                                                                                            • \n", - "
                                                                                                                            • כאשר משתמשים ב־from ליבוא של יותר משם אחד – השמות צריכים להיות מסודרים בסדר מילוני.
                                                                                                                            • \n", - "
                                                                                                                            • יש להימנע משימוש ביבוא בעזרת כוכבית.
                                                                                                                            • \n", + "
                                                                                                                                \n", + "
                                                                                                                              • יבוא המודולים תמיד יתבצע בראש הקוד, לפני כל דבר אחר.
                                                                                                                              • \n", + "
                                                                                                                              • כאשר מייבאים יותר ממודול אחד, סדר היבוא צריך להיות מילוני – לפי שם המודול שיובא.
                                                                                                                              • \n", + "
                                                                                                                              • טכנית, אפשר לייבא יותר ממודול אחד בשורה, אם נפריד את שמות המודולים בפסיק. מעשית זה לא מנומס.
                                                                                                                              • \n", + "
                                                                                                                              • כאשר משתמשים ב־from ליבוא של יותר משם אחד – השמות צריכים להיות מסודרים בסדר מילוני.
                                                                                                                              • \n", + "
                                                                                                                              • יש להימנע משימוש ביבוא בעזרת כוכבית.
                                                                                                                              • \n", "
                                                                                                                              " ] }, @@ -639,14 +638,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### דוגמאות נוספות" + "### דוגמאות נוספות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                              \n", + "

                                                                                                                              \n", " מה התאריך היום?\n", "

                                                                                                                              " ] @@ -666,7 +665,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                              \n", + "

                                                                                                                              \n", " נשתמש במודול calendar כדי להדפיס את לוח השנה של החודש הנוכחי:\n", "

                                                                                                                              " ] @@ -688,18 +687,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## סיכום" + "## סיכום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                \n", - "
                                                                                                                              • מודולים הם חלקי תוכנה שמטרתם לפתור בעיה מעולם תוכן מסוים.
                                                                                                                              • \n", - "
                                                                                                                              • אפשר לייבא מודולים ולהשתמש במה שהם מציעים כדי להשיג את מטרותינו במהירות ובקלות.
                                                                                                                              • \n", - "
                                                                                                                              • המודולים שמגיעים עם פייתון מתוחזקים היטב, ויחסכו לנו באגים והתעסקות עם מקרי קצה.
                                                                                                                              • \n", - "
                                                                                                                              • לפני שניגש לפתור בעיה מורכבת, ננסה למצוא בתיעוד של פייתון פתרון בדמות מודול קיים.
                                                                                                                              • \n", + "
                                                                                                                                  \n", + "
                                                                                                                                • מודולים הם חלקי תוכנה שמטרתם לפתור בעיה מעולם תוכן מסוים.
                                                                                                                                • \n", + "
                                                                                                                                • אפשר לייבא מודולים ולהשתמש במה שהם מציעים כדי להשיג את מטרותינו במהירות ובקלות.
                                                                                                                                • \n", + "
                                                                                                                                • המודולים שמגיעים עם פייתון מתוחזקים היטב, ויחסכו לנו באגים והתעסקות עם מקרי קצה.
                                                                                                                                • \n", + "
                                                                                                                                • לפני שניגש לפתור בעיה מורכבת, ננסה למצוא בתיעוד של פייתון פתרון בדמות מודול קיים.
                                                                                                                                • \n", "
                                                                                                                                " ] }, @@ -707,15 +706,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                \n", - "
                                                                                                                                מודול
                                                                                                                                יחידה עצמאית של קוד המיועדת לטיפול במטרה מסוימת, ושקוד חיצוני יכול להשתמש בה.
                                                                                                                                בשפות תכנות אחרות מוכר גם כספרייה.
                                                                                                                                \n", + "
                                                                                                                                \n", + "
                                                                                                                                מודול
                                                                                                                                יחידה עצמאית של קוד המיועדת לטיפול במטרה מסוימת, ושקוד חיצוני יכול להשתמש בה.
                                                                                                                                בשפות תכנות אחרות מוכר גם כספרייה.
                                                                                                                                \n", "
                                                                                                                                יבוא
                                                                                                                                הצהרה בעזרת import על כך שאנחנו הולכים להשתמש במודול מסוים בקוד שלנו.
                                                                                                                                \n", "
                                                                                                                                PEP8
                                                                                                                                מסמך תקינה המתאר לפרטים מהי הדרך הנכונה לסגנן קוד פייתון.
                                                                                                                                \n", "
                                                                                                                                " @@ -725,15 +724,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                \n", - " בתרגילים הבאים השתמשו באינטרנט כדי למצוא מודולים ופונקציות שיסייעו לכם לפתור את התרגיל.
                                                                                                                                \n", + "

                                                                                                                                \n", + " בתרגילים הבאים השתמשו באינטרנט כדי למצוא מודולים ופונקציות שיסייעו לכם לפתור את התרגיל.
                                                                                                                                \n", " נסו להימנע מחיפוש ומקריאה של פתרונות לתרגיל המסוים המופיע במחברת (כמו חיפושים הכוללים \"חפיסת קלפים\").\n", "

                                                                                                                                " ] @@ -742,15 +741,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### זו הדרך" + "### זו הדרך" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                \n", - " כתבו פונקציה שמקבלת נתיב לתיקייה, ומחזירה את רשימת כל הקבצים שמתחילים ברצף האותיות \"deep\" באותה תיקייה.
                                                                                                                                \n", + "

                                                                                                                                \n", + " כתבו פונקציה שמקבלת נתיב לתיקייה, ומחזירה את רשימת כל הקבצים שמתחילים ברצף האותיות \"deep\" באותה תיקייה.
                                                                                                                                \n", " בדקו שהפעלת הפונקציה על התיקייה images מחזירה שני קבצים.\n", "

                                                                                                                                " ] @@ -759,14 +758,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### משחק קלפים משונה" + "### משחק קלפים משונה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                \n", + "

                                                                                                                                \n", " בחפיסת קלפים רגילה, שבה 52 קלפים, יש לכל קלף שתי תכונות:\n", "

                                                                                                                                " ] @@ -775,12 +774,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                  \n", - "
                                                                                                                                1. \n", - " ערך: מספר שבין 1 ל־13.\n", + "
                                                                                                                                    \n", + "
                                                                                                                                  1. \n", + "ערך: מספר שבין 1 ל־13.\n", "
                                                                                                                                  2. \n", - "
                                                                                                                                  3. \n", - " צורה: תלתן (Club), יהלום (Diamond), לב (Heart) או עלה (Spade). \n", + "
                                                                                                                                  4. \n", + "צורה: תלתן (Club), יהלום (Diamond), לב (Heart) או עלה (Spade). \n", "
                                                                                                                                  5. \n", "
                                                                                                                                  " ] @@ -789,7 +788,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                  \n", + "

                                                                                                                                  \n", " כל צירוף של ערך וצורה מופיע בחפיסה בדיוק פעם אחת.\n", "

                                                                                                                                  " ] @@ -798,11 +797,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                    \n", - "
                                                                                                                                  1. צרו חפיסת קלפים מלאה.
                                                                                                                                  2. \n", - "
                                                                                                                                  3. טרפו את הקלפים.
                                                                                                                                  4. \n", - "
                                                                                                                                  5. חלקו אותם בין 4 שחקנים.
                                                                                                                                  6. \n", - "
                                                                                                                                  7. הדפיסו לאיזה שחקן סכום הקלפים הגבוה ביותר.
                                                                                                                                  8. \n", + "
                                                                                                                                      \n", + "
                                                                                                                                    1. צרו חפיסת קלפים מלאה.
                                                                                                                                    2. \n", + "
                                                                                                                                    3. טרפו את הקלפים.
                                                                                                                                    4. \n", + "
                                                                                                                                    5. חלקו אותם בין 4 שחקנים.
                                                                                                                                    6. \n", + "
                                                                                                                                    7. הדפיסו לאיזה שחקן סכום הקלפים הגבוה ביותר.
                                                                                                                                    8. \n", "
                                                                                                                                    " ] }, @@ -810,15 +809,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### It's the final?" + "### It's the final?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                    \n", - " כתבו פונקציה שמקבלת תאריך עתידי בתצורה YYYY-MM-DD, ומדפיסה את מספר הימים שנשארו עד שנגיע לתאריך המיוחל.
                                                                                                                                    \n", + "

                                                                                                                                    \n", + " כתבו פונקציה שמקבלת תאריך עתידי בתצורה YYYY-MM-DD, ומדפיסה את מספר הימים שנשארו עד שנגיע לתאריך המיוחל.
                                                                                                                                    \n", " לדוגמה, אם התאריך היום הוא 2020-05-04 וקיבלנו כקלט 2020-05-25, הפונקציה תחזיר 21.\n", "

                                                                                                                                    " ] @@ -827,18 +826,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אין לי וִנִגְרֶט" + "### אין לי וִנִגְרֶט" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                    \n", - " כתבו תוכנה שמקבלת כקלט מהמשתמש שני תאריכים בתצורה: YYYY-MM-DD.
                                                                                                                                    \n", - " התוכנה תגריל תאריך חדש שנמצא בין שני התאריכים שהמשתמש הזין כקלט.
                                                                                                                                    \n", - " לדוגמה, עבור הקלטים 1912-06-23 ו־1954-06-07, פלט אפשרי הוא 1939-09-03.
                                                                                                                                    \n", - " כיוון שאני הולך למכולת רק בימי שני ואני צרכן כבד של רוטב ויניגרט, אם התאריך נופל על יום שני, הדפיסו: \"אין לי ויניגרט!\"
                                                                                                                                    \n", + "

                                                                                                                                    \n", + " כתבו תוכנה שמקבלת כקלט מהמשתמש שני תאריכים בתצורה: YYYY-MM-DD.
                                                                                                                                    \n", + " התוכנה תגריל תאריך חדש שנמצא בין שני התאריכים שהמשתמש הזין כקלט.
                                                                                                                                    \n", + " לדוגמה, עבור הקלטים 1912-06-23 ו־1954-06-07, פלט אפשרי הוא 1939-09-03.
                                                                                                                                    \n", + " כיוון שאני הולך למכולת רק בימי שני ואני צרכן כבד של רוטב ויניגרט, אם התאריך נופל על יום שני, הדפיסו: \"אין לי ויניגרט!\"
                                                                                                                                    \n", " רמז: קראו על EPOCH.\n", "

                                                                                                                                    " ] diff --git a/week5/2_Functions_Part_2.ipynb b/week5/2_Functions_Part_2.ipynb index f925ed1..1abe234 100644 --- a/week5/2_Functions_Part_2.ipynb +++ b/week5/2_Functions_Part_2.ipynb @@ -4,28 +4,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# פונקציות – חלק 2" + "# פונקציות – חלק 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                    \n", + "

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

                                                                                                                                    " ] @@ -34,10 +34,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                      \n", - "
                                                                                                                                    • פונקציות הן כלי שימושי שמאפשר לנו לחלק את הקוד לתתי־משימות מוגדרות, ולשמור עליו מסודר וקל לתחזוק.
                                                                                                                                    • \n", - "
                                                                                                                                    • לפונקציה יש \"קלט\" שהוא הפרמטרים שלה, ו\"פלט\" שהוא ערך ההחזרה שלה.
                                                                                                                                    • \n", - "
                                                                                                                                    • אפשר לקרוא לפונקציה בציון שמה, סוגריים, ורשימת הארגומנטים שרוצים להעביר לפרמטרים שלה.
                                                                                                                                    • \n", + "
                                                                                                                                        \n", + "
                                                                                                                                      • פונקציות הן כלי שימושי שמאפשר לנו לחלק את הקוד לתתי־משימות מוגדרות, ולשמור עליו מסודר וקל לתחזוק.
                                                                                                                                      • \n", + "
                                                                                                                                      • לפונקציה יש \"קלט\" שהוא הפרמטרים שלה, ו\"פלט\" שהוא ערך ההחזרה שלה.
                                                                                                                                      • \n", + "
                                                                                                                                      • אפשר לקרוא לפונקציה בציון שמה, סוגריים, ורשימת הארגומנטים שרוצים להעביר לפרמטרים שלה.
                                                                                                                                      • \n", "
                                                                                                                                      " ] }, @@ -45,7 +45,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", + "

                                                                                                                                      \n", " במחברת זו נרכוש כלים נוספים שיאפשרו לנו גמישות רבה יותר בהגדרת פונקציות ובשימוש בהן.\n", "

                                                                                                                                      " ] @@ -54,23 +54,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## שימוש מתקדם בפונקציות" + "## שימוש מתקדם בפונקציות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### העברת ארגומנטים בעזרת שם" + "### העברת ארגומנטים בעזרת שם" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " כאשר אנחנו קוראים לפונקציה, יישלחו לפי הסדר הארגומנטים שנעביר אל הפרמטרים שמוגדרים בכותרת הפונקציה.
                                                                                                                                      \n", - " מצב כזה נקרא positional arguments (\"ארגומנטים לפי מיקום\").
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " כאשר אנחנו קוראים לפונקציה, יישלחו לפי הסדר הארגומנטים שנעביר אל הפרמטרים שמוגדרים בכותרת הפונקציה.
                                                                                                                                      \n", + " מצב כזה נקרא positional arguments (\"ארגומנטים לפי מיקום\").
                                                                                                                                      \n", " נסתכל על פונקציה שמקבלת טווח (סוף והתחלה, בסדר הזה) ומחזירה רשימה של כל המספרים השלמים בטווח:\n", "

                                                                                                                                      " ] @@ -97,8 +97,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " לפעמים נרצה לשנות את סדר הארגומנטים שאנחנו שולחים לפונקציה.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " לפעמים נרצה לשנות את סדר הארגומנטים שאנחנו שולחים לפונקציה.
                                                                                                                                      \n", " נעשה זאת בקריאה לפונקציה, על־ידי העברת שם הארגומנט ולאחר מכן העברת הערך שאנחנו רוצים להעביר אליו: \n", "

                                                                                                                                      " ] @@ -116,11 +116,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " בשורה הזו הפכנו את סדר הארגומנטים.
                                                                                                                                      \n", - " כיוון שבקריאה כתבנו את שמות הפרמטרים התואמים לכותרת הפונקציה, הערכים נשלחו למקום הנכון.
                                                                                                                                      \n", - " השיטה הזו נקראת keyword arguments (\"ארגומנטים לפי שם\"), ובה אנחנו מעבירים את הארגומנטים שלנו לפי שמות הפרמטרים בכותרת הפונקציה.
                                                                                                                                      \n", - " אנחנו משתמשים בשיטה הזו אפילו כשאנחנו לא רוצים לשנות את סדר הארגומנטים, אלא רק לעשות קצת סדר בקוד.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " בשורה הזו הפכנו את סדר הארגומנטים.
                                                                                                                                      \n", + " כיוון שבקריאה כתבנו את שמות הפרמטרים התואמים לכותרת הפונקציה, הערכים נשלחו למקום הנכון.
                                                                                                                                      \n", + " השיטה הזו נקראת keyword arguments (\"ארגומנטים לפי שם\"), ובה אנחנו מעבירים את הארגומנטים שלנו לפי שמות הפרמטרים בכותרת הפונקציה.
                                                                                                                                      \n", + " אנחנו משתמשים בשיטה הזו אפילו כשאנחנו לא רוצים לשנות את סדר הארגומנטים, אלא רק לעשות קצת סדר בקוד.
                                                                                                                                      \n", " נבחן, לדוגמה, את המקרה של הפונקציה random.randrange – נעים יותר לראות קריאה לפונקציה עם שמות הפרמטרים:\n", "

                                                                                                                                      " ] @@ -156,16 +156,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                      \n", - "
                                                                                                                                      \n", - " \"אזהרה!\" \n", - "
                                                                                                                                      \n", - "
                                                                                                                                      \n", - "

                                                                                                                                      \n", - " למרות השימוש בסימן =, לא מדובר פה בהשמה במובן הקלאסי שלה.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + "
                                                                                                                                      \n", + "\"אזהרה!\"\n", + "
                                                                                                                                      \n", + "
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " למרות השימוש בסימן =, לא מדובר פה בהשמה במובן הקלאסי שלה.
                                                                                                                                      \n", " זוהי צורת כתיבה מיוחדת בקריאה לפונקציות שהמטרה שלה היא לסמן \"העבר לפרמטר ששמו כך־וכך את הערך כך־וכך\".\n", "

                                                                                                                                      \n", - "
                                                                                                                                      \n", + "
                                                                                                                                      \n", "
                                                                                                                                      " ] }, @@ -173,15 +173,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פרמטרים עם ערכי ברירת מחדל" + "### פרמטרים עם ערכי ברירת מחדל" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " נזכר בפונקציה get של מילון, שמאפשרת לקבל ממנו ערך לפי מפתח מסוים.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " נזכר בפונקציה get של מילון, שמאפשרת לקבל ממנו ערך לפי מפתח מסוים.
                                                                                                                                      \n", " אם המפתח שאנחנו מחפשים לא קיים במילון, הפונקציה מחזירה None:\n", "

                                                                                                                                      " ] @@ -209,8 +209,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " נממש את הפונקציה get בעצמנו. לשם הנוחות, ייראה השימוש שונה במקצת:
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " נממש את הפונקציה get בעצמנו. לשם הנוחות, ייראה השימוש שונה במקצת:
                                                                                                                                      \n", "

                                                                                                                                      " ] }, @@ -236,8 +236,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " המימוש שלנו לא מושלם. הפעולה המקורית, get על מילון, פועלת בצורה מתוחכמת יותר.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " המימוש שלנו לא מושלם. הפעולה המקורית, get על מילון, פועלת בצורה מתוחכמת יותר.
                                                                                                                                      \n", " אפשר להעביר לה פרמטר נוסף, שקובע מה יחזור אם המפתח שהעברנו בפרמטר הראשון לא נמצא במילון:\n", "

                                                                                                                                      " ] @@ -258,12 +258,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " שימו לב להתנהגות המיוחדת של הפעולה get!
                                                                                                                                      \n", - " אם המפתח שהעברנו בארגומנט הראשון לא קיים במילון, היא מחזירה את הערך שכתוב בארגומנט השני.
                                                                                                                                      \n", - " אפשר להעביר לה ארגומנט אחד, ואפשר להעביר לה שני ארגומנטים. היא מתפקדת כראוי בשני המצבים.
                                                                                                                                      \n", - " זו לא פעם ראשונה שאנחנו רואים פונקציות כאלו. למעשה, בשבוע שעבר למדנו על פעולות builtins רבות שמתנהגות כך:
                                                                                                                                      \n", - " range, enumerate ו־round, כולן יודעות לקבל מספר משתנה של ארגומנטים.\n", + "

                                                                                                                                      \n", + " שימו לב להתנהגות המיוחדת של הפעולה get!
                                                                                                                                      \n", + " אם המפתח שהעברנו בארגומנט הראשון לא קיים במילון, היא מחזירה את הערך שכתוב בארגומנט השני.
                                                                                                                                      \n", + " אפשר להעביר לה ארגומנט אחד, ואפשר להעביר לה שני ארגומנטים. היא מתפקדת כראוי בשני המצבים.
                                                                                                                                      \n", + " זו לא פעם ראשונה שאנחנו רואים פונקציות כאלו. למעשה, בשבוע שעבר למדנו על פעולות builtins רבות שמתנהגות כך:
                                                                                                                                      \n", + "range, enumerate ו־round, כולן יודעות לקבל מספר משתנה של ארגומנטים.\n", "

                                                                                                                                      " ] }, @@ -271,10 +271,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " נניח לפעולה get בינתיים. אל דאגה, נחזור אליה בקרוב.
                                                                                                                                      \n", - " בזמן שאנחנו נחים מפעולות על מילונים יום האהבה מתקרב, וחנות הוורדים הקרובה מעוניינת להעלות את מחירי כל מוצריה בשקל אחד.
                                                                                                                                      \n", - " התבקשנו לבנות עבורם פונקציה שמקבלת רשימת מחירים, ומחזירה רשימה שבה כל איבר גדול ב־1 מרשימת המחירים המקורית.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " נניח לפעולה get בינתיים. אל דאגה, נחזור אליה בקרוב.
                                                                                                                                      \n", + " בזמן שאנחנו נחים מפעולות על מילונים יום האהבה מתקרב, וחנות הוורדים הקרובה מעוניינת להעלות את מחירי כל מוצריה בשקל אחד.
                                                                                                                                      \n", + " התבקשנו לבנות עבורם פונקציה שמקבלת רשימת מחירים, ומחזירה רשימה שבה כל איבר גדול ב־1 מרשימת המחירים המקורית.
                                                                                                                                      \n", " ניגש לעבודה:\n", "

                                                                                                                                      " ] @@ -300,11 +300,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " בתוך זמן קצר הפונקציה שבנינו הופכת ללהיט היסטרי בחנויות הוורדים.
                                                                                                                                      \n", - " מנהל קרטל הוורדים הבין־לאומי ג'וזפה ורדי יוצר איתנו קשר, ומבקש לשכלל התוכנה כך שיוכל להעלות את מחירי המוצרים כרצונו.
                                                                                                                                      \n", - " כדי לעמוד בדרישה, נבנה פונקציה שמקבלת רשימה, ובנוסף אליה את המחיר שיתווסף לכל איבר ברשימה זו.
                                                                                                                                      \n", - " כך, אם הקורא לפונקציה יעביר כארגומנט השני את הערך 2, כל איבר ברשימה יגדל ב־2.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " בתוך זמן קצר הפונקציה שבנינו הופכת ללהיט היסטרי בחנויות הוורדים.
                                                                                                                                      \n", + " מנהל קרטל הוורדים הבין־לאומי ג'וזפה ורדי יוצר איתנו קשר, ומבקש לשכלל התוכנה כך שיוכל להעלות את מחירי המוצרים כרצונו.
                                                                                                                                      \n", + " כדי לעמוד בדרישה, נבנה פונקציה שמקבלת רשימה, ובנוסף אליה את המחיר שיתווסף לכל איבר ברשימה זו.
                                                                                                                                      \n", + " כך, אם הקורא לפונקציה יעביר כארגומנט השני את הערך 2, כל איבר ברשימה יגדל ב־2.
                                                                                                                                      \n", " נממש בקלילות:\n", "

                                                                                                                                      " ] @@ -331,10 +331,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                      " ] }, @@ -342,7 +342,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", + "

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

                                                                                                                                      " ] @@ -370,9 +370,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " כשאנחנו רוצים להגדיר פרמטר עם ערך ברירת מחדל, נוכל לקבוע את ערך ברירת המחדל שלו בכותרת הפונקציה.
                                                                                                                                      \n", - " אם יועבר ארגומנט שכזה לפונקציה – פייתון תשתמש בערך שהועבר.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " כשאנחנו רוצים להגדיר פרמטר עם ערך ברירת מחדל, נוכל לקבוע את ערך ברירת המחדל שלו בכותרת הפונקציה.
                                                                                                                                      \n", + " אם יועבר ארגומנט שכזה לפונקציה – פייתון תשתמש בערך שהועבר.
                                                                                                                                      \n", " אם לא – יילקח ערך ברירת המחדל שהוגדר בכותרת הפונקציה. \n", "

                                                                                                                                      " ] @@ -381,9 +381,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " במקרה שלנו הגדרנו את הפרמטר increment_by עם ערך ברירת המחדל 1.
                                                                                                                                      \n", - " קריאה לפונקציה עם ארגומנט אחד בלבד (רשימת המחירים) תגדיל את כל המחירים ב־1, שהרי הוא ערך ברירת המחדל.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " במקרה שלנו הגדרנו את הפרמטר increment_by עם ערך ברירת המחדל 1.
                                                                                                                                      \n", + " קריאה לפונקציה עם ארגומנט אחד בלבד (רשימת המחירים) תגדיל את כל המחירים ב־1, שהרי הוא ערך ברירת המחדל.
                                                                                                                                      \n", " קריאה לפונקציה עם שני ארגומנטים (רשימת המחירים, סכום ההעלאה) תגדיל את כל המחירים בסכום ההעלאה שהועבר.\n", "

                                                                                                                                      " ] @@ -392,7 +392,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", + "

                                                                                                                                      \n", " חשוב להבין שקריאה לפונקציה עם ערכים במקום ערכי ברירת המחדל, לא תשנה את ערך ברירת המחדל בקריאות הבאות: \n", "

                                                                                                                                      " ] @@ -411,23 +411,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                      \n", - "
                                                                                                                                      \n", - " \"תרגול\" \n", - "
                                                                                                                                      \n", - "
                                                                                                                                      \n", - "

                                                                                                                                      \n", - " ממשו את פונקציית get המלאה. הפונקציה תקבל מילון, מפתח ו\"ערך לשעת חירום\".
                                                                                                                                      \n", - " החזירו את הערך השייך למפתח שהתקבל. אחרת – החזירו את הערך לשעת החירום שהועבר לפונקציה.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + "
                                                                                                                                      \n", + "\"תרגול\"\n", + "
                                                                                                                                      \n", + "
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " ממשו את פונקציית get המלאה. הפונקציה תקבל מילון, מפתח ו\"ערך לשעת חירום\".
                                                                                                                                      \n", + " החזירו את הערך השייך למפתח שהתקבל. אחרת – החזירו את הערך לשעת החירום שהועבר לפונקציה.
                                                                                                                                      \n", " אם לא הועבר ערך לשעת חירום והמפתח לא נמצא במילון, החזירו None. \n", "

                                                                                                                                      \n", - "
                                                                                                                                      \n", - "
                                                                                                                                      \n", - "

                                                                                                                                      \n", - " חשוב!
                                                                                                                                      \n", + "

                                                                                                                                      \n", + "
                                                                                                                                      \n", + "

                                                                                                                                      \n", + "חשוב!
                                                                                                                                      \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                      \n", - "
                                                                                                                                      \n", + "
                                                                                                                                      \n", "
                                                                                                                                      " ] }, @@ -435,8 +435,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " נדגים את אותו עיקרון עם כמה ערכי ברירת מחדל.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " נדגים את אותו עיקרון עם כמה ערכי ברירת מחדל.
                                                                                                                                      \n", " אם הדרישה הייתה, לדוגמה, להוסיף לפונקציה גם אפשרות להנחה במחירי הפרחים, היינו יכולים לממש זאת כך:\n", "

                                                                                                                                      " ] @@ -465,9 +465,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                      \n", + " אך מה יקרה כשנרצה לתת רק הנחה?
                                                                                                                                      \n", + " במקרה כזה, כשנרצה \"לדלג\" מעל אחד מערכי ברירת המחדל, נצטרך להעביר את שמות הפרמטרים בקריאה לפונקציה.
                                                                                                                                      \n", " בדוגמה הבאה אנחנו מעלים את המחיר ב־1 (כי זו ברירת המחדל), ומורידים אותו ב־5: \n", "

                                                                                                                                      " ] @@ -487,7 +487,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", + "

                                                                                                                                      \n", " זה אמנם עניין של סגנון, אבל יש יופי וסדר בציון שמות הפרמטרים גם כשלא חייבים:\n", "

                                                                                                                                      " ] @@ -505,16 +505,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מספר משתנה של ארגומנטים" + "### מספר משתנה של ארגומנטים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                      \n", + " הפונקציה הפייתונית max, למשל, מתנהגת באופן משונה.
                                                                                                                                      \n", + " היא יודעת לקבל כל מספר שהוא של ארגומנטים, ולהחליט מי מהם הוא הגדול ביותר.
                                                                                                                                      \n", " ראו בעצמכם!\n", "

                                                                                                                                      " ] @@ -532,8 +532,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " נוכל גם אנחנו לממש פונקציה שמקבלת מספר משתנה של פרמטרים די בקלות.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " נוכל גם אנחנו לממש פונקציה שמקבלת מספר משתנה של פרמטרים די בקלות.
                                                                                                                                      \n", " נתחיל מלממש פונקציה טיפשית למדי, שמקבלת מספר משתנה של פרמטרים ומדפיסה אותם:\n", "

                                                                                                                                      " ] @@ -560,9 +560,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                      \n", + " מה התרחש בדוגמה האחרונה, בעצם?
                                                                                                                                      \n", + " כשפרמטר מוגדר בכותרת הפונקציה עם הסימן כוכבית, אפשר לשלוח אל אותו פרמטר מספר בלתי מוגבל של ארגומנטים.
                                                                                                                                      \n", " הערך שייכנס לפרמטר יהיה מסוג tuple, שאיבריו הם כל האיברים שהועברו כארגומנטים.\n", "

                                                                                                                                      " ] @@ -571,7 +571,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", + "

                                                                                                                                      \n", " לצורך ההדגמה, נבנה פונקציה שמקבלת פרמטרים ומדפיסה אותם בזה אחר זה:\n", "

                                                                                                                                      " ] @@ -598,22 +598,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                      \n", - "
                                                                                                                                      \n", - " \"תרגול\" \n", - "
                                                                                                                                      \n", - "
                                                                                                                                      \n", - "

                                                                                                                                      \n", - " שחקו עם הפונקציה silly_function2 וודאו שהבנתם מה מתרחש בה.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + "
                                                                                                                                      \n", + "\"תרגול\"\n", + "
                                                                                                                                      \n", + "
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " שחקו עם הפונקציה silly_function2 וודאו שהבנתם מה מתרחש בה.
                                                                                                                                      \n", " כשתסיימו, נסו לממש את הפונקציה max בעצמכם.\n", "

                                                                                                                                      \n", - "
                                                                                                                                      \n", - "
                                                                                                                                      \n", - "

                                                                                                                                      \n", - " חשוב!
                                                                                                                                      \n", + "

                                                                                                                                      \n", + "
                                                                                                                                      \n", + "

                                                                                                                                      \n", + "חשוב!
                                                                                                                                      \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                      \n", - "
                                                                                                                                      \n", + "
                                                                                                                                      \n", "
                                                                                                                                      " ] }, @@ -621,7 +621,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", + "

                                                                                                                                      \n", " נממש את max:\n", "

                                                                                                                                      " ] @@ -650,8 +650,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " כותרת הפונקציה יכולה לכלול משתנים נוספים לפני הכוכבית.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " כותרת הפונקציה יכולה לכלול משתנים נוספים לפני הכוכבית.
                                                                                                                                      \n", " נראה לדוגמה פונקציה שמקבלת גובה הנחה ואת מחירי כל המוצרים שקנינו, ומחזירה את הסכום הסופי שעלינו לשלם:\n", "

                                                                                                                                      " ] @@ -673,8 +673,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " אף שבמבט ראשון הפונקציה get_final_price עשויה להיראות מגניבה, כדאי להיזהר משימוש מוגזם בתכונה הזו של פייתון.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " אף שבמבט ראשון הפונקציה get_final_price עשויה להיראות מגניבה, כדאי להיזהר משימוש מוגזם בתכונה הזו של פייתון.
                                                                                                                                      \n", " הדוגמה הזו אמנם מדגימה גמישות יוצאת דופן של פייתון, אבל ככלל היא דוגמה גרועה מאוד לשימוש בכוכבית.\n", "

                                                                                                                                      " ] @@ -683,7 +683,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", + "

                                                                                                                                      \n", " שימו לב כמה נוח יותר להבין את המימוש הבא ל־get_final_price, וכמה נוח יותר להבין את הקריאה לפונקציה הזו:\n", "

                                                                                                                                      " ] @@ -705,17 +705,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגול ביניים: סולל דרך" + "### תרגול ביניים: סולל דרך" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", - " כתבו פונקציה בשם create_path שיכולה לקבל מספר בלתי מוגבל של ארגומנטים.
                                                                                                                                      \n", - " הפרמטר הראשון יהיה אות הכונן שבו הקבצים מאוחסנים (לרוב \"C\"), והפרמטרים שאחריו יהיו שמות של תיקיות וקבצים.
                                                                                                                                      \n", - " שרשרו אותם בעזרת התו \\ כדי ליצור מהם מחרוזת המייצגת נתיב במחשב. אחרי האות של הכונן שימו נקודתיים.
                                                                                                                                      \n", + "

                                                                                                                                      \n", + " כתבו פונקציה בשם create_path שיכולה לקבל מספר בלתי מוגבל של ארגומנטים.
                                                                                                                                      \n", + " הפרמטר הראשון יהיה אות הכונן שבו הקבצים מאוחסנים (לרוב \"C\"), והפרמטרים שאחריו יהיו שמות של תיקיות וקבצים.
                                                                                                                                      \n", + " שרשרו אותם בעזרת התו \\ כדי ליצור מהם מחרוזת המייצגת נתיב במחשב. אחרי האות של הכונן שימו נקודתיים.
                                                                                                                                      \n", " הניחו שהקלט שהמשתמש הכניס הוא תקין.\n", "

                                                                                                                                      " ] @@ -724,7 +724,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                      \n", + "

                                                                                                                                      \n", " הנה כמה דוגמאות לקריאות לפונקציה ולערכי ההחזרה שלה:\n", "

                                                                                                                                      " ] @@ -733,12 +733,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                        \n", - "
                                                                                                                                      • הקריאה create_path(\"C\", \"Users\", \"Yam\") תחזיר \"C:\\Users\\Yam\"
                                                                                                                                      • \n", - "
                                                                                                                                      • הקריאה create_path(\"C\", \"Users\", \"Yam\", \"HaimonLimon.mp4\") תחזיר \"C:\\Users\\Yam\\HaimonLimon.mp4\"
                                                                                                                                      • \n", - "
                                                                                                                                      • הקריאה create_path(\"D\", \"1337.png\") תחזיר \"D:\\1337.png\"
                                                                                                                                      • \n", - "
                                                                                                                                      • הקריאה create_path(\"C\") תחזיר \"C:\"
                                                                                                                                      • \n", - "
                                                                                                                                      • הקריאה create_path() תגרום לשגיאה
                                                                                                                                      • \n", + "
                                                                                                                                          \n", + "
                                                                                                                                        • הקריאה create_path(\"C\", \"Users\", \"Yam\") תחזיר \"C:\\Users\\Yam\"
                                                                                                                                        • \n", + "
                                                                                                                                        • הקריאה create_path(\"C\", \"Users\", \"Yam\", \"HaimonLimon.mp4\") תחזיר \"C:\\Users\\Yam\\HaimonLimon.mp4\"
                                                                                                                                        • \n", + "
                                                                                                                                        • הקריאה create_path(\"D\", \"1337.png\") תחזיר \"D:\\1337.png\"
                                                                                                                                        • \n", + "
                                                                                                                                        • הקריאה create_path(\"C\") תחזיר \"C:\"
                                                                                                                                        • \n", + "
                                                                                                                                        • הקריאה create_path() תגרום לשגיאה
                                                                                                                                        • \n", "
                                                                                                                                        " ] }, @@ -746,14 +746,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מספר משתנה של ארגומנטים עם שמות" + "### מספר משתנה של ארגומנטים עם שמות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                        \n", + "

                                                                                                                                        \n", " בתחילת המחברת למדנו כיצד מעבירים לפונקציות ארגומנטים בעזרת שם:\n", "

                                                                                                                                        " ] @@ -775,10 +775,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                        \n", - " אבל מה אם נרצה להעביר לפונקציה שלנו מספר בלתי מוגבל של ארגומנטים לפי שם?
                                                                                                                                        \n", - " נביא כדוגמה את הפעולה format על מחרוזות.
                                                                                                                                        \n", - " format היא פונקציה גמישה בכל הנוגע לכמות ולשמות של הארגומנטים שמועברים לה לפי שם.
                                                                                                                                        \n", + "

                                                                                                                                        \n", + " אבל מה אם נרצה להעביר לפונקציה שלנו מספר בלתי מוגבל של ארגומנטים לפי שם?
                                                                                                                                        \n", + " נביא כדוגמה את הפעולה format על מחרוזות.
                                                                                                                                        \n", + "format היא פונקציה גמישה בכל הנוגע לכמות ולשמות של הארגומנטים שמועברים לה לפי שם.
                                                                                                                                        \n", " נראה שתי דוגמאות לשימוש בה, שימוש שבמבט ראשון עשוי להיראות קסום:\n", "

                                                                                                                                        " ] @@ -809,8 +809,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                        \n", - " נכתוב גם אנחנו פונקציה שמסוגלת לקבל מספר בלתי מוגבל של ארגומנטים לפי שם.
                                                                                                                                        \n", + "

                                                                                                                                        \n", + " נכתוב גם אנחנו פונקציה שמסוגלת לקבל מספר בלתי מוגבל של ארגומנטים לפי שם.
                                                                                                                                        \n", " ניעזר תחילה בידידתנו הוותיקה, silly_function, כדי לראות איך הקסם קורה:\n", "

                                                                                                                                        " ] @@ -833,9 +833,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                        \n", + " ההתנהגות הזו מתרחשת כיוון שהשתמשנו בשתי כוכביות לפני שם המשתנה.
                                                                                                                                        \n", + " השימוש בשתי כוכביות מאפשר לנו להעביר מספר בלתי מוגבל של ארגומנטים עם שם, באופן שמזכיר קצת את השימוש בכוכבית שראינו קודם.
                                                                                                                                        \n", " המשתנה שבו נשמרים הנתונים הוא מסוג מילון, ובו המפתחות יהיו שמות הארגומנטים שהועברו, והערכים – הערכים שהועברו לאותם שמות.\n", "

                                                                                                                                        " ] @@ -844,8 +844,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                        \n", - " אחרי שהבנו איך הסיפור הזה עובד, בואו ננסה ליצור פונקציה מעניינת יותר.
                                                                                                                                        \n", + "

                                                                                                                                        \n", + " אחרי שהבנו איך הסיפור הזה עובד, בואו ננסה ליצור פונקציה מעניינת יותר.
                                                                                                                                        \n", " הפונקציה שנכתוב תקבל כארגומנטים כמה גרם מכל רכיב צריך כדי להכין סושי, ותדפיס לנו מתכון:\n", "

                                                                                                                                        " ] @@ -868,8 +868,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                        \n", - " בדוגמה זו השתמשנו בעובדה שהפרמטר שמוגדר בעזרת שתי כוכביות הוא בהכרח מילון.
                                                                                                                                        \n", + "

                                                                                                                                        \n", + " בדוגמה זו השתמשנו בעובדה שהפרמטר שמוגדר בעזרת שתי כוכביות הוא בהכרח מילון.
                                                                                                                                        \n", " עברנו על כל המפתחות והערכים שבו בעזרת הפעולה items, והדפסנו את המתכון, רכיב אחר רכיב.\n", "

                                                                                                                                        " ] @@ -878,15 +878,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                        \n", - "
                                                                                                                                        \n", - " \"תרגול\" \n", - "
                                                                                                                                        \n", - "
                                                                                                                                        \n", - "

                                                                                                                                        \n", + "

                                                                                                                                        \n", + "
                                                                                                                                        \n", + "\"תרגול\"\n", + "
                                                                                                                                        \n", + "
                                                                                                                                        \n", + "

                                                                                                                                        \n", " גרמו לפונקציה print_sushi_recipe להדפיס את הרכיבים לפי סדר משקלם, מהנמוך לגבוה.\n", "

                                                                                                                                        \n", - "
                                                                                                                                        \n", + "
                                                                                                                                        \n", "
                                                                                                                                        " ] }, @@ -894,7 +894,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                        \n", + "

                                                                                                                                        \n", " פרמטר המוגדר בעזרת שתי כוכביות תמיד יופיע בסוף רשימת הפרמטרים.\n", "

                                                                                                                                        " ] @@ -903,17 +903,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגול ביניים: גזור פזורפ" + "### תרגול ביניים: גזור פזורפ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                        \n", - " כתבו פונקציה בשם my_format שמקבלת מחרוזת, ומספר בלתי מוגבל של פרמטרים עם שמות.
                                                                                                                                        \n", - " הפונקציה תחליף כל הופעה של {key} במחרוזת, אם key הועבר כפרמטר לפונקציה.
                                                                                                                                        \n", - " הערך שבו {key} יוחלף הוא הערך שהועבר ל־key במסגרת העברת הארגומנטים לפונקציה.
                                                                                                                                        \n", + "

                                                                                                                                        \n", + " כתבו פונקציה בשם my_format שמקבלת מחרוזת, ומספר בלתי מוגבל של פרמטרים עם שמות.
                                                                                                                                        \n", + " הפונקציה תחליף כל הופעה של {key} במחרוזת, אם key הועבר כפרמטר לפונקציה.
                                                                                                                                        \n", + " הערך שבו {key} יוחלף הוא הערך שהועבר ל־key במסגרת העברת הארגומנטים לפונקציה.
                                                                                                                                        \n", " הפונקציה לא תשתמש בפעולה format של מחרוזות או בפונקציות שלא למדנו עד כה.\n", "

                                                                                                                                        " ] @@ -922,7 +922,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                        \n", + "

                                                                                                                                        \n", " הנה כמה דוגמאות לקריאות לפונקציה ולערכי ההחזרה שלה:\n", "

                                                                                                                                        " ] @@ -931,23 +931,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                          \n", - "
                                                                                                                                        • \n", - " הקריאה my_format(\"I'm Mr. {name}, look at me!\", name=\"Meeseeks\")
                                                                                                                                          \n", + "
                                                                                                                                            \n", + "
                                                                                                                                          • \n", + " הקריאה my_format(\"I'm Mr. {name}, look at me!\", name=\"Meeseeks\")
                                                                                                                                            \n", " תחזיר \"I'm Mr. Meeseeks, look at me!\"\n", - "
                                                                                                                                          • \n", - "
                                                                                                                                          • \n", - " הקריאה my_format(\"{a} {b} {c} {c}\", a=\"wubba\", b=\"lubba\", c=\"dub\")
                                                                                                                                            \n", + "
                                                                                                                                          • \n", + "
                                                                                                                                          • \n", + " הקריאה my_format(\"{a} {b} {c} {c}\", a=\"wubba\", b=\"lubba\", c=\"dub\")
                                                                                                                                            \n", " תחזיר \"wubba lubba dub dub\"\n", - "
                                                                                                                                          • \n", - "
                                                                                                                                          • \n", - " הקריאה my_format(\"The universe is basically an animal\", animal=\"Chicken\")
                                                                                                                                            \n", + "
                                                                                                                                          • \n", + "
                                                                                                                                          • \n", + " הקריאה my_format(\"The universe is basically an animal\", animal=\"Chicken\")
                                                                                                                                            \n", " תחזיר \"The universe is basically an animal\"\n", - "
                                                                                                                                          • \n", - "
                                                                                                                                          • \n", - " הקריאה my_format(\"The universe is basically an animal\")
                                                                                                                                            \n", + "
                                                                                                                                          • \n", + "
                                                                                                                                          • \n", + " הקריאה my_format(\"The universe is basically an animal\")
                                                                                                                                            \n", " תחזיר \"The universe is basically an animal\"\n", - "
                                                                                                                                          • \n", + "\n", "
                                                                                                                                          " ] }, @@ -955,16 +955,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### חוק וסדר" + "### חוק וסדר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                          \n", - " נוכל לשלב יחד את כל הטכניקות שלמדנו עד עכשיו לפונקציה אחת.
                                                                                                                                          \n", - " ניצור, לדוגמה, פונקציה שמחשבת עלות הכנה של עוגה.
                                                                                                                                          \n", + "

                                                                                                                                          \n", + " נוכל לשלב יחד את כל הטכניקות שלמדנו עד עכשיו לפונקציה אחת.
                                                                                                                                          \n", + " ניצור, לדוגמה, פונקציה שמחשבת עלות הכנה של עוגה.
                                                                                                                                          \n", "

                                                                                                                                          " ] }, @@ -972,18 +972,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                          \n", + "

                                                                                                                                          \n", " הפונקציה תקבל:\n", "

                                                                                                                                          \n", - "\n", - "
                                                                                                                                            \n", - "
                                                                                                                                          • את רשימת הרכיבים הקיימים בסופר ואת המחירים שלהם.
                                                                                                                                          • \n", - "
                                                                                                                                          • את רשימת הרכיבים הדרושים כדי להכין עוגה (נניח ששם כל רכיב הוא מילה בודדת).
                                                                                                                                          • \n", - "
                                                                                                                                          • אם ללקוח מגיעה הנחה.
                                                                                                                                          • \n", - "
                                                                                                                                          • שיעור ההנחה, באחוזים. כברירת מחדל, אם ללקוח מגיעה הנחה – שיעורה הוא 10%.
                                                                                                                                          • \n", + "
                                                                                                                                              \n", + "
                                                                                                                                            • את רשימת הרכיבים הקיימים בסופר ואת המחירים שלהם.
                                                                                                                                            • \n", + "
                                                                                                                                            • את רשימת הרכיבים הדרושים כדי להכין עוגה (נניח ששם כל רכיב הוא מילה בודדת).
                                                                                                                                            • \n", + "
                                                                                                                                            • אם ללקוח מגיעה הנחה.
                                                                                                                                            • \n", + "
                                                                                                                                            • שיעור ההנחה, באחוזים. כברירת מחדל, אם ללקוח מגיעה הנחה – שיעורה הוא 10%.
                                                                                                                                            • \n", "
                                                                                                                                            \n", - "\n", - "

                                                                                                                                            \n", + "

                                                                                                                                            \n", " לצורך פישוט התרגיל, נתעלם לרגע מעניין הכמויות במתכון :)\n", "

                                                                                                                                            " ] @@ -1013,17 +1011,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                            \n", - "
                                                                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                                                                            \n", - "
                                                                                                                                            \n", - "

                                                                                                                                            \n", - " הפונקציה נכתבה כדי להדגים את הטכניקה, והיא נראית די רע.
                                                                                                                                            \n", - " ראו כמה קשה להבין איזה ארגומנט שייך לאיזה פרמטר בקריאה לפונקציה.
                                                                                                                                            \n", + "

                                                                                                                                            \n", + "
                                                                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                                                                            \n", + "
                                                                                                                                            \n", + "

                                                                                                                                            \n", + " הפונקציה נכתבה כדי להדגים את הטכניקה, והיא נראית די רע.
                                                                                                                                            \n", + " ראו כמה קשה להבין איזה ארגומנט שייך לאיזה פרמטר בקריאה לפונקציה.
                                                                                                                                            \n", " יש להפעיל שיקול דעת לפני שימוש בטכניקות של קבלת פרמטרים מרובים.\n", "

                                                                                                                                            \n", - "
                                                                                                                                            \n", + "
                                                                                                                                            \n", "
                                                                                                                                            " ] }, @@ -1031,18 +1029,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                            \n", + "

                                                                                                                                            \n", " שימו לב לסדר הפרמטרים בכותרת הפונקציה:\n", "

                                                                                                                                            \n", - "\n", - "
                                                                                                                                              \n", - "
                                                                                                                                            • הארגומנטים שמיקומם קבוע ואנחנו יודעים מי הם הולכים להיות (apply_discount).
                                                                                                                                            • \n", - "
                                                                                                                                            • הארגומנטים שמיקומם קבוע ואנחנו לא יודעים מי הם הולכים להיות (ingredients).
                                                                                                                                            • \n", - "
                                                                                                                                            • הארגומנטים ששמותיהם ידועים וערך ברירת המחדל שלהם נקבע בראש הפונקציה (discount_rate).
                                                                                                                                            • \n", - "
                                                                                                                                            • ערכים נוספים ששמותיהם לא ידועים מראש (prices).
                                                                                                                                            • \n", + "
                                                                                                                                                \n", + "
                                                                                                                                              • הארגומנטים שמיקומם קבוע ואנחנו יודעים מי הם הולכים להיות (apply_discount).
                                                                                                                                              • \n", + "
                                                                                                                                              • הארגומנטים שמיקומם קבוע ואנחנו לא יודעים מי הם הולכים להיות (ingredients).
                                                                                                                                              • \n", + "
                                                                                                                                              • הארגומנטים ששמותיהם ידועים וערך ברירת המחדל שלהם נקבע בראש הפונקציה (discount_rate).
                                                                                                                                              • \n", + "
                                                                                                                                              • ערכים נוספים ששמותיהם לא ידועים מראש (prices).
                                                                                                                                              • \n", "
                                                                                                                                              \n", - "\n", - "

                                                                                                                                              \n", + "

                                                                                                                                              \n", " נסו לחשוב: למה נקבע דווקא הסדר הזה?\n", "

                                                                                                                                              " ] @@ -1051,22 +1047,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                              \n", - "
                                                                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                                                                              \n", - "
                                                                                                                                              \n", - "

                                                                                                                                              \n", - " איך הייתם כותבים את אותה הפונקציה בדיוק בלי שימוש בטכניקות שלמדנו?
                                                                                                                                              \n", + "

                                                                                                                                              \n", + "
                                                                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                                                                              \n", + "
                                                                                                                                              \n", + "

                                                                                                                                              \n", + " איך הייתם כותבים את אותה הפונקציה בדיוק בלי שימוש בטכניקות שלמדנו?
                                                                                                                                              \n", " השימוש בערכי ברירת מחדל מותר.\n", "

                                                                                                                                              \n", - "
                                                                                                                                              \n", - "
                                                                                                                                              \n", - "

                                                                                                                                              \n", - " חשוב!
                                                                                                                                              \n", + "

                                                                                                                                              \n", + "
                                                                                                                                              \n", + "

                                                                                                                                              \n", + "חשוב!
                                                                                                                                              \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                              \n", - "
                                                                                                                                              \n", + "
                                                                                                                                              \n", "
                                                                                                                                              " ] }, @@ -1074,15 +1070,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ערכי ברירת מחדל שאפשר לשנותם" + "### ערכי ברירת מחדל שאפשר לשנותם" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", - " יש מקרה קצה של ערכי ברירת מחדל שגורם לפייתון להתנהג קצת מוזר.
                                                                                                                                              \n", + "

                                                                                                                                              \n", + " יש מקרה קצה של ערכי ברירת מחדל שגורם לפייתון להתנהג קצת מוזר.
                                                                                                                                              \n", " זה קורה כשערך ברירת המחדל שהוגדר בכותרת הפונקציה הוא mutable:\n", "

                                                                                                                                              " ] @@ -1106,8 +1102,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", - " עד כאן נראה כאילו הפונקציה פועלת באופן שהיינו מצפים ממנה.
                                                                                                                                              \n", + "

                                                                                                                                              \n", + " עד כאן נראה כאילו הפונקציה פועלת באופן שהיינו מצפים ממנה.
                                                                                                                                              \n", " ערך ברירת המחדל של הפרמטר l הוא רשימה ריקה, ולכן בקריאה השנייה חוזרת רשימה עם איבר בודד, ['a'].\n", "

                                                                                                                                              " ] @@ -1116,7 +1112,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", + "

                                                                                                                                              \n", " נקרא לפונקציה עוד כמה פעמים, ונגלה משהו מוזר:\n", "

                                                                                                                                              " ] @@ -1138,8 +1134,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", - " משונה ולא הגיוני! ציפינו לקבל את הרשימה ['b'] ואז את הרשימה ['c'] וכן הלאה.
                                                                                                                                              \n", + "

                                                                                                                                              \n", + " משונה ולא הגיוני! ציפינו לקבל את הרשימה ['b'] ואז את הרשימה ['c'] וכן הלאה.
                                                                                                                                              \n", " במקום זה בכל פעם מצטרף איבר חדש לרשימה. למה?\n", "

                                                                                                                                              " ] @@ -1148,10 +1144,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", - " הסיבה לכך היא שפייתון קוראת את כותרת הפונקציה רק פעם אחת – בשלב ההגדרה של הפונקציה.
                                                                                                                                              \n", - " בשלב הזה שבו פייתון תקרא את כותרת הפונקציה, ערך ברירת המחדל של l יצביע לרשימה ריקה.
                                                                                                                                              \n", - " מאותו רגע, בכל פעם שלא נעביר ל־l ערך, l תהיה אותה רשימת ברירת מחדל שהגדרנו בהתחלה.
                                                                                                                                              \n", + "

                                                                                                                                              \n", + " הסיבה לכך היא שפייתון קוראת את כותרת הפונקציה רק פעם אחת – בשלב ההגדרה של הפונקציה.
                                                                                                                                              \n", + " בשלב הזה שבו פייתון תקרא את כותרת הפונקציה, ערך ברירת המחדל של l יצביע לרשימה ריקה.
                                                                                                                                              \n", + " מאותו רגע, בכל פעם שלא נעביר ל־l ערך, l תהיה אותה רשימת ברירת מחדל שהגדרנו בהתחלה.
                                                                                                                                              \n", " נדגים זאת בעזרת הדפסת ה־id של הרשימה:\n", "

                                                                                                                                              " ] @@ -1180,9 +1176,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", - " כיצד נפתור את הבעיה?
                                                                                                                                              \n", - " דבר ראשון – נשתדל שלא להגדיר משתנים מטיפוס שהוא mutable בתוך כותרת הפונקציה.
                                                                                                                                              \n", + "

                                                                                                                                              \n", + " כיצד נפתור את הבעיה?
                                                                                                                                              \n", + " דבר ראשון – נשתדל שלא להגדיר משתנים מטיפוס שהוא mutable בתוך כותרת הפונקציה.
                                                                                                                                              \n", " אם נרצה בכל זאת שהפרמטר יקבל רשימה כברירת מחדל, נעשה זאת כך:\n", "

                                                                                                                                              " ] @@ -1209,7 +1205,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", + "

                                                                                                                                              \n", " שימו לב שהתופעה לא משתחזרת במבנים שהם immutable, כיוון שכשמם כן הם – אי אפשר לשנותם:\n", "

                                                                                                                                              " ] @@ -1236,21 +1232,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### דוגמאות נוספות" + "### דוגמאות נוספות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### חיקוי מדויק של פונקציית get למילונים:" + "#### חיקוי מדויק של פונקציית get למילונים:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", + "

                                                                                                                                              \n", " נרענן את זיכרוננו בנוגע ל־unpacking:\n", "

                                                                                                                                              " ] @@ -1270,7 +1266,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", + "

                                                                                                                                              \n", " או:\n", "

                                                                                                                                              " ] @@ -1291,7 +1287,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", + "

                                                                                                                                              \n", " אם כך, נוכל לכתוב:\n", "

                                                                                                                                              " ] @@ -1310,8 +1306,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", - " שימו לב שהכוכביות בשורה הראשונה עוזרות לנו לקבל מספר משתנה של ארגומנטים.
                                                                                                                                              \n", + "

                                                                                                                                              \n", + " שימו לב שהכוכביות בשורה הראשונה עוזרות לנו לקבל מספר משתנה של ארגומנטים.
                                                                                                                                              \n", " הכוכביות בשורה השנייה הן unpacking, כפי שלמדנו בשבוע שעבר.\n", "

                                                                                                                                              " ] @@ -1320,7 +1316,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", + "

                                                                                                                                              \n", " החיקוי הזה לא מועיל לנו במיוחד כרגע, אבל הוא יעבוד עבור כל סוג של פעולה.\n", "

                                                                                                                                              " ] @@ -1329,14 +1325,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                              \n", + "
                                                                                                                                              \n", "
                                                                                                                                              ערכי ברירת מחדל
                                                                                                                                              Default Parameters. פרמטרים שנקבע להם ערך ברירת מחדל בכותרת הפונקציה.
                                                                                                                                              \n", "
                                                                                                                                              ארגומנטים לפי מיקום
                                                                                                                                              Positional Arguments. ערכים המועברים כארגומנטים בקריאה לפונקציה לפי המיקום שלהם, וללא שם לידם.
                                                                                                                                              \n", "
                                                                                                                                              ארגומנטים לפי שם
                                                                                                                                              Keyword Arguments. ערכים המועברים כארגומנטים בקריאה לפונקציה לפי השם שלהם שנמצא לפני השווה.
                                                                                                                                              \n", @@ -1349,21 +1345,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### כפלו לי שתו לי" + "### כפלו לי שתו לי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                              \n", + "

                                                                                                                                              \n", " כתבו פונקציה בשם avg שמקבלת מספר בלתי מוגבל של ארגומנטים, ומדפיסה את הממוצע שלהם.\n", "

                                                                                                                                              " ] @@ -1372,20 +1368,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                \n", - "
                                                                                                                                              • \n", + "
                                                                                                                                                  \n", + "
                                                                                                                                                • \n", " הקריאה avg(5, 6)\n", " תחזיר 5.5\n", - "
                                                                                                                                                • \n", - "
                                                                                                                                                • \n", + "
                                                                                                                                                • \n", + "
                                                                                                                                                • \n", " הקריאה avg(10, 5, 3)\n", " תחזיר 6\n", - "
                                                                                                                                                • \n", - "
                                                                                                                                                • \n", + "
                                                                                                                                                • \n", + "
                                                                                                                                                • \n", " הקריאה avg(2)\n", " תחזיר 2\n", - "
                                                                                                                                                • \n", - "
                                                                                                                                                • \n", + "
                                                                                                                                                • \n", + "
                                                                                                                                                • \n", " הקריאה avg()\n", " תחזיר None או שגיאה, לבחירתכם\n", "
                                                                                                                                                • \n", @@ -1396,17 +1392,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Cup of join" + "### Cup of join" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                  \n", - " כתבו פונקציה בשם join, שמקבלת מספר בלתי מוגבל של רשימות, כל רשימה כפרמטר.
                                                                                                                                                  \n", - " על הפונקציה להיות מסוגלת לקבל פרמטר נוסף בשם sep.
                                                                                                                                                  \n", - " על הפונקציה להחזיר רשימה אחת המורכבת מכלל הרשימות שהתקבלו כפרמטרים.
                                                                                                                                                  \n", + "

                                                                                                                                                  \n", + " כתבו פונקציה בשם join, שמקבלת מספר בלתי מוגבל של רשימות, כל רשימה כפרמטר.
                                                                                                                                                  \n", + " על הפונקציה להיות מסוגלת לקבל פרמטר נוסף בשם sep.
                                                                                                                                                  \n", + " על הפונקציה להחזיר רשימה אחת המורכבת מכלל הרשימות שהתקבלו כפרמטרים.
                                                                                                                                                  \n", " אם סופק הפרמטר sep, יש לשרשר אותו כאיבר בין כל שתי רשימות. אם הוא לא סופק, יש לשרשר את התו \"-\" במקום. \n", "

                                                                                                                                                  " ] @@ -1415,20 +1411,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                    \n", - "
                                                                                                                                                  • \n", + "
                                                                                                                                                      \n", + "
                                                                                                                                                    • \n", " הקריאה join([1, 2], [8], [9, 5, 6], sep='@')\n", " תחזיר [1, 2, '@', 8, '@', 9, 5, 6]\n", - "
                                                                                                                                                    • \n", - "
                                                                                                                                                    • \n", + "
                                                                                                                                                    • \n", + "
                                                                                                                                                    • \n", " הקריאה join([1, 2], [8], [9, 5, 6])\n", " תחזיר [1, 2, '-', 8, '-', 9, 5, 6]\n", - "
                                                                                                                                                    • \n", - "
                                                                                                                                                    • \n", + "
                                                                                                                                                    • \n", + "
                                                                                                                                                    • \n", " הקריאה join([1])\n", " תחזיר [1]\n", - "
                                                                                                                                                    • \n", - "
                                                                                                                                                    • \n", + "
                                                                                                                                                    • \n", + "
                                                                                                                                                    • \n", " הקריאה join()\n", " תחזיר None או שגיאה, לבחירתכם\n", "
                                                                                                                                                    • \n", @@ -1439,15 +1435,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### חתכת עוגה" + "### חתכת עוגה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                      \n", - " ממשו פונקציה בשם get_recipe_price, שלה יש:
                                                                                                                                                      \n", + "

                                                                                                                                                      \n", + " ממשו פונקציה בשם get_recipe_price, שלה יש:
                                                                                                                                                      \n", "

                                                                                                                                                      " ] }, @@ -1455,18 +1451,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                        \n", - "
                                                                                                                                                      • \n", - " פרמטר בשם prices, שיקבל מילון של מצרכים הדרושים כדי להכין מתכון מסוים.
                                                                                                                                                        \n", - " מפתח המילון יהיה שם המוצר, וערך המילון יהיה המחיר שלו ל־100 גרם.
                                                                                                                                                        \n", + "
                                                                                                                                                          \n", + "
                                                                                                                                                        • \n", + " פרמטר בשם prices, שיקבל מילון של מצרכים הדרושים כדי להכין מתכון מסוים.
                                                                                                                                                          \n", + " מפתח המילון יהיה שם המוצר, וערך המילון יהיה המחיר שלו ל־100 גרם.
                                                                                                                                                          \n", " הניחו ששמו של כל רכיב הוא מילה אחת, ללא רווחים וללא תווים מיוחדים.\n", "
                                                                                                                                                        • \n", - "
                                                                                                                                                        • \n", - " פרמטר רשות בשם optionals שיקבל רשימה של רכיבים שנתעלם מהם, משמע – לא נקנה מהם בכלל.
                                                                                                                                                          \n", + "
                                                                                                                                                        • \n", + " פרמטר רשות בשם optionals שיקבל רשימה של רכיבים שנתעלם מהם, משמע – לא נקנה מהם בכלל.
                                                                                                                                                          \n", " אם הפרמטר לא יצוין, יש להתייחס לכל הרכיבים שהועברו.\n", "
                                                                                                                                                        • \n", - "
                                                                                                                                                        • \n", - " עבור כל רכיב שהועבר ב־ingredients, יש להעביר ארגומנט הנושא את שמו של הרכיב.
                                                                                                                                                          \n", + "
                                                                                                                                                        • \n", + " עבור כל רכיב שהועבר ב־ingredients, יש להעביר ארגומנט הנושא את שמו של הרכיב.
                                                                                                                                                          \n", " ערך הארגומנט צריך להיות כמות הרכיב (בגרמים) שממנה אנחנו רוצים לקנות עבור המתכון.\n", "
                                                                                                                                                        • \n", "
                                                                                                                                                        " @@ -1476,7 +1472,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                        \n", + "

                                                                                                                                                        \n", " הפונקציה תחזיר את המחיר שעלינו לשלם על קניית כל המצרכים.\n", "

                                                                                                                                                        " ] @@ -1485,19 +1481,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                          \n", - "
                                                                                                                                                        • \n", - " הקריאה get_recipe_price({'chocolate': 18, 'milk': 8}, chocolate=200, milk=100)
                                                                                                                                                          \n", + "
                                                                                                                                                            \n", + "
                                                                                                                                                          • \n", + " הקריאה get_recipe_price({'chocolate': 18, 'milk': 8}, chocolate=200, milk=100)
                                                                                                                                                            \n", " תחזיר 44\n", - "
                                                                                                                                                          • \n", - "
                                                                                                                                                          • \n", - " הקריאה get_recipe_price({'chocolate': 18, 'milk': 8}, optionals=['milk'], chocolate=300)
                                                                                                                                                            \n", + "
                                                                                                                                                          • \n", + "
                                                                                                                                                          • \n", + " הקריאה get_recipe_price({'chocolate': 18, 'milk': 8}, optionals=['milk'], chocolate=300)
                                                                                                                                                            \n", " תחזיר 54\n", - "
                                                                                                                                                          • \n", - "
                                                                                                                                                          • \n", - " הקריאה get_recipe_price({})
                                                                                                                                                            \n", + "
                                                                                                                                                          • \n", + "
                                                                                                                                                          • \n", + " הקריאה get_recipe_price({})
                                                                                                                                                            \n", " תחזיר 0\n", - "
                                                                                                                                                          • \n", + "\n", "
                                                                                                                                                          " ] } diff --git a/week5/3_Generators.ipynb b/week5/3_Generators.ipynb index 1e102cd..d20de2d 100644 --- a/week5/3_Generators.ipynb +++ b/week5/3_Generators.ipynb @@ -4,31 +4,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Generators" + "# Generators" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                          \n", - " הפונקציות שיצרנו עד כה נבנו כך שיחזירו ערך אחד בכל קריאה.
                                                                                                                                                          \n", - " הערך הזה יכול היה להיות מכל טיפוס שהוא: בוליאני, מחרוזת, tuple וכדומה.
                                                                                                                                                          \n", - " אם נרצה להחזיר כמה ערכים יחד, תמיד נוכל להחזיר אותם כרשימה או כ־tuple.
                                                                                                                                                          \n", + "

                                                                                                                                                          \n", + " הפונקציות שיצרנו עד כה נבנו כך שיחזירו ערך אחד בכל קריאה.
                                                                                                                                                          \n", + " הערך הזה יכול היה להיות מכל טיפוס שהוא: בוליאני, מחרוזת, tuple וכדומה.
                                                                                                                                                          \n", + " אם נרצה להחזיר כמה ערכים יחד, תמיד נוכל להחזיר אותם כרשימה או כ־tuple.
                                                                                                                                                          \n", " אבל מה קורה כשאנחנו רוצים להחזיר סדרת ערכים גדולה מאוד או אפילו אין־סופית?\n", "

                                                                                                                                                          " ] @@ -37,14 +37,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                          \n", + "

                                                                                                                                                          \n", " למשל:\n", "

                                                                                                                                                          \n", - "\n", - "
                                                                                                                                                            \n", - "
                                                                                                                                                          • הכתובות של כל הדפים הקיימים באינטרנט.
                                                                                                                                                          • \n", - "
                                                                                                                                                          • מילות כל השירים שראו אור מאז שנת 1400 לספירה.
                                                                                                                                                          • \n", - "
                                                                                                                                                          • כל המספרים השלמים הגדולים מ־0.
                                                                                                                                                          • \n", + "
                                                                                                                                                              \n", + "
                                                                                                                                                            • הכתובות של כל הדפים הקיימים באינטרנט.
                                                                                                                                                            • \n", + "
                                                                                                                                                            • מילות כל השירים שראו אור מאז שנת 1400 לספירה.
                                                                                                                                                            • \n", + "
                                                                                                                                                            • כל המספרים השלמים הגדולים מ־0.
                                                                                                                                                            • \n", "
                                                                                                                                                            " ] }, @@ -52,9 +51,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", - " בכלים שיש בידינו כרגע, נמצא שיש בעיה ליצור רשימות כאלו.
                                                                                                                                                            \n", - " עבור רשימות גדולות מאוד – לא יהיה למחשב די זיכרון ולבסוף הוא ייכשל בשמירת ערכים חדשים.
                                                                                                                                                            \n", + "

                                                                                                                                                            \n", + " בכלים שיש בידינו כרגע, נמצא שיש בעיה ליצור רשימות כאלו.
                                                                                                                                                            \n", + " עבור רשימות גדולות מאוד – לא יהיה למחשב די זיכרון ולבסוף הוא ייכשל בשמירת ערכים חדשים.
                                                                                                                                                            \n", " ומה בנוגע לרשימות אין־סופיות? הן... ובכן... אין־סופיות, ולכן מלכתחילה לא נוכל ליצור אותן.\n", "

                                                                                                                                                            " ] @@ -63,16 +62,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הגדרה" + "## הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", - " פתרון שמעניין לחשוב עליו הוא \"פונקציה עצלנית\".
                                                                                                                                                            \n", - " אם אנחנו בשום שלב לא יכולים להחזיק בזיכרון המחשב את כל האיברים (כי יש יותר מדי מהם, או כי זו סדרה אין־סופית),
                                                                                                                                                            \n", + "

                                                                                                                                                            \n", + " פתרון שמעניין לחשוב עליו הוא \"פונקציה עצלנית\".
                                                                                                                                                            \n", + " אם אנחנו בשום שלב לא יכולים להחזיק בזיכרון המחשב את כל האיברים (כי יש יותר מדי מהם, או כי זו סדרה אין־סופית),
                                                                                                                                                            \n", " אולי נוכל לשלוח תחילה את הערך הראשון – ואת הערכים שבאים אחריו נשלח רק כשיבקשו אותם מאיתנו.\n", "

                                                                                                                                                            " ] @@ -81,9 +80,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", - " פונקציה עצלנית שכזו נקראת generator, ובכל פעם שנבקש ממנה, היא תחזיר לנו איבר יחיד מתוך סדרת ערכים.
                                                                                                                                                            \n", - " תחילה – היא תחזיר רק את הערך הראשון, בלי לחשב את שאר האיברים. אחר כך, באותו אופן, רק את השני, אחר כך רק את השלישי וכן הלאה.
                                                                                                                                                            \n", + "

                                                                                                                                                            \n", + " פונקציה עצלנית שכזו נקראת generator, ובכל פעם שנבקש ממנה, היא תחזיר לנו איבר יחיד מתוך סדרת ערכים.
                                                                                                                                                            \n", + " תחילה – היא תחזיר רק את הערך הראשון, בלי לחשב את שאר האיברים. אחר כך, באותו אופן, רק את השני, אחר כך רק את השלישי וכן הלאה.
                                                                                                                                                            \n", " ההבדל העיקרי בין generator לבין פונקציה רגילה, הוא שב־generator נבחר להחזיר את הערכים אחד־אחד ולא תחת מבנה מאוגד.\n", "

                                                                                                                                                            " ] @@ -92,7 +91,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", + "

                                                                                                                                                            \n", " נסכם: generator היא פונקציה שיוצרת עבורנו בכל פעם ערך אחד, מחזירה אותו, ומחכה עד שנבקש את האיבר הבא.\n", "

                                                                                                                                                            " ] @@ -101,21 +100,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## שימוש" + "## שימוש" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### יצירת generator בסיסי" + "### יצירת generator בסיסי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", + "

                                                                                                                                                            \n", " נתחיל בהגדרת generator מטופש למדי:\n", "

                                                                                                                                                            " ] @@ -139,8 +138,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", - " מעניין! זה נראה ממש כמו פונקציה. נקרא למבנה הזה שיצרנו \"פונקציית ה־generator\".
                                                                                                                                                            \n", + "

                                                                                                                                                            \n", + " מעניין! זה נראה ממש כמו פונקציה. נקרא למבנה הזה שיצרנו \"פונקציית ה־generator\".
                                                                                                                                                            \n", " אבל מהו ה־yield המוזר הזה שנמצא שם?\n", "

                                                                                                                                                            " ] @@ -149,7 +148,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", + "

                                                                                                                                                            \n", " לפני שנתהה על קנקנו, בואו ננסה לקרוא לפונקציה ונראה מה היא מחזירה:\n", "

                                                                                                                                                            " ] @@ -167,7 +166,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", + "

                                                                                                                                                            \n", " אומנם למדנו שלא אומרים איכס על פונקציות, אבל מה קורה פה?\n", "

                                                                                                                                                            " ] @@ -176,9 +175,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", - " בניגוד לפונקציות רגילות, קריאה ל־generator לא מחזירה ערך מייד.
                                                                                                                                                            \n", - " במקום ערך היא מחזירה מעין סמן, כמו בקובץ, שאפשר לדמיין כחץ שמצביע על השורה הראשונה של הפונקציה.
                                                                                                                                                            \n", + "

                                                                                                                                                            \n", + " בניגוד לפונקציות רגילות, קריאה ל־generator לא מחזירה ערך מייד.
                                                                                                                                                            \n", + " במקום ערך היא מחזירה מעין סמן, כמו בקובץ, שאפשר לדמיין כחץ שמצביע על השורה הראשונה של הפונקציה.
                                                                                                                                                            \n", " נשמור את הסמן על משתנה:\n", "

                                                                                                                                                            " ] @@ -196,8 +195,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", - " בעקבות הקריאה ל־silly_generator נוצר לנו סמן שמצביע כרגע על השורה a = 1.
                                                                                                                                                            \n", + "

                                                                                                                                                            \n", + " בעקבות הקריאה ל־silly_generator נוצר לנו סמן שמצביע כרגע על השורה a = 1.
                                                                                                                                                            \n", " המינוח המקצועי לסמן הזה הוא generator iterator.\n", "

                                                                                                                                                            " ] @@ -206,16 +205,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"תוכן" + "\"תוכן" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", - " אחרי שהרצנו את השורה our_generator = silly_generator(), הסמן המדובר נשמר במשתנה בשם our_generator.
                                                                                                                                                            \n", - " זה זמן מצוין לבקש מה־generator להחזיר ערך.
                                                                                                                                                            \n", + "

                                                                                                                                                            \n", + " אחרי שהרצנו את השורה our_generator = silly_generator(), הסמן המדובר נשמר במשתנה בשם our_generator.
                                                                                                                                                            \n", + " זה זמן מצוין לבקש מה־generator להחזיר ערך.
                                                                                                                                                            \n", " נעשה זאת בעזרת הפונקציה הפייתונית next:\n", "

                                                                                                                                                            " ] @@ -234,12 +233,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                            \n", - " כדי להבין מה התרחש נצטרך להבין שני דברים חשובים שקשורים ל־generators:
                                                                                                                                                            \n", + "

                                                                                                                                                            \n", + " כדי להבין מה התרחש נצטרך להבין שני דברים חשובים שקשורים ל־generators:
                                                                                                                                                            \n", "

                                                                                                                                                            \n", - "
                                                                                                                                                              \n", - "
                                                                                                                                                            1. קריאה ל־next היא כמו לחיצה על \"נגן\" (Play) – היא גורמת לסמן לרוץ עד שהוא מגיע לשורה של החזרת ערך.
                                                                                                                                                            2. \n", - "
                                                                                                                                                            3. מילת המפתח yield דומה למילת המפתח return – היא מפסיקה את ריצת הסמן, ומחזירה את הערך שמופיע אחריה.
                                                                                                                                                            4. \n", + "
                                                                                                                                                                \n", + "
                                                                                                                                                              1. קריאה ל־next היא כמו לחיצה על \"נגן\" (Play) – היא גורמת לסמן לרוץ עד שהוא מגיע לשורה של החזרת ערך.
                                                                                                                                                              2. \n", + "
                                                                                                                                                              3. מילת המפתח yield דומה למילת המפתח return – היא מפסיקה את ריצת הסמן, ומחזירה את הערך שמופיע אחריה.
                                                                                                                                                              4. \n", "
                                                                                                                                                              " ] }, @@ -247,12 +246,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                              \n", - " אז היה לנו סמן שהצביע על השורה הראשונה. לחצנו Play, והוא הריץ את הקוד עד שהוא הגיע לנקודה שבה מחזירים ערך.
                                                                                                                                                              \n", + "

                                                                                                                                                              \n", + " אז היה לנו סמן שהצביע על השורה הראשונה. לחצנו Play, והוא הריץ את הקוד עד שהוא הגיע לנקודה שבה מחזירים ערך.
                                                                                                                                                              \n", " ההבדל בין פונקציה לבין generator, הוא שכשאנחנו מחזירים ערך בעזרת yield אנחנו \"מקפיאים\" את המצב שבו\n", - " יצאנו מהפונקציה.
                                                                                                                                                              \n", - " ממש כמו ללחוץ על \"Pause\".
                                                                                                                                                              \n", - " כשנקרא ל־next בפעם הבאה – הפונקציה תמשיך לרוץ מאותו המקום שבו השארנו את הסמן, עם אותם ערכי משתנים.
                                                                                                                                                              \n", + " יצאנו מהפונקציה.
                                                                                                                                                              \n", + " ממש כמו ללחוץ על \"Pause\".
                                                                                                                                                              \n", + " כשנקרא ל־next בפעם הבאה – הפונקציה תמשיך לרוץ מאותו המקום שבו השארנו את הסמן, עם אותם ערכי משתנים.
                                                                                                                                                              \n", " עכשיו הסמן מצביע על השורה b = a + 1, ומחכה שמישהו יקרא שוב ל־next כדי שהפונקציה תוכל להמשיך לרוץ:\n", "

                                                                                                                                                              " ] @@ -270,16 +269,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                              \n", + "

                                                                                                                                                              \n", " נסכם מה קרה עד עכשיו:\n", "

                                                                                                                                                              \n", - "\n", - "
                                                                                                                                                                \n", - "
                                                                                                                                                              1. הגדרנו פונקציה בשם silly_generator, שאמורה להחזיר את הערכים 1, 2 ו־[1, 2, 3]. קראנו לה \"פונקציית הגנרטור\".
                                                                                                                                                              2. \n", - "
                                                                                                                                                              3. בעזרת קריאה לפונקציית הגנרטור, יצרנו \"סמן\" (generator iterator) שנקרא our_generator ומצביע לשורה הראשונה בפונקציה.
                                                                                                                                                              4. \n", - "
                                                                                                                                                              5. בעזרת קריאה ל־next על ה־generator iterator, הרצנו את הסמן עד שה־generator החזיר ערך.
                                                                                                                                                              6. \n", - "
                                                                                                                                                              7. למדנו ש־generator־ים מחזירים ערכים בעיקר בעזרת yield – שמחזיר ערך ושומר את המצב שבו הפונקציה עצרה.
                                                                                                                                                              8. \n", - "
                                                                                                                                                              9. קראנו שוב ל־next על ה־generator iterator, וראינו שהוא ממשיך מהמקום שבו ה־generator הפסיק לרוץ פעם קודמת.
                                                                                                                                                              10. \n", + "
                                                                                                                                                                  \n", + "
                                                                                                                                                                1. הגדרנו פונקציה בשם silly_generator, שאמורה להחזיר את הערכים 1, 2 ו־[1, 2, 3]. קראנו לה \"פונקציית הגנרטור\".
                                                                                                                                                                2. \n", + "
                                                                                                                                                                3. בעזרת קריאה לפונקציית הגנרטור, יצרנו \"סמן\" (generator iterator) שנקרא our_generator ומצביע לשורה הראשונה בפונקציה.
                                                                                                                                                                4. \n", + "
                                                                                                                                                                5. בעזרת קריאה ל־next על ה־generator iterator, הרצנו את הסמן עד שה־generator החזיר ערך.
                                                                                                                                                                6. \n", + "
                                                                                                                                                                7. למדנו ש־generator־ים מחזירים ערכים בעיקר בעזרת yield – שמחזיר ערך ושומר את המצב שבו הפונקציה עצרה.
                                                                                                                                                                8. \n", + "
                                                                                                                                                                9. קראנו שוב ל־next על ה־generator iterator, וראינו שהוא ממשיך מהמקום שבו ה־generator הפסיק לרוץ פעם קודמת.
                                                                                                                                                                10. \n", "
                                                                                                                                                                " ] }, @@ -287,21 +285,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                \n", - "
                                                                                                                                                                \n", - " \"תרגול\" \n", - "
                                                                                                                                                                \n", - "
                                                                                                                                                                \n", - "

                                                                                                                                                                \n", + "

                                                                                                                                                                \n", + "
                                                                                                                                                                \n", + "\"תרגול\"\n", + "
                                                                                                                                                                \n", + "
                                                                                                                                                                \n", + "

                                                                                                                                                                \n", " תוכלו לחזות מה יקרה אם נקרא שוב ל־next(our_generator)?\n", "

                                                                                                                                                                \n", - "
                                                                                                                                                                \n", - "
                                                                                                                                                                \n", - "

                                                                                                                                                                \n", - " חשוב!
                                                                                                                                                                \n", + "

                                                                                                                                                                \n", + "
                                                                                                                                                                \n", + "

                                                                                                                                                                \n", + "חשוב!
                                                                                                                                                                \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                \n", - "
                                                                                                                                                                \n", + "
                                                                                                                                                                \n", "
                                                                                                                                                                " ] }, @@ -309,7 +307,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                \n", + "

                                                                                                                                                                \n", " ננסה:\n", "

                                                                                                                                                                " ] @@ -327,10 +325,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                \n", - " יופי! הכל הלך כמצופה.
                                                                                                                                                                \n", - " אבל מה צופן לנו העתיד?
                                                                                                                                                                \n", - " בפעם הבאה שנבקש ערך מהפונקציה, הסמן שלנו ירוץ הלאה ולא ייתקל ב־yield.
                                                                                                                                                                \n", + "

                                                                                                                                                                \n", + " יופי! הכל הלך כמצופה.
                                                                                                                                                                \n", + " אבל מה צופן לנו העתיד?
                                                                                                                                                                \n", + " בפעם הבאה שנבקש ערך מהפונקציה, הסמן שלנו ירוץ הלאה ולא ייתקל ב־yield.
                                                                                                                                                                \n", " במקרה כזה, נקבל שגיאת StopIteration, שמבשרת לנו ש־next לא הצליח לחלץ מה־generator את הערך הבא.\n", "

                                                                                                                                                                " ] @@ -348,10 +346,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                \n", - " מובן שאין סיבה להילחץ.
                                                                                                                                                                \n", - " במקרה הזה אפילו לא מדובר במשהו רע – פשוט כילינו את כל הערכים מה־generator iterator שלנו.
                                                                                                                                                                \n", - " פונקציית ה־generator עדיין קיימת!
                                                                                                                                                                \n", + "

                                                                                                                                                                \n", + " מובן שאין סיבה להילחץ.
                                                                                                                                                                \n", + " במקרה הזה אפילו לא מדובר במשהו רע – פשוט כילינו את כל הערכים מה־generator iterator שלנו.
                                                                                                                                                                \n", + " פונקציית ה־generator עדיין קיימת!
                                                                                                                                                                \n", " אפשר ליצור עוד generator iterator אם נרצה, ולקבל את כל הערכים שנמצאים בו באותה צורה:\n", "

                                                                                                                                                                " ] @@ -372,9 +370,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                \n", - " אבל כשחושבים על זה, זה קצת מגוחך.
                                                                                                                                                                \n", - " בכל פעם שנרצה להשיג את הערך הבא נצטרך לרשום next?
                                                                                                                                                                \n", + "

                                                                                                                                                                \n", + " אבל כשחושבים על זה, זה קצת מגוחך.
                                                                                                                                                                \n", + " בכל פעם שנרצה להשיג את הערך הבא נצטרך לרשום next?
                                                                                                                                                                \n", " חייבת להיות דרך טובה יותר!\n", "

                                                                                                                                                                " ] @@ -383,23 +381,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### כל generator הוא גם iterable" + "### כל generator הוא גם iterable" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### for" + "#### for" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                \n", - " אז למעשה, יש יותר מדרך טובה אחת להשיג את כל הערכים שיוצאים מ־generator מסוים.
                                                                                                                                                                \n", - " כהקדמה, נניח פה עובדה שלא תשאיר אתכם אדישים: ה־generator iterator הוא... iterable! הפתעת השנה, אני יודע!
                                                                                                                                                                \n", + "

                                                                                                                                                                \n", + " אז למעשה, יש יותר מדרך טובה אחת להשיג את כל הערכים שיוצאים מ־generator מסוים.
                                                                                                                                                                \n", + " כהקדמה, נניח פה עובדה שלא תשאיר אתכם אדישים: ה־generator iterator הוא... iterable! הפתעת השנה, אני יודע!
                                                                                                                                                                \n", " אמנם אי אפשר לפנות לאיברים שלו לפי מיקום, אך בהחלט אפשר לעבור עליהם בעזרת לולאת for, לדוגמה:\n", "

                                                                                                                                                                " ] @@ -419,17 +417,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                \n", - " מה מתרחש כאן?
                                                                                                                                                                \n", - " אנחנו מבקשים מלולאת ה־for לעבור על ה־generator iterator שלנו.
                                                                                                                                                                \n", + "

                                                                                                                                                                \n", + " מה מתרחש כאן?
                                                                                                                                                                \n", + " אנחנו מבקשים מלולאת ה־for לעבור על ה־generator iterator שלנו.
                                                                                                                                                                \n", " ה־for עושה עבורנו את העבודה אוטומטית:\n", "

                                                                                                                                                                \n", - "\n", - "
                                                                                                                                                                  \n", - "
                                                                                                                                                                1. הוא מבקש את האיבר הבא מה־generator iterator באמצעות next.
                                                                                                                                                                2. \n", - "
                                                                                                                                                                3. הוא מכניס את האיבר שהוא קיבל מה־generator ל־item.
                                                                                                                                                                4. \n", - "
                                                                                                                                                                5. הוא מבצע את גוף הלולאה פעם אחת עבור האיבר שנמצא ב־item.
                                                                                                                                                                6. \n", - "
                                                                                                                                                                7. הוא חוזר לראש הלולאה שוב, ומנסה לקבל את האיבר הבא באמצעות next. כך עד שייגמרו האיברים ב־generator iterator.
                                                                                                                                                                8. \n", + "
                                                                                                                                                                    \n", + "
                                                                                                                                                                  1. הוא מבקש את האיבר הבא מה־generator iterator באמצעות next.
                                                                                                                                                                  2. \n", + "
                                                                                                                                                                  3. הוא מכניס את האיבר שהוא קיבל מה־generator ל־item.
                                                                                                                                                                  4. \n", + "
                                                                                                                                                                  5. הוא מבצע את גוף הלולאה פעם אחת עבור האיבר שנמצא ב־item.
                                                                                                                                                                  6. \n", + "
                                                                                                                                                                  7. הוא חוזר לראש הלולאה שוב, ומנסה לקבל את האיבר הבא באמצעות next. כך עד שייגמרו האיברים ב־generator iterator.
                                                                                                                                                                  8. \n", "
                                                                                                                                                                  " ] }, @@ -437,8 +434,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", - " שימו לב שהעובדות שלמדנו בנוגע לאותו \"סמן\" יבואו לידי ביטוי גם כאן.
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + " שימו לב שהעובדות שלמדנו בנוגע לאותו \"סמן\" יבואו לידי ביטוי גם כאן.
                                                                                                                                                                  \n", " הרצה נוספת של הלולאה על אותו סמן לא תדפיס יותר איברים, כיוון שהסמן מצביע כעת על סוף פונקציית ה־generator:\n", "

                                                                                                                                                                  " ] @@ -457,7 +454,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", " למזלנו, לולאות for יודעות לטפל בעצמן בשגיאת StopIteration, ולכן שגיאה שכזו לא תקפוץ לנו במקרה הזה.\n", "

                                                                                                                                                                  " ] @@ -466,14 +463,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### המרת טיפוסים" + "#### המרת טיפוסים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", " דרך אחרת, לדוגמה, היא לבקש להמיר את ה־generator iterator לסוג משתנה אחר שהוא גם iterable:\n", "

                                                                                                                                                                  " ] @@ -493,8 +490,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", - " בקוד שלמעלה, השתמשנו בפונקציה list שיודעת להמיר ערכים iterable־ים לרשימות.
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + " בקוד שלמעלה, השתמשנו בפונקציה list שיודעת להמיר ערכים iterable־ים לרשימות.
                                                                                                                                                                  \n", " שימו לב שמה שלמדנו בנוגע ל\"סמן\" יבוא לידי ביטוי גם בהמרות:\n", "

                                                                                                                                                                  " ] @@ -512,21 +509,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שימושים פרקטיים" + "### שימושים פרקטיים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### חיסכון בזיכרון" + "#### חיסכון בזיכרון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", "נכתוב פונקציה רגילה שמקבלת מספר שלם, ומחזירה רשימה של כל המספרים השלמים מ־0 ועד אותו מספר (נשמע לכם מוכר?):\n", "

                                                                                                                                                                  " ] @@ -554,9 +551,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", - " בפונקציה הזו אנחנו יוצרים רשימת מספרים חדשה, המכילה את כל המספרים בין 0 לבין המספר שהועבר לפרמטר upper_limit.
                                                                                                                                                                  \n", - " אך ישנה בעיה חמורה – הפעלת הפונקציה גורמת לניצול משאבים רבים!
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + " בפונקציה הזו אנחנו יוצרים רשימת מספרים חדשה, המכילה את כל המספרים בין 0 לבין המספר שהועבר לפרמטר upper_limit.
                                                                                                                                                                  \n", + " אך ישנה בעיה חמורה – הפעלת הפונקציה גורמת לניצול משאבים רבים!
                                                                                                                                                                  \n", " אם נכניס כארגומנט 1,000 – נצטרך להחזיק רשימה המכילה 1,000 איברים שונים, ואם נכניס מספר גדול מדי – עלול להיגמר לנו הזיכרון.\n", "

                                                                                                                                                                  " ] @@ -565,8 +562,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", - " אבל איזו סיבה יש לנו להחזיק בזיכרון את רשימת כל המספרים?
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + " אבל איזו סיבה יש לנו להחזיק בזיכרון את רשימת כל המספרים?
                                                                                                                                                                  \n", " אם לא עולה צורך מובהק שכזה, ייתכן שעדיף להחזיק בזיכרון מספר אחד בלבד בכל פעם, ולהחזירו מייד בעזרת generator:\n", "

                                                                                                                                                                  " ] @@ -593,12 +590,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", - " שימו לב כמה הגרסה הזו אלגנטית יותר!
                                                                                                                                                                  \n", - " בכל פעם אנחנו פשוט שולחים את ערכו של מספר אחד (current_number) החוצה.
                                                                                                                                                                  \n", - " כשמבקשים את הערך הבא מה־generator iterator, פונקציית ה־generator חוזרת לעבוד מהנקודה שבה היא עצרה:
                                                                                                                                                                  \n", - " היא מעלה את ערכו של המספר הנוכחי, בודקת אם הוא נמוך מ־upper_limit, ושולחת גם אותו החוצה.
                                                                                                                                                                  \n", - " בשיטה הזו, my_range(numbers) לא מחזירה לנו רשימה של התוצאות – אלא generator iterator שמחזיר ערך אחד בכל פעם.
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + " שימו לב כמה הגרסה הזו אלגנטית יותר!
                                                                                                                                                                  \n", + " בכל פעם אנחנו פשוט שולחים את ערכו של מספר אחד (current_number) החוצה.
                                                                                                                                                                  \n", + " כשמבקשים את הערך הבא מה־generator iterator, פונקציית ה־generator חוזרת לעבוד מהנקודה שבה היא עצרה:
                                                                                                                                                                  \n", + " היא מעלה את ערכו של המספר הנוכחי, בודקת אם הוא נמוך מ־upper_limit, ושולחת גם אותו החוצה.
                                                                                                                                                                  \n", + " בשיטה הזו, my_range(numbers) לא מחזירה לנו רשימה של התוצאות – אלא generator iterator שמחזיר ערך אחד בכל פעם.
                                                                                                                                                                  \n", " כך אנחנו לעולם לא מחזיקים בזיכרון 1,000 מספרים בו־זמנית.\n", "

                                                                                                                                                                  " ] @@ -607,22 +604,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                  \n", - "
                                                                                                                                                                  \n", - " \"תרגול\" \n", - "
                                                                                                                                                                  \n", - "
                                                                                                                                                                  \n", - "

                                                                                                                                                                  \n", - " לפניכם פונקציה שמקבלת רשימה, ומחזירה עבור כל מספר ברשימה את ערכו בריבוע.
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + "
                                                                                                                                                                  \n", + "\"תרגול\"\n", + "
                                                                                                                                                                  \n", + "
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + " לפניכם פונקציה שמקבלת רשימה, ומחזירה עבור כל מספר ברשימה את ערכו בריבוע.
                                                                                                                                                                  \n", " זוהי גרסה מעט בזבזנית שמשתמשת בהרבה זיכרון. תוכלו להמיר אותה להיות generator?\n", "

                                                                                                                                                                  \n", - "
                                                                                                                                                                  \n", - "
                                                                                                                                                                  \n", - "

                                                                                                                                                                  \n", - " חשוב!
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + "
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + "חשוב!
                                                                                                                                                                  \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                  \n", - "
                                                                                                                                                                  \n", + "
                                                                                                                                                                  \n", "
                                                                                                                                                                  " ] }, @@ -647,16 +644,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### תשובות חלקיות" + "#### תשובות חלקיות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", - " לעיתים ניאלץ לבצע חישוב ארוך, שהשלמתו תימשך זמן רב מאוד.
                                                                                                                                                                  \n", - " במקרה כזה, נוכל להשתמש ב־generator כדי לקבל חלק מהתוצאה בזמן אמת,
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + " לעיתים ניאלץ לבצע חישוב ארוך, שהשלמתו תימשך זמן רב מאוד.
                                                                                                                                                                  \n", + " במקרה כזה, נוכל להשתמש ב־generator כדי לקבל חלק מהתוצאה בזמן אמת,
                                                                                                                                                                  \n", " בזמן שבפונקציה \"רגילה\" נצטרך להמתין עד סיום החישוב כולו.\n", "

                                                                                                                                                                  " ] @@ -665,9 +662,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", - " שלשה פיתגורית, לדוגמה, היא שלישיית מספרים שלמים וחיוביים, $a$, $b$ ו־$c$, שעונים על הדרישה $a^2 + b^2 = c^2$.
                                                                                                                                                                  \n", - " אם כך, כדי ששלושה מספרים שאנחנו בוחרים ייחשבו שלשה פיתגורית,
                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", + " שלשה פיתגורית, לדוגמה, היא שלישיית מספרים שלמים וחיוביים, $a$, $b$ ו־$c$, שעונים על הדרישה $a^2 + b^2 = c^2$.
                                                                                                                                                                  \n", + " אם כך, כדי ששלושה מספרים שאנחנו בוחרים ייחשבו שלשה פיתגורית,
                                                                                                                                                                  \n", " הסכום של ריבוע המספר הראשון וריבוע המספר השני, אמור להיות שווה לערכו של המספר השלישי בריבוע.\n", "

                                                                                                                                                                  " ] @@ -676,16 +673,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                  \n", + "

                                                                                                                                                                  \n", " אלו דוגמאות לשלשות פיתגוריות:\n", "

                                                                                                                                                                  \n", - "\n", - "
                                                                                                                                                                    \n", - "
                                                                                                                                                                  • $(3, 4, 5)$, כיוון ש־$9 + 16 = 25$.
                                                                                                                                                                    \n", + "
                                                                                                                                                                      \n", + "
                                                                                                                                                                    • $(3, 4, 5)$, כיוון ש־$9 + 16 = 25$.
                                                                                                                                                                      \n", " 9 הוא 3 בריבוע, 16 הוא 4 בריבוע ו־25 הוא 5 בריבוע.\n", "
                                                                                                                                                                    • \n", - "
                                                                                                                                                                    • $(5, 12, 13)$, כיוון ש־$25 + 144 = 169$.
                                                                                                                                                                    • \n", - "
                                                                                                                                                                    • $(8, 15, 17)$, כיוון ש־$64 + 225 = 289$.
                                                                                                                                                                    • \n", + "
                                                                                                                                                                    • $(5, 12, 13)$, כיוון ש־$25 + 144 = 169$.
                                                                                                                                                                    • \n", + "
                                                                                                                                                                    • $(8, 15, 17)$, כיוון ש־$64 + 225 = 289$.
                                                                                                                                                                    • \n", "
                                                                                                                                                                    " ] }, @@ -693,7 +689,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", " ננסה למצוא את כל השלשות הפיתגוריות מתחת ל־10,000 בעזרת קוד שרץ על כל השלשות האפשריות:\n", "

                                                                                                                                                                    " ] @@ -722,17 +718,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", - " \"אזהרה!\" \n", - "
                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", - "

                                                                                                                                                                    \n", - " הרצת התא הקודם תתקע את המחברת (חישוב התוצאה יימשך זמן רב).
                                                                                                                                                                    \n", - " כדי להיות מסוגלים להריץ את התאים הבאים, לחצו 00 לאחר הרצת התא, ובחרו Restart.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", + "\"אזהרה!\"\n", + "
                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " הרצת התא הקודם תתקע את המחברת (חישוב התוצאה יימשך זמן רב).
                                                                                                                                                                    \n", + " כדי להיות מסוגלים להריץ את התאים הבאים, לחצו 00 לאחר הרצת התא, ובחרו Restart.
                                                                                                                                                                    \n", " אל דאגה – האתחול יתבצע אך ורק עבור המחברת, ולא עבור מחשב.\n", "

                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", "
                                                                                                                                                                    " ] }, @@ -740,9 +736,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " יו, כמה זמן נמשכת הרצת הקוד הזה... 😴
                                                                                                                                                                    \n", - " הלוואי שעד שהקוד הזה היה מסיים היינו מקבלים לפחות חלק מהתוצאות!
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " יו, כמה זמן נמשכת הרצת הקוד הזה... 😴
                                                                                                                                                                    \n", + " הלוואי שעד שהקוד הזה היה מסיים היינו מקבלים לפחות חלק מהתוצאות!
                                                                                                                                                                    \n", " נפנה ל־generator־ים לעזרה:\n", "

                                                                                                                                                                    " ] @@ -769,9 +765,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " איך זה קרה? קיבלנו את התשובה בתוך שבריר שנייה!
                                                                                                                                                                    \n", - " ובכן, זה לא מדויק – קיבלנו חלק מהתשובות. שימו לב שהקוד ממשיך להדפיס :)
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " איך זה קרה? קיבלנו את התשובה בתוך שבריר שנייה!
                                                                                                                                                                    \n", + " ובכן, זה לא מדויק – קיבלנו חלק מהתשובות. שימו לב שהקוד ממשיך להדפיס :)
                                                                                                                                                                    \n", "

                                                                                                                                                                    " ] }, @@ -779,10 +775,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " להזכירכם, ה־generator שולח את התוצאה החוצה מייד כשהוא מוצא שלשה אחת,
                                                                                                                                                                    \n", - " וה־for מקבל מה־generator iterable כל שלשה ברגע שהיא נמצאה.
                                                                                                                                                                    \n", - " ברגע שה־for מקבל שלשה, הוא מבצע את גוף הלולאה עבור אותה שלשה, ורק אז מבקש מ־generator את האיבר הבא.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " להזכירכם, ה־generator שולח את התוצאה החוצה מייד כשהוא מוצא שלשה אחת,
                                                                                                                                                                    \n", + " וה־for מקבל מה־generator iterable כל שלשה ברגע שהיא נמצאה.
                                                                                                                                                                    \n", + " ברגע שה־for מקבל שלשה, הוא מבצע את גוף הלולאה עבור אותה שלשה, ורק אז מבקש מ־generator את האיבר הבא.
                                                                                                                                                                    \n", " בגלל האופי של generators, הקוד בתא האחרון מדפיס לנו כל שלשה ברגע שהוא מצא אותה, ולא מחכה עד שיימצאו כל השלשות.\n", "

                                                                                                                                                                    " ] @@ -791,14 +787,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### תרגול ביניים: מספרים פראיים" + "#### תרגול ביניים: מספרים פראיים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", " \"פירוק לגורמים של מספר שלם\" היא בעיה שחישוב פתרונה נמשך זמן רב במחשבים מודרניים.\n", "

                                                                                                                                                                    " ] @@ -807,10 +803,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " עליכם לכתוב פונקציה שמקבלת מספר חיובי שלם $n$, ומחזירה קבוצת מספרים שמכפלתם (תוצאת הכפל ביניהם) היא $n$.
                                                                                                                                                                    \n", - " לדוגמה, המספר 1,386 בנוי מהמכפלה של קבוצת המספרים $2 \\cdot 3 \\cdot 3 \\cdot 7 \\cdot 11$.
                                                                                                                                                                    \n", - " כל מספר בקבוצת המספרים הזו חייב להיות ראשוני.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " עליכם לכתוב פונקציה שמקבלת מספר חיובי שלם $n$, ומחזירה קבוצת מספרים שמכפלתם (תוצאת הכפל ביניהם) היא $n$.
                                                                                                                                                                    \n", + " לדוגמה, המספר 1,386 בנוי מהמכפלה של קבוצת המספרים $2 \\cdot 3 \\cdot 3 \\cdot 7 \\cdot 11$.
                                                                                                                                                                    \n", + " כל מספר בקבוצת המספרים הזו חייב להיות ראשוני.
                                                                                                                                                                    \n", " להזכירכם: מספר ראשוני הוא מספר שאין לו מחלקים חוץ מעצמו ומ־1.\n", "

                                                                                                                                                                    " ] @@ -819,8 +815,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " הניחו שהמספר שהתקבל אינו ראשוני.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " הניחו שהמספר שהתקבל אינו ראשוני.
                                                                                                                                                                    \n", " מה היתרון של generator על פני פונקציה רגילה שעושה אותו דבר?\n", "

                                                                                                                                                                    " ] @@ -829,8 +825,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " רמז: אם תנסו לחלק את המספר ב־2, ואז ב־3 (וכן הלאה), בסופו של דבר תגיעו למחלק ראשוני של המספר.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " רמז: אם תנסו לחלק את המספר ב־2, ואז ב־3 (וכן הלאה), בסופו של דבר תגיעו למחלק ראשוני של המספר.
                                                                                                                                                                    \n", " רמז עבה: בכל פעם שמצאתם מחלק אחד למספר, חלקו את המספר במחלק, והתחילו את החיפוש מחדש. מתי עליכם לעצור?\n", "

                                                                                                                                                                    " ] @@ -839,16 +835,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### אוספים אין־סופיים" + "#### אוספים אין־סופיים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " עבור בעיות מסוימות, נרצה להיות מסוגלים להחזיר אין־סוף תוצאות.
                                                                                                                                                                    \n", - " ניקח כדוגמה לסדרה אין־סופית את סדרת פיבונאצ'י, שבה כל איבר הוא סכום זוג האיברים הקודמים לו:
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " עבור בעיות מסוימות, נרצה להיות מסוגלים להחזיר אין־סוף תוצאות.
                                                                                                                                                                    \n", + " ניקח כדוגמה לסדרה אין־סופית את סדרת פיבונאצ'י, שבה כל איבר הוא סכום זוג האיברים הקודמים לו:
                                                                                                                                                                    \n", " $1, 1, 2, 3, 5, 8, \\ldots$\n", "

                                                                                                                                                                    " ] @@ -857,8 +853,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " נממש פונקציה שמחזירה לנו את סדרת פיבונאצ'י.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " נממש פונקציה שמחזירה לנו את סדרת פיבונאצ'י.
                                                                                                                                                                    \n", " בפונקציה רגילה אין לנו אפשרות להחזיר מספר אין־סופי של איברים, ולכן נצטרך להחליט על מספר האיברים המרבי שנרצה להחזיר:\n", "

                                                                                                                                                                    " ] @@ -887,8 +883,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " לעומת זאת, ל־generators לא חייב להיות סוף מוגדר.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " לעומת זאת, ל־generators לא חייב להיות סוף מוגדר.
                                                                                                                                                                    \n", " נשתמש ב־while True שתמיד מתקיים, כדי שבסופו של דבר – תמיד נגיע ל־yield: \n", "

                                                                                                                                                                    " ] @@ -921,17 +917,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", - " \"אזהרה!\" \n", - "
                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", - "

                                                                                                                                                                    \n", - " generators אין־סופיים יכולים לגרום בקלות ללולאות אין־סופיות, גם בלולאות for.
                                                                                                                                                                    \n", - " שימו לב לצורת ההתעסקות העדינה בדוגמאות למעלה.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", + "\"אזהרה!\"\n", + "
                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " generators אין־סופיים יכולים לגרום בקלות ללולאות אין־סופיות, גם בלולאות for.
                                                                                                                                                                    \n", + " שימו לב לצורת ההתעסקות העדינה בדוגמאות למעלה.
                                                                                                                                                                    \n", " הרצת לולאת for ישירות על ה־generator iterator הייתה מכניסה אותנו ללולאה אין־סופית.\n", "

                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", "
                                                                                                                                                                    " ] }, @@ -939,21 +935,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", - "

                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", " כתבו generator שמחזיר את כל המספרים השלמים הגדולים מ־0.\n", "

                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", - "

                                                                                                                                                                    \n", - " חשוב!
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + "חשוב!
                                                                                                                                                                    \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", "
                                                                                                                                                                    " ] }, @@ -961,14 +957,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ריבוי generator iterators" + "### ריבוי generator iterators" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", " נגדיר generator פשוט שמחזיר את האיברים 1, 2 ו־3:\n", "

                                                                                                                                                                    " ] @@ -989,7 +985,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", " ניצור שני generator iterators (\"סמנים\") שונים שמצביעים לשורה הראשונה של ה־generator שמופיע למעלה:\n", "

                                                                                                                                                                    " ] @@ -1008,8 +1004,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " בעניין זה, חשוב להבין שכל אחד מה־generator iterators הוא \"חץ\" נפרד שמצביע לשורה הראשונה ב־simple_generator.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " בעניין זה, חשוב להבין שכל אחד מה־generator iterators הוא \"חץ\" נפרד שמצביע לשורה הראשונה ב־simple_generator.
                                                                                                                                                                    \n", " אם נבקש מכל אחד מהם להחזיר ערך, נקבל משניהם את 1, ואותו חץ דמיוני יעבור בשני ה־generator iterators להמתין בשורה השנייה:\n", "

                                                                                                                                                                    " ] @@ -1028,7 +1024,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", " נוכל לקדם את first_gen, לדוגמה, לסוף הפונקציה:\n", "

                                                                                                                                                                    " ] @@ -1047,9 +1043,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " אבל second_gen הוא חץ נפרד, שעדיין מצביע לשורה השנייה של פונקציית ה־generator.
                                                                                                                                                                    \n", - " אם נבקש ממנו את הערך הבא, הוא ימשיך את המסע מהערך 2:
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " אבל second_gen הוא חץ נפרד, שעדיין מצביע לשורה השנייה של פונקציית ה־generator.
                                                                                                                                                                    \n", + " אם נבקש ממנו את הערך הבא, הוא ימשיך את המסע מהערך 2:
                                                                                                                                                                    \n", "

                                                                                                                                                                    " ] }, @@ -1066,10 +1062,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " ממצב זה נוכל להסיק שאפשר ליצור יותר מ־generator iterator אחד עבור כל פונקציית generator.
                                                                                                                                                                    \n", - " כל אחד מה־generator iterators יחזיק תמונת מצב עצמאית של המקום שבו עצר הסמן ושל ערכי המשתנים.
                                                                                                                                                                    \n", - " ההתנהלות של כל generator iterator תקרה בנפרד, ולא תושפע בשום צורה מה־generator iterators האחרים.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " ממצב זה נוכל להסיק שאפשר ליצור יותר מ־generator iterator אחד עבור כל פונקציית generator.
                                                                                                                                                                    \n", + " כל אחד מה־generator iterators יחזיק תמונת מצב עצמאית של המקום שבו עצר הסמן ושל ערכי המשתנים.
                                                                                                                                                                    \n", + " ההתנהלות של כל generator iterator תקרה בנפרד, ולא תושפע בשום צורה מה־generator iterators האחרים.
                                                                                                                                                                    \n", "

                                                                                                                                                                    " ] }, @@ -1077,15 +1073,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הבדלי מינוח" + "### הבדלי מינוח" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " בשלב זה יש לנו הרבה מבנים שאפשר לרוץ עליהם, וכל המינוח סביב עניין האיטרביליות נעשה מעט מבלבל.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " בשלב זה יש לנו הרבה מבנים שאפשר לרוץ עליהם, וכל המינוח סביב עניין האיטרביליות נעשה מעט מבלבל.
                                                                                                                                                                    \n", " ננסה לעשות סדר בדברים:\n", "

                                                                                                                                                                    " ] @@ -1094,23 +1090,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", "
                                                                                                                                                                    Iterable
                                                                                                                                                                    \n", " אם ערך מסוים הוא iterable, אפשר לפרק אותו ליחידות קטנות יותר, ולהתייחס לכל יחידה בנפרד.\n", "
                                                                                                                                                                    \n", "
                                                                                                                                                                    Iteration, חִזְרוּר
                                                                                                                                                                    ביצוע יחיד של גוף הלולאה עבור ערך מסוים.
                                                                                                                                                                    \n", "
                                                                                                                                                                    Iterator
                                                                                                                                                                    \n", - " ערך שמייצג זרם של מידע, ומתוכו מאחזרים ערכים אחרים. אפשר לאחזר ממנו ערך אחד בכל פעם, לפי סדר מסוים, בעזרת next().
                                                                                                                                                                    \n", + " ערך שמייצג זרם של מידע, ומתוכו מאחזרים ערכים אחרים. אפשר לאחזר ממנו ערך אחד בכל פעם, לפי סדר מסוים, בעזרת next().
                                                                                                                                                                    \n", " iterator הוא בהכרח iterable, אך לא כל iterable הוא iterator.\n", "
                                                                                                                                                                    \n", "
                                                                                                                                                                    Sequence
                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", - " כל iterable שאפשר לחלץ ממנו איברים באמצעות פנייה למיקום שלהם (iterable[0]), כמו מחרוזות, רשימות ו־tuple־ים.
                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", + " כל iterable שאפשר לחלץ ממנו איברים באמצעות פנייה למיקום שלהם (iterable[0]), כמו מחרוזות, רשימות ו־tuple־ים.
                                                                                                                                                                    \n", " sequence הוא בהכרח iterable, אך לא כל iterable הוא sequence.\n", "
                                                                                                                                                                    \n", "
                                                                                                                                                                    פונקציית ה־generator
                                                                                                                                                                    פונקציה המכילה yield ומגדירה אילו ערכים יוחזרו מה־generator.
                                                                                                                                                                    \n", "
                                                                                                                                                                    Generator iterator
                                                                                                                                                                    \n", - "
                                                                                                                                                                    \n", + "
                                                                                                                                                                    \n", " iterator שנוצר מתוך פונקציית ה־generator.\n", "
                                                                                                                                                                    \n", "
                                                                                                                                                                    Generator
                                                                                                                                                                    לרוב מתייחס לפונקציית ה־generator, אך יש פעמים שמשתמשים במינוח כדי להתייחס ל־generator iterator.
                                                                                                                                                                    \n", @@ -1121,18 +1117,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## סיכום" + "## סיכום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", - " Generators הם פונקציות שמאפשרות לנו להחזיר סדרות ערכים באופן מדורג.
                                                                                                                                                                    \n", - " כשנקרא לפונקציית generator, היא תחזיר לנו generator iterator שישמש מעין \"סמן\".
                                                                                                                                                                    \n", - " הסמן ישמור \"מצב\" שמתאר את המקום שבו אנחנו שוהים בתוך הפונקציה, ואת הערכים שחושבו במהלך ריצתה עד כה.
                                                                                                                                                                    \n", - " בכל שלב, נוכל לבקש את הערך הבא ב־generator בעזרת קריאה לפונקציה next על ה־generator iterator.
                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", + " Generators הם פונקציות שמאפשרות לנו להחזיר סדרות ערכים באופן מדורג.
                                                                                                                                                                    \n", + " כשנקרא לפונקציית generator, היא תחזיר לנו generator iterator שישמש מעין \"סמן\".
                                                                                                                                                                    \n", + " הסמן ישמור \"מצב\" שמתאר את המקום שבו אנחנו שוהים בתוך הפונקציה, ואת הערכים שחושבו במהלך ריצתה עד כה.
                                                                                                                                                                    \n", + " בכל שלב, נוכל לבקש את הערך הבא ב־generator בעזרת קריאה לפונקציה next על ה־generator iterator.
                                                                                                                                                                    \n", " נוכל גם להשתמש במבנים שיזיזו עבורנו את הסמן, כמו for או המרה לסוג נתונים אחר שגם הוא iterable.\n", "

                                                                                                                                                                    " ] @@ -1141,14 +1137,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                    \n", + "

                                                                                                                                                                    \n", " ל־generators יתרונות רבים:\n", "

                                                                                                                                                                    \n", - "\n", - "
                                                                                                                                                                      \n", - "
                                                                                                                                                                    • אפשר ליצור בעזרתם פונקציות שמחזירות מספר אין־סופי של נתונים.
                                                                                                                                                                    • \n", - "
                                                                                                                                                                    • במקרים מסוימים, נוכל להיעזר בהם כדי לקבל רק חלק מהתוצאות בכל זמן נתון.
                                                                                                                                                                    • \n", - "
                                                                                                                                                                    • שימוש נכון בהם יכול להיות מפתח לחיסכון משמעותי במשאבי התוכנית.
                                                                                                                                                                    • \n", + "
                                                                                                                                                                        \n", + "
                                                                                                                                                                      • אפשר ליצור בעזרתם פונקציות שמחזירות מספר אין־סופי של נתונים.
                                                                                                                                                                      • \n", + "
                                                                                                                                                                      • במקרים מסוימים, נוכל להיעזר בהם כדי לקבל רק חלק מהתוצאות בכל זמן נתון.
                                                                                                                                                                      • \n", + "
                                                                                                                                                                      • שימוש נכון בהם יכול להיות מפתח לחיסכון משמעותי במשאבי התוכנית.
                                                                                                                                                                      • \n", "
                                                                                                                                                                      " ] }, @@ -1156,21 +1151,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### פיצוץ אוכלוסין" + "### פיצוץ אוכלוסין" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                      \n", + "

                                                                                                                                                                      \n", " קראו בוויקיפדיה על דרך החישוב של ספרת הביקורת במספרי הזהות בישראל. \n", "

                                                                                                                                                                      " ] @@ -1179,9 +1174,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                        \n", - "
                                                                                                                                                                      1. ממשו פונקציה שמקבלת מספר זהות ללא ספרת ביקורת, ומחזירה את ספרת הביקורת.
                                                                                                                                                                      2. \n", - "
                                                                                                                                                                      3. ממשו תוכנית המדפיסה את כל מספרי הזהות האפשריים במדינת ישראל. השתמשו בקוד שכתבתם בסעיף הראשון.
                                                                                                                                                                      4. \n", + "
                                                                                                                                                                          \n", + "
                                                                                                                                                                        1. ממשו פונקציה שמקבלת מספר זהות ללא ספרת ביקורת, ומחזירה את ספרת הביקורת.
                                                                                                                                                                        2. \n", + "
                                                                                                                                                                        3. ממשו תוכנית המדפיסה את כל מספרי הזהות האפשריים במדינת ישראל. השתמשו בקוד שכתבתם בסעיף הראשון.
                                                                                                                                                                        4. \n", "
                                                                                                                                                                        " ] }, @@ -1189,16 +1184,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מנה מושלמת לחלוקה" + "### מנה מושלמת לחלוקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                        \n", - " אפשר לחלק רול סושי של 6 יחידות לאדם אחד, ל־2 אנשים, ל־3 אנשים ול־6 אנשים.
                                                                                                                                                                        \n", - " נתעלם ממצבים שבהם כל אדם מקבל רק חתיכת סושי אחת. זה נשמע לי עצוב.
                                                                                                                                                                        \n", + "

                                                                                                                                                                        \n", + " אפשר לחלק רול סושי של 6 יחידות לאדם אחד, ל־2 אנשים, ל־3 אנשים ול־6 אנשים.
                                                                                                                                                                        \n", + " נתעלם ממצבים שבהם כל אדם מקבל רק חתיכת סושי אחת. זה נשמע לי עצוב.
                                                                                                                                                                        \n", " נגדיר \"מנה מושלמת לחלוקה\" כמנה שאם נסכום את כל הצורות לחלק אותה, נקבל את גודל המנה עצמה.\n", "

                                                                                                                                                                        " ] @@ -1207,15 +1202,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                        \n", + "

                                                                                                                                                                        \n", " לדוגמה:\n", "

                                                                                                                                                                        \n", - "\n", - "
                                                                                                                                                                          \n", - "
                                                                                                                                                                        • רול סושי בעל 6 יחידות הוא מנה מושלמת לחלוקה, כיוון שאפשר לחלק אותו לאדם 1, ל־2 אנשים או ל־3 אנשים. $1+2+3=6$.
                                                                                                                                                                        • \n", - "
                                                                                                                                                                        • רול סושי בעל 8 יחידות הוא לא מנה מושלמת לחלוקה, כי אפשר לחלק אותו לאדם 1, ל־2 אנשים או ל־4 אנשים. $1+2+4 \\neq 8$.
                                                                                                                                                                        • \n", - "
                                                                                                                                                                        • רול בעל 12 יחידות גם הוא לא מנה מושלמת לחלוקה – $1 + 2 + 3 + 4 + 6 \\neq 12$.
                                                                                                                                                                        • \n", - "
                                                                                                                                                                        • רול בעל 28 יחידות הוא בהחלט מנה מושלמת לחלוקה – $1 + 2 + 4 + 7 + 14 = 28$.
                                                                                                                                                                        • \n", + "
                                                                                                                                                                            \n", + "
                                                                                                                                                                          • רול סושי בעל 6 יחידות הוא מנה מושלמת לחלוקה, כיוון שאפשר לחלק אותו לאדם 1, ל־2 אנשים או ל־3 אנשים. $1+2+3=6$.
                                                                                                                                                                          • \n", + "
                                                                                                                                                                          • רול סושי בעל 8 יחידות הוא לא מנה מושלמת לחלוקה, כי אפשר לחלק אותו לאדם 1, ל־2 אנשים או ל־4 אנשים. $1+2+4 \\neq 8$.
                                                                                                                                                                          • \n", + "
                                                                                                                                                                          • רול בעל 12 יחידות גם הוא לא מנה מושלמת לחלוקה – $1 + 2 + 3 + 4 + 6 \\neq 12$.
                                                                                                                                                                          • \n", + "
                                                                                                                                                                          • רול בעל 28 יחידות הוא בהחלט מנה מושלמת לחלוקה – $1 + 2 + 4 + 7 + 14 = 28$.
                                                                                                                                                                          • \n", "
                                                                                                                                                                          " ] }, @@ -1223,7 +1217,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                          \n", + "

                                                                                                                                                                          \n", " כתבו תוכנית שמדפיסה באופן אין־סופי את כל גודלי המנות שנחשבים מושלמים לחלוקה.\n", "

                                                                                                                                                                          " ] @@ -1232,22 +1226,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### לחששנית" + "### לחששנית" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                          \n", - " בקובץ resources/logo.jpg מופיע לוגו הקורס, ובתוכו מוכמנים מסרים סודיים אחדים.
                                                                                                                                                                          \n", + "

                                                                                                                                                                          \n", + " בקובץ resources/logo.jpg מופיע לוגו הקורס, ובתוכו מוכמנים מסרים סודיים אחדים.
                                                                                                                                                                          \n", " המסרים הם מחרוזות באורך 5 אותיות לפחות, כתובים באותיות אנגליות קטנות בלבד ומסתיימים בסימן קריאה.\n", "

                                                                                                                                                                          \n", - "\n", - "

                                                                                                                                                                          \n", - " פתחו את הלוגו לקריאה בתצורה בינארית, וחלצו ממנו את המסרים הסודיים.
                                                                                                                                                                          \n", - " זכרו שהקובץ עלול להיות גדול מאוד, ועדיף שלא לקרוא את כולו במכה אחת.
                                                                                                                                                                          \n", - " מצאו באינטרנט עזרה בנוגע לפתיחת קבצים בצורה בינארית ולקריאה מדורגת של הקובץ.
                                                                                                                                                                          \n", + "

                                                                                                                                                                          \n", + " פתחו את הלוגו לקריאה בתצורה בינארית, וחלצו ממנו את המסרים הסודיים.
                                                                                                                                                                          \n", + " זכרו שהקובץ עלול להיות גדול מאוד, ועדיף שלא לקרוא את כולו במכה אחת.
                                                                                                                                                                          \n", + " מצאו באינטרנט עזרה בנוגע לפתיחת קבצים בצורה בינארית ולקריאה מדורגת של הקובץ.
                                                                                                                                                                          \n", " הקפידו שלא להשתמש בטכניקות שלא למדנו (או להוסיף אותן רק בנוסף לפתרון שכזה).\n", "

                                                                                                                                                                          " ] diff --git a/week5/Summary.ipynb b/week5/Summary.ipynb index 5c950e4..031d5ea 100644 --- a/week5/Summary.ipynb +++ b/week5/Summary.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#

                                                                                                                                                                          תרגילים

                                                                                                                                                                          " + "#

                                                                                                                                                                          תרגילים

                                                                                                                                                                          " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                          " ] @@ -36,14 +36,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מלחמה וזהו?" + "## מלחמה וזהו?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                          \n", + "

                                                                                                                                                                          \n", " פתרו את התרגיל \"מלחמה וזהו\" משבוע 4, הפעם עם הידע החדש שרכשתם.\n", "

                                                                                                                                                                          " ] @@ -52,14 +52,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## כלים שלובים" + "## כלים שלובים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                          \n", + "

                                                                                                                                                                          \n", " כתבו פונקציה בשם interleave שמקבלת פרמטר iterable אחד או יותר, ומחזירה רשימה של האיברים שזורים זה בזה.\n", "

                                                                                                                                                                          " ] @@ -68,7 +68,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                          \n", + "

                                                                                                                                                                          \n", "לדוגמה, עבור הקריאה interleave('abc', [1, 2, 3], ('!', '@', '#')) יוחזר הערך: ['a', 1, '!', 'b', 2, '@', 'c', 3, '#'].\n", "

                                                                                                                                                                          " ] @@ -77,7 +77,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                          \n", + "

                                                                                                                                                                          \n", " ממשו גרסה של generator ל־interleave.\n", "

                                                                                                                                                                          " ] @@ -86,15 +86,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## שובו של קשטן" + "## שובו של קשטן" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                          \n", - " בחנות של אדון קשטן ישנו מילון המכיל את כל המוצרים בחנות, ואת המלאי של כל מוצר.
                                                                                                                                                                          \n", + "

                                                                                                                                                                          \n", + " בחנות של אדון קשטן ישנו מילון המכיל את כל המוצרים בחנות, ואת המלאי של כל מוצר.
                                                                                                                                                                          \n", " רשמו פונקציה שמקבלת את המוצרים שהתקבלו במשלוח האחרון, ומעדכנת את המלאי של אדון קשטן בהתאם לכך.\n", "

                                                                                                                                                                          " ] @@ -103,7 +103,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                          \n", + "

                                                                                                                                                                          \n", "לדוגמה:\n", "

                                                                                                                                                                          " ] @@ -112,13 +112,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                            \n", - "
                                                                                                                                                                          • עבור הקריאה add_inventory({'cheese': 2, 'milk': 1}, cheese=3, chocolate=5)
                                                                                                                                                                            \n", + "
                                                                                                                                                                              \n", + "
                                                                                                                                                                            • עבור הקריאה add_inventory({'cheese': 2, 'milk': 1}, cheese=3, chocolate=5)
                                                                                                                                                                              \n", " יוחזר המלאי: {'cheese': 5, 'chocolate': 5, 'milk': 1}\n", - "
                                                                                                                                                                            • \n", - "
                                                                                                                                                                            • עבור הקריאה add_inventory({'refrigerator': 7, 'goat': 1}, honey=2)
                                                                                                                                                                              \n", + "
                                                                                                                                                                            • \n", + "
                                                                                                                                                                            • עבור הקריאה add_inventory({'refrigerator': 7, 'goat': 1}, honey=2)
                                                                                                                                                                              \n", " יוחזר המלאי: {'honey': 2, 'refrigerator': 7, 'goat': 1}\n", - "
                                                                                                                                                                            • \n", + "\n", "
                                                                                                                                                                            " ] }, @@ -126,19 +126,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הארי רציונלי אבל לא נורא" + "## הארי רציונלי אבל לא נורא" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                            \n", - " הספרן שהיה בדרכו להביא לי את העותק הנחשק של \"הארי פוטר והשיטה הרציונלית\" מעד.
                                                                                                                                                                            \n", - " הספרים התעופפו ופרקי הספרים התפזרו לכל עבר.
                                                                                                                                                                            \n", - " בתיקייה resources מצורף קובץ מכווץ ובו כל פרקי הסיפור, אך למרבה הצער שם הקבצים אינו תואם לתוכן שלהם.
                                                                                                                                                                            \n", - " שנו את שמו של כל קובץ כך ששמו החדש יהיה מספר תלתַ־ספרתי שמתאר את מספר הפרק, ואחריו את שם הפרק.
                                                                                                                                                                            \n", - " לדוגמה: עבור הפרק הראשון, שם הקובץ צריך להיות 001 A Day of Very Low Probability.
                                                                                                                                                                            \n", + "

                                                                                                                                                                            \n", + " הספרן שהיה בדרכו להביא לי את העותק הנחשק של \"הארי פוטר והשיטה הרציונלית\" מעד.
                                                                                                                                                                            \n", + " הספרים התעופפו ופרקי הספרים התפזרו לכל עבר.
                                                                                                                                                                            \n", + " בתיקייה resources מצורף קובץ מכווץ ובו כל פרקי הסיפור, אך למרבה הצער שם הקבצים אינו תואם לתוכן שלהם.
                                                                                                                                                                            \n", + " שנו את שמו של כל קובץ כך ששמו החדש יהיה מספר תלתַ־ספרתי שמתאר את מספר הפרק, ואחריו את שם הפרק.
                                                                                                                                                                            \n", + " לדוגמה: עבור הפרק הראשון, שם הקובץ צריך להיות 001 A Day of Very Low Probability.
                                                                                                                                                                            \n", " במהלך התרגיל ייתכן שתצטרכו לשלב עבודה עם כמה ספריות, ובהן כאלו שלא למדנו.\n", "

                                                                                                                                                                            " ] @@ -147,9 +147,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                              \n", - "
                                                                                                                                                                            • פתחו את קובץ ה־zip ידנית לפני תחילת העבודה, וחלצו ממנו את כל הפרקים של הספר.
                                                                                                                                                                            • \n", - "
                                                                                                                                                                            • כדי לדמות תרגיל מהעולם האמיתי, הושתלו כמה בעיות שבהן תתקלו לאחר שתריצו את התוכנה שלכם. פתרו אותן בעזרת תכנות.
                                                                                                                                                                            • \n", + "
                                                                                                                                                                                \n", + "
                                                                                                                                                                              • פתחו את קובץ ה־zip ידנית לפני תחילת העבודה, וחלצו ממנו את כל הפרקים של הספר.
                                                                                                                                                                              • \n", + "
                                                                                                                                                                              • כדי לדמות תרגיל מהעולם האמיתי, הושתלו כמה בעיות שבהן תתקלו לאחר שתריצו את התוכנה שלכם. פתרו אותן בעזרת תכנות.
                                                                                                                                                                              • \n", "
                                                                                                                                                                              " ] }, @@ -157,9 +157,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                              \n", - " טיפ: גבו את הקבצים לפני שתתחילו לעבוד עליהם.
                                                                                                                                                                              \n", - " רמז: אפשר לפתוח קובצי html ידנית, כקובצי טקסט.
                                                                                                                                                                              \n", + "

                                                                                                                                                                              \n", + " טיפ: גבו את הקבצים לפני שתתחילו לעבוד עליהם.
                                                                                                                                                                              \n", + " רמז: אפשר לפתוח קובצי html ידנית, כקובצי טקסט.
                                                                                                                                                                              \n", " רמז 2: כיצד משנים שמות של קבצים באמצעות פייתון?\n", "

                                                                                                                                                                              " ] @@ -168,14 +168,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## פרדוקס יום ההולדת" + "## פרדוקס יום ההולדת" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                              \n", + "

                                                                                                                                                                              \n", " מוצגת להלן אחת מהגרסאות של פרדוקס יום ההולדת:\n", "

                                                                                                                                                                              " ] @@ -184,8 +184,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                              \n", - " מה הסיכוי שבכיתה שבה 23 תלמידים (חחחחח) יציינו שני תלמידים יום הולדת באותו תאריך?
                                                                                                                                                                              \n", + "
                                                                                                                                                                              \n", + " מה הסיכוי שבכיתה שבה 23 תלמידים (חחחחח) יציינו שני תלמידים יום הולדת באותו תאריך?
                                                                                                                                                                              \n", "
                                                                                                                                                                              " ] }, @@ -193,7 +193,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                              \n", + "

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

                                                                                                                                                                              " ] @@ -202,9 +202,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                \n", - "
                                                                                                                                                                              • הילודה מפוזרת באופן שווה לאורך השנה (היא לא, אבל נדמיין שכן).
                                                                                                                                                                              • \n", - "
                                                                                                                                                                              • כשאנחנו אומרים \"תאריך\" אנחנו מתכוונים לצירוף של החודש והיום, ללא התייחסות לשנה.
                                                                                                                                                                                \n", + "
                                                                                                                                                                                  \n", + "
                                                                                                                                                                                • הילודה מפוזרת באופן שווה לאורך השנה (היא לא, אבל נדמיין שכן).
                                                                                                                                                                                • \n", + "
                                                                                                                                                                                • כשאנחנו אומרים \"תאריך\" אנחנו מתכוונים לצירוף של החודש והיום, ללא התייחסות לשנה.
                                                                                                                                                                                  \n", " מי שנולד ב־1 במאי 1992 הוא בעל תאריך יום הולדת זהה למי שנולד ב־1 במאי 1995.
                                                                                                                                                                                • \n", "
                                                                                                                                                                                " ] @@ -213,7 +213,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                \n", + "

                                                                                                                                                                                \n", " הפתרון של ה\"פרדוקס\" מפתיע את רוב האנשים ששומעים עליו לראשונה.\n", "

                                                                                                                                                                                " ] @@ -222,10 +222,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                \n", - " כתבו תוכנה שמגרילה תאריכי יום הולדת עבור 10,000 כיתות, שבכל אחת מהן לומדים 23 תלמידים.
                                                                                                                                                                                \n", - " מהו אחוז הכיתות שבהן ציינו 2 ימי הולדת באותו תאריך? השוו עם הפתרון המוצג בוויקיפדיה.
                                                                                                                                                                                \n", - " דאגו שהפתרון שלכם יתחשב בכך שקיימות שנים מעוברות.
                                                                                                                                                                                \n", + "

                                                                                                                                                                                \n", + " כתבו תוכנה שמגרילה תאריכי יום הולדת עבור 10,000 כיתות, שבכל אחת מהן לומדים 23 תלמידים.
                                                                                                                                                                                \n", + " מהו אחוז הכיתות שבהן ציינו 2 ימי הולדת באותו תאריך? השוו עם הפתרון המוצג בוויקיפדיה.
                                                                                                                                                                                \n", + " דאגו שהפתרון שלכם יתחשב בכך שקיימות שנים מעוברות.
                                                                                                                                                                                \n", "

                                                                                                                                                                                " ] }, @@ -233,7 +233,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                \n", + "

                                                                                                                                                                                \n", " השתמשו בתוכנה שכתבתם כדי לחשב את הסיכויים עבור כיתות שבהן תלמיד אחד, ועד כיתות ישראליות ממוצעות שבהן 366 תלמידים.\n", "

                                                                                                                                                                                " ] diff --git a/week6/1_Sets.ipynb b/week6/1_Sets.ipynb index 7cfd0ba..f21036e 100644 --- a/week6/1_Sets.ipynb +++ b/week6/1_Sets.ipynb @@ -4,29 +4,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# קבוצות" + "# קבוצות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הגדרה" + "## הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                \n", - " קבוצה (או set) בפייתון היא אוסף של איברים שמתאפיינת בתכונות הבאות:\n", + "

                                                                                                                                                                                \n", + "קבוצה (או set) בפייתון היא אוסף של איברים שמתאפיינת בתכונות הבאות:\n", "

                                                                                                                                                                                " ] }, @@ -34,10 +34,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                  \n", - "
                                                                                                                                                                                • לאיברים באוסף אין סדר מוגדר.
                                                                                                                                                                                • \n", - "
                                                                                                                                                                                • ערך לא יכול להופיע יותר מפעם אחת.
                                                                                                                                                                                • \n", - "
                                                                                                                                                                                • כל איבר חייב להיות immutable.
                                                                                                                                                                                • \n", + "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                  • לאיברים באוסף אין סדר מוגדר.
                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                  • ערך לא יכול להופיע יותר מפעם אחת.
                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                  • כל איבר חייב להיות immutable.
                                                                                                                                                                                  • \n", "
                                                                                                                                                                                  " ] }, @@ -45,15 +45,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                  \n", + "

                                                                                                                                                                                  \n", " לדוגמה:\n", "

                                                                                                                                                                                  \n", - "\n", - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                  • כתובות הדואר האלקטרוני של כל הזכאים לתעודת סיום בקורס פייתון.
                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                  • המספרים הראשוניים עד 1,000.
                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                  • שמות כל הקבצים בתיקייה images.
                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                  • המילים בספר \"קפקא על החוף\", ללא כפילויות.
                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                    • כתובות הדואר האלקטרוני של כל הזכאים לתעודת סיום בקורס פייתון.
                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                    • המספרים הראשוניים עד 1,000.
                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                    • שמות כל הקבצים בתיקייה images.
                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                    • המילים בספר \"קפקא על החוף\", ללא כפילויות.
                                                                                                                                                                                    • \n", "
                                                                                                                                                                                    " ] }, @@ -61,21 +60,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## שימוש" + "## שימוש" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### הבסיס" + "### הבסיס" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " עד מחברת זו, לו היינו מתבקשים להגדיר מבנה נתונים שיאחסן עבורנו שמות של אומנים איטלקים ידועים, היינו משתמשים ברשימה או ב־tuple־ים:\n", "

                                                                                                                                                                                    " ] @@ -96,7 +95,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " אך כיוון שמדובר באוסף איברים ללא חזרות וללא סדר מוגדר, אפשר לשמור אותם כ־set:\n", "

                                                                                                                                                                                    " ] @@ -114,9 +113,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " אפשר לראות שההגדרות דומות מאוד במראה שלהן.
                                                                                                                                                                                    \n", - " כדי להגדיר קבוצה, נפתח סוגריים מסולסלים (כמו במילון), ונציין את איבריה, כשהם מופרדים זה מזה בפסיקים.
                                                                                                                                                                                    \n", + "

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

                                                                                                                                                                                    " ] @@ -125,8 +124,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " נוכל גם להגדיר קבוצה ריקה באמצעות הפונקציה set.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " נוכל גם להגדיר קבוצה ריקה באמצעות הפונקציה set.
                                                                                                                                                                                    \n", " נגדיר, לדוגמה, את קבוצת כל החדי־קרן הוורודות הבלתי נראות:\n", "

                                                                                                                                                                                    " ] @@ -145,7 +144,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " תעלול נחמד נוסף הוא המרת iterable לקבוצה, באמצעות אותה הפונקציה:\n", "

                                                                                                                                                                                    " ] @@ -165,9 +164,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " בהגדרה שבתחילת הפרק ציינו שקבוצה לא תכיל כמה איברים בעלי ערך זהה.
                                                                                                                                                                                    \n", - " למרות ההגבלה הזו, בהגדרת הקבוצה אפשר לספק ערכים שחוזרים על עצמם.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " בהגדרה שבתחילת הפרק ציינו שקבוצה לא תכיל כמה איברים בעלי ערך זהה.
                                                                                                                                                                                    \n", + " למרות ההגבלה הזו, בהגדרת הקבוצה אפשר לספק ערכים שחוזרים על עצמם.
                                                                                                                                                                                    \n", " הקבוצה \"תבלע\" את הכפילויות בערכים, ותשאיר רק איבר אחד מכל ערך:\n", "

                                                                                                                                                                                    " ] @@ -186,22 +185,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "

                                                                                                                                                                                    \n", - " הגדירו קבוצה שאיבריה הם האותיות הקטנות והגדולות באנגלית.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " הגדירו קבוצה שאיבריה הם האותיות הקטנות והגדולות באנגלית.
                                                                                                                                                                                    \n", " ישנו פתרון פשוט שלא מצריך מכם לכתוב את כל הא\"ב.\n", "

                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "

                                                                                                                                                                                    \n", - " חשוב!
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "חשוב!
                                                                                                                                                                                    \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", "
                                                                                                                                                                                    " ] }, @@ -209,14 +208,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פעולות בין קבוצות" + "### פעולות בין קבוצות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " נגדיר שוב את קבוצת האומנים האיטלקים:\n", "

                                                                                                                                                                                    " ] @@ -234,8 +233,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " אחד מיתרונותיהן רבי־הערך של קבוצות הוא היכולת לבצע ביניהן פעולות בקלות.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " אחד מיתרונותיהן רבי־הערך של קבוצות הוא היכולת לבצע ביניהן פעולות בקלות.
                                                                                                                                                                                    \n", " נדגים את הרעיון בעזרת הגדרת קבוצה נוספת, הפעם של דמויות מחוברות הקומיקס של צבי הנינג'ה:\n", "

                                                                                                                                                                                    " ] @@ -253,8 +252,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                    " ] @@ -272,8 +271,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " ישנן פעולות רבות נוספות שאפשר לבצע בין קבוצות.
                                                                                                                                                                                    \n", + "

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

                                                                                                                                                                                    " ] @@ -283,8 +282,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                    \n", - " \"בתמונה\n", - "
                                                                                                                                                                                    דיאגרמת ון של שתי קבוצות: דמויות מצבי הנינג'ה ואומנים איטלקים.
                                                                                                                                                                                    \n", + "\"בתמונה\n", + "
                                                                                                                                                                                    דיאגרמת ון של שתי קבוצות: דמויות מצבי הנינג'ה ואומנים איטלקים.
                                                                                                                                                                                    \n", " אפשר לראות בשטח החפיפה שבין שני העיגולים את האיברים המשותפים לשתי הקבוצות.
                                                                                                                                                                                    \n", "
                                                                                                                                                                                    " ] @@ -293,8 +292,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " נוכל גם לבקש, לדוגמה, את שמות האומנים האיטלקים שאינם דמויות מצבי הנינג'ה.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " נוכל גם לבקש, לדוגמה, את שמות האומנים האיטלקים שאינם דמויות מצבי הנינג'ה.
                                                                                                                                                                                    \n", " נקבל בחזרה את השמות שמופיעים בתרשים בעיגול הטורקיז, אך לא בחיתוך בין שני העיגולים:\n", "

                                                                                                                                                                                    " ] @@ -312,8 +311,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " באותה צורה נוכל לבקש את שמות כל הדמויות מצבי הנינג'ה שאינם אומנים איטלקים.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " באותה צורה נוכל לבקש את שמות כל הדמויות מצבי הנינג'ה שאינם אומנים איטלקים.
                                                                                                                                                                                    \n", " אלו השמות שמופיעים אך ורק בעיגול הורוד, ולא בחיתוך בין שני העיגולים:\n", "

                                                                                                                                                                                    " ] @@ -331,8 +330,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " אפשר לבקש גם את קבוצת האיחוד, שמורכבת מכל הדמויות שקיימות בשתי הקבוצות.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " אפשר לבקש גם את קבוצת האיחוד, שמורכבת מכל הדמויות שקיימות בשתי הקבוצות.
                                                                                                                                                                                    \n", " אלו כל הדמויות שמופיעות בשרטוט:\n", "

                                                                                                                                                                                    " ] @@ -350,8 +349,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " או את כל הדמויות שלא משותפות לשתי הקבוצות.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " או את כל הדמויות שלא משותפות לשתי הקבוצות.
                                                                                                                                                                                    \n", " אלו כל הדמויות שמופיעות מחוץ לחיתוך של שני העיגולים:\n", "

                                                                                                                                                                                    " ] @@ -369,16 +368,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "

                                                                                                                                                                                    \n", - " צרו קבוצה שאיבריה הם 10 מספרי פיבונאצ'י הראשונים, וקבוצה נוספת שאיבריה הם המספרים הזוגיים בין 1 ל־15.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " צרו קבוצה שאיבריה הם 10 מספרי פיבונאצ'י הראשונים, וקבוצה נוספת שאיבריה הם המספרים הזוגיים בין 1 ל־15.
                                                                                                                                                                                    \n", " שרטטו דיאגרמת ון של שתי הקבוצות, ובדקו שהשרטוט נאמן למציאות בעזרת הפעולות שלמדתם למעלה.\n", "

                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", "
                                                                                                                                                                                    " ] }, @@ -386,16 +385,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: נענועי חנית כנגד קוף" + "### תרגיל ביניים: נענועי חנית כנגד קוף" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " בתיקיית resources נמצאים הקבצים hamlet.txt ו־the-monkeys-paw.txt.
                                                                                                                                                                                    \n", - " כמה מילים משותפות לשני החיבורים? כמה שונות?
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " בתיקיית resources נמצאים הקבצים hamlet.txt ו־the-monkeys-paw.txt.
                                                                                                                                                                                    \n", + " כמה מילים משותפות לשני החיבורים? כמה שונות?
                                                                                                                                                                                    \n", " כמה מהמילים מופיעות רק בכפת הקוף, וכמה רק בהמלט?\n", "

                                                                                                                                                                                    " ] @@ -404,15 +403,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### עריכת קבוצה" + "### עריכת קבוצה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " קבוצה היא mutable – אפשר לערוך אותה מבלי ליצור קבוצה חדשה, בדומה לרשימות או למילונים.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " קבוצה היא mutable – אפשר לערוך אותה מבלי ליצור קבוצה חדשה, בדומה לרשימות או למילונים.
                                                                                                                                                                                    \n", " תכונה זו מאפשרת לנו לצרף לקבוצה איברים חדשים או להסיר ממנה איברים קיימים בקלות רבה.\n", "

                                                                                                                                                                                    " ] @@ -421,7 +420,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " נוסיף לקבוצת שמות הדמויות בצבי הנינג'ה את אפריל או'ניל באמצעות הפעולה add:\n", "

                                                                                                                                                                                    " ] @@ -440,7 +439,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " ונמחק מהקבוצה את שרדר הרשע באמצעות הפעולה remove:\n", "

                                                                                                                                                                                    " ] @@ -459,7 +458,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " שימו לב שניסיון למחוק ערך שלא קיים בקבוצה יכעיס את פייתון:\n", "

                                                                                                                                                                                    " ] @@ -477,7 +476,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " אלא אם כן נשתמש בפעולה discard, שמאפשרת לנו למחוק איברים מקבוצות, בלי לחשוש משגיאה:\n", "

                                                                                                                                                                                    " ] @@ -496,8 +495,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " ולסיום – הדמויות הרעות תמיד חוזרות לסיבוב שני.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " ולסיום – הדמויות הרעות תמיד חוזרות לסיבוב שני.
                                                                                                                                                                                    \n", " נרחיב את הקבוצה שלנו ונוסיף אליה את הנבלים מ\"שבט הרגל\" (בחיי, ככה הם תרגמו את Foot Clan!) במכה אחת, באמצעות הפעולה update:\n", "

                                                                                                                                                                                    " ] @@ -517,17 +516,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "

                                                                                                                                                                                    \n", - " צרו קבוצה של 100 המספרים הראשוניים הראשונים, וצרפו אליה את כל המספרים הזוגיים בין 1 ל־1,000.
                                                                                                                                                                                    \n", - " צרו קבוצה נוספת של המספרים בין 1 ל־1,000 שסכום ספרותיהם קטן מ־4.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " צרו קבוצה של 100 המספרים הראשוניים הראשונים, וצרפו אליה את כל המספרים הזוגיים בין 1 ל־1,000.
                                                                                                                                                                                    \n", + " צרו קבוצה נוספת של המספרים בין 1 ל־1,000 שסכום ספרותיהם קטן מ־4.
                                                                                                                                                                                    \n", " כמה מספרים משותפים לשתי הקבוצות שיצרתם?\n", "

                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", "
                                                                                                                                                                                    " ] }, @@ -535,15 +534,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### בדיקות שייכות" + "### בדיקות שייכות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " אחת התכונות המועילות ביותר של קבוצות היא שאפשר לבצע בעזרתן בדיקות שייכות במהירות רבה.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " אחת התכונות המועילות ביותר של קבוצות היא שאפשר לבצע בעזרתן בדיקות שייכות במהירות רבה.
                                                                                                                                                                                    \n", " בדיוק כמו חיפוש מפתח במילון, בקבוצה אפשר למצוא ערך בתוך זמן קצר מאוד.\n", "

                                                                                                                                                                                    " ] @@ -570,7 +569,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " אפשר גם לבדוק אם כל האיברים של קבוצה אחת נמצאים בתוך קבוצה אחרת:\n", "

                                                                                                                                                                                    " ] @@ -597,7 +596,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " ולהפך – אם קבוצה מסוימת מכילה את כל איברי הקבוצה השנייה:\n", "

                                                                                                                                                                                    " ] @@ -616,8 +615,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                    \n", - " \"בתמונה\n", - "
                                                                                                                                                                                    דיאגרמת ון שמדגימה ששמות צבי הנינג'ה הם תת־קבוצה של אומנים איטלקים.
                                                                                                                                                                                    \n", + "\"בתמונה\n", + "
                                                                                                                                                                                    דיאגרמת ון שמדגימה ששמות צבי הנינג'ה הם תת־קבוצה של אומנים איטלקים.
                                                                                                                                                                                    \n", " אפשר לראות ששטח העיגול של הצבים \"נבלע\" בשטח העיגול של האומנים האיטלקים.
                                                                                                                                                                                    \n", "
                                                                                                                                                                                    " ] @@ -626,15 +625,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: מהיר ואמין" + "### תרגיל ביניים: מהיר ואמין" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " בקובץ words.txt ישנה רשימת מילים ארוכה מאוד.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " בקובץ words.txt ישנה רשימת מילים ארוכה מאוד.
                                                                                                                                                                                    \n", "

                                                                                                                                                                                    " ] }, @@ -642,15 +641,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                    1. בנו רשימה בשם words_list מכל המילים המופיעות בקובץ.
                                                                                                                                                                                    2. \n", - "
                                                                                                                                                                                    3. בנו קבוצה בשם words_set מכל המילים המופיעות בקובץ.
                                                                                                                                                                                    4. \n", - "
                                                                                                                                                                                    5. בנו פונקציה בשם average_runtime למדידת ביצועים, שתעזור לכם להחליט מה מהיר יותר:\n", + "
                                                                                                                                                                                        \n", + "
                                                                                                                                                                                      1. בנו רשימה בשם words_list מכל המילים המופיעות בקובץ.
                                                                                                                                                                                      2. \n", + "
                                                                                                                                                                                      3. בנו קבוצה בשם words_set מכל המילים המופיעות בקובץ.
                                                                                                                                                                                      4. \n", + "
                                                                                                                                                                                      5. בנו פונקציה בשם average_runtime למדידת ביצועים, שתעזור לכם להחליט מה מהיר יותר:\n", "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                        1. חפשו 1,000 פעמים את המילה zwitterion בכל אחד ממבני הנתונים שיצרתם.
                                                                                                                                                                                        2. \n", - "
                                                                                                                                                                                        3. הפונקציה תחזיר את הזמן ההמוצע שנמשך החיפוש במבנה הנתונים.
                                                                                                                                                                                        4. \n", - "
                                                                                                                                                                                        \n", - "
                                                                                                                                                                                      6. \n", + "
                                                                                                                                                                                      7. חפשו 1,000 פעמים את המילה zwitterion בכל אחד ממבני הנתונים שיצרתם.
                                                                                                                                                                                      8. \n", + "
                                                                                                                                                                                      9. הפונקציה תחזיר את הזמן ההמוצע שנמשך החיפוש במבנה הנתונים.
                                                                                                                                                                                      10. \n", + "
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                    6. \n", "
                                                                                                                                                                                    " ] }, @@ -658,9 +657,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " כמה זמן בממוצע נמשך חיפוש המילה ברשימה? ובקבוצה?
                                                                                                                                                                                    \n", - " רמז: השתמשו במודול time.\n", + "

                                                                                                                                                                                    \n", + " כמה זמן בממוצע נמשך חיפוש המילה ברשימה? ובקבוצה?
                                                                                                                                                                                    \n", + " רמז: השתמשו במודול time.\n", "

                                                                                                                                                                                    " ] }, @@ -668,15 +667,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אופרטורים בין קבוצות" + "### אופרטורים בין קבוצות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " לעיתים יהיה לנו נוח יותר להשתמש באופרטורים במקום בפעולות.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " לעיתים יהיה לנו נוח יותר להשתמש באופרטורים במקום בפעולות.
                                                                                                                                                                                    \n", " לדוגמה, הפעולה של חיתוך בין שמות הדמויות בצבי הנינג'ה לשמות האומנים האיטלקים שנעשתה כך:\n", "

                                                                                                                                                                                    " ] @@ -694,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " יכולה להיעשות גם כך:\n", "

                                                                                                                                                                                    " ] @@ -712,8 +711,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " השימוש באופרטורים בין קבוצות יכול לקצר את הכתיבה ולשוות לה מראה נקי יותר.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " השימוש באופרטורים בין קבוצות יכול לקצר את הכתיבה ולשוות לה מראה נקי יותר.
                                                                                                                                                                                    \n", " ריכזנו עבורכם אופרטורים שבהם משתמשים תדיר כשעובדים עם קבוצות:\n", "

                                                                                                                                                                                    " ] @@ -722,54 +721,54 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "
                                                                                                                                                                                    אופרטורים בין קבוצות
                                                                                                                                                                                    שם פעולהשם הפעולה בפייתוןאופרטורדוגמה
                                                                                                                                                                                    איחודunion|{1, 3, 5} | {1, 2, 3} מחזיר {1, 2, 3, 5}
                                                                                                                                                                                    חיתוךintersection&{1, 3, 5} & {1, 2, 3} מחזיר {1, 3}
                                                                                                                                                                                    הפרשdifference-\n", - " {1, 3, 5} - {1, 2, 3} מחזיר {5}
                                                                                                                                                                                    \n", - " {1, 2, 3} - {1, 3, 5} מחזיר {2}\n", - "
                                                                                                                                                                                    הפרש סימטריsymmetric_difference^{1, 2, 3} ^ {1, 3, 5} מחזיר {2, 5}
                                                                                                                                                                                    בדיקת שייכות/הכלהissubset/issuperset<=\n", - " {1, 2, 3} <= {1, 3, 5} מחזיר False
                                                                                                                                                                                    \n", - " {1, 2, 3} <= {1, 2, 3, 4, 5} מחזיר True\n", - "
                                                                                                                                                                                    \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                                                                                                    אופרטורים בין קבוצות
                                                                                                                                                                                    שם פעולהשם הפעולה בפייתוןאופרטורדוגמה
                                                                                                                                                                                    איחודunion|{1, 3, 5} | {1, 2, 3} מחזיר {1, 2, 3, 5}
                                                                                                                                                                                    חיתוךintersection&{1, 3, 5} & {1, 2, 3} מחזיר {1, 3}
                                                                                                                                                                                    הפרשdifference-\n", + "{1, 3, 5} - {1, 2, 3} מחזיר {5}
                                                                                                                                                                                    \n", + "{1, 2, 3} - {1, 3, 5} מחזיר {2}\n", + "
                                                                                                                                                                                    הפרש סימטריsymmetric_difference^{1, 2, 3} ^ {1, 3, 5} מחזיר {2, 5}
                                                                                                                                                                                    בדיקת שייכות/הכלהissubset/issuperset<=\n", + "{1, 2, 3} <= {1, 3, 5} מחזיר False
                                                                                                                                                                                    \n", + "{1, 2, 3} <= {1, 2, 3, 4, 5} מחזיר True\n", + "
                                                                                                                                                                                    " ] }, @@ -777,9 +776,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " שימו לב לכך שאופרטורים בין קבוצות לרוב יוצרים קבוצה חדשה.
                                                                                                                                                                                    \n", - " במקרה שאנחנו יכולים לשנות קבוצה קיימת ולנצל את היותה של קבוצה mutable, נעדיף לבחור בדרך הפעולה הזו כדי לייעל את התוכנית שלנו.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " שימו לב לכך שאופרטורים בין קבוצות לרוב יוצרים קבוצה חדשה.
                                                                                                                                                                                    \n", + " במקרה שאנחנו יכולים לשנות קבוצה קיימת ולנצל את היותה של קבוצה mutable, נעדיף לבחור בדרך הפעולה הזו כדי לייעל את התוכנית שלנו.
                                                                                                                                                                                    \n", "

                                                                                                                                                                                    " ] }, @@ -787,7 +786,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " כך, לדוגמה, הוספת איברים לקבוצה בצורה הזו:\n", "

                                                                                                                                                                                    " ] @@ -808,7 +807,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " עדיפה על הצורה הזו:\n", "

                                                                                                                                                                                    " ] @@ -829,14 +828,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגיל לדוגמה" + "## תרגיל לדוגמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " כתבו פונקציה שמקבלת נתיב ל־2 תיקיות, ומחזירה שמות של קבצים שמופיעים בשתי התיקיות.\n", "

                                                                                                                                                                                    " ] @@ -868,22 +867,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### חזרת" + "### חזרת" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " כתבו פונקציה בשם uniquify שמקבלת רשימה של איברים, ומחזירה רשימה של אותם איברים וללא כפילויות.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " כתבו פונקציה בשם uniquify שמקבלת רשימה של איברים, ומחזירה רשימה של אותם איברים וללא כפילויות.
                                                                                                                                                                                    \n", " הניחו שאיברי כל הרשימה הם immutable.\n", "

                                                                                                                                                                                    " ] @@ -892,19 +891,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ספירת מלאי" + "### ספירת מלאי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " כתבו פונקציה בשם count_specials שמקבלת מספר שלם חיובי $n$.
                                                                                                                                                                                    \n", - " הפונקציה תחזיר את מספר המספרים החיוביים הנמוכים מ־$n$, שמתחלקים ב־3 או ב־7 ללא שארית.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " כתבו פונקציה בשם count_specials שמקבלת מספר שלם חיובי $n$.
                                                                                                                                                                                    \n", + " הפונקציה תחזיר את מספר המספרים החיוביים הנמוכים מ־$n$, שמתחלקים ב־3 או ב־7 ללא שארית.
                                                                                                                                                                                    \n", " לדוגמה, עבור $n=22$, המספרים הם: 3, 6, 7, 9, 12, 14, 15, 18 ו־21. במקרה כזה הפונקציה תחזיר 9.\n", "

                                                                                                                                                                                    \n", - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " ודאו שאתם משתמשים ב־set בפתרון התרגיל.\n", "

                                                                                                                                                                                    " ] @@ -913,17 +912,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שטוחלנדיה" + "### שטוחלנדיה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " בפריסת מקלדת סטנדרטית ישנן 3 שורות של מקשי אותיות.
                                                                                                                                                                                    \n", - " האותיות שנמצאות בפינת המקלדת השמאלית־עליונה מרכיבות את הצירוף qwerty.
                                                                                                                                                                                    \n", - " מבין שמות כל המדינות בארצות הברית, ישנו רק שם מדינה אחד שאפשר לכתוב בעזרת שורה אחת בלבד במקלדת.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " בפריסת מקלדת סטנדרטית ישנן 3 שורות של מקשי אותיות.
                                                                                                                                                                                    \n", + " האותיות שנמצאות בפינת המקלדת השמאלית־עליונה מרכיבות את הצירוף qwerty.
                                                                                                                                                                                    \n", + " מבין שמות כל המדינות בארצות הברית, ישנו רק שם מדינה אחד שאפשר לכתוב בעזרת שורה אחת בלבד במקלדת.
                                                                                                                                                                                    \n", "

                                                                                                                                                                                    " ] }, @@ -931,9 +930,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " קראו את שמות כל המדינות בארצות־הברית מהקובץ resources/states.txt.
                                                                                                                                                                                    \n", - " כתבו פונקציה בשם find_special_state.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " קראו את שמות כל המדינות בארצות־הברית מהקובץ resources/states.txt.
                                                                                                                                                                                    \n", + " כתבו פונקציה בשם find_special_state.
                                                                                                                                                                                    \n", " הפונקציה תחזיר את שם המדינה שאפשר להרכיב בעזרת האותיות המופיעות באותה השורה במקלדת.\n", "

                                                                                                                                                                                    " ] @@ -942,8 +941,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " לדוגמה, potter או hash הן מילים שנכתבו בעזרת שורה אחת במקלדת.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " לדוגמה, potter או hash הן מילים שנכתבו בעזרת שורה אחת במקלדת.
                                                                                                                                                                                    \n", " turtle נכתבה בעזרת 2 שורות, ו־ninja נכתבה בעזרת 3 שורות.\n", "

                                                                                                                                                                                    " ] diff --git a/week6/2_Functional_Behavior.ipynb b/week6/2_Functional_Behavior.ipynb index d09317f..d47c9c8 100644 --- a/week6/2_Functional_Behavior.ipynb +++ b/week6/2_Functional_Behavior.ipynb @@ -4,22 +4,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# התנהגות של פונקציות" + "# התנהגות של פונקציות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " בפסקאות הקרובות נבחן פונקציות מזווית ראייה מעט שונה מהרגיל.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " בפסקאות הקרובות נבחן פונקציות מזווית ראייה מעט שונה מהרגיל.
                                                                                                                                                                                    \n", " בואו נקפוץ ישירות למים!\n", "

                                                                                                                                                                                    " ] @@ -28,15 +28,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שם של פונקציה" + "### שם של פונקציה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " תכונה מעניינת שמתקיימת בפייתון היא שפונקציה היא ערך, בדיוק כמו כל ערך אחר.
                                                                                                                                                                                    \n", + "

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

                                                                                                                                                                                    " ] @@ -55,7 +55,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " נוכל לבדוק מאיזה טיפוס הפונקציה (אנחנו לא קוראים לה עם סוגריים אחרי שמה – רק מציינים את שמה):\n", "

                                                                                                                                                                                    " ] @@ -73,7 +73,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " ואפילו לבצע השמה שלה למשתנה, כך ששם המשתנה החדש יצביע עליה:\n", "

                                                                                                                                                                                    " ] @@ -94,10 +94,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " מה מתרחש בתא למעלה?
                                                                                                                                                                                    \n", - " כשהגדרנו את הפונקציה square, יצרנו לייזר עם התווית square שמצביע לפונקציה שמעלה מספר בריבוע.
                                                                                                                                                                                    \n", - " בהשמה שביצענו בשורה הראשונה בתא שלמעלה, הלייזר שעליו מודבקת התווית ribua כוון אל אותה הפונקציה שעליה מצביע הלייזר square.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " מה מתרחש בתא למעלה?
                                                                                                                                                                                    \n", + " כשהגדרנו את הפונקציה square, יצרנו לייזר עם התווית square שמצביע לפונקציה שמעלה מספר בריבוע.
                                                                                                                                                                                    \n", + " בהשמה שביצענו בשורה הראשונה בתא שלמעלה, הלייזר שעליו מודבקת התווית ribua כוון אל אותה הפונקציה שעליה מצביע הלייזר square.
                                                                                                                                                                                    \n", " כעת square ו־ribua מצביעים לאותה פונקציה. אפשר לבדוק זאת כך:\n", "

                                                                                                                                                                                    " ] @@ -115,7 +115,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " בשלב הזה אצטרך לבקש מכם לחגור חגורות, כי זה לא הולך להיות טיול רגיל הפעם.\n", "

                                                                                                                                                                                    " ] @@ -124,15 +124,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פונקציות במבנים מורכבים" + "### פונקציות במבנים מורכבים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " אם פונקציה היא בסך הכול ערך, ואם אפשר להתייחס לשם שלה בכל מקום, אין סיבה שלא נוכל ליצור רשימה של פונקציות!
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " אם פונקציה היא בסך הכול ערך, ואם אפשר להתייחס לשם שלה בכל מקום, אין סיבה שלא נוכל ליצור רשימה של פונקציות!
                                                                                                                                                                                    \n", " ננסה לממש את הרעיון:\n", "

                                                                                                                                                                                    " ] @@ -166,8 +166,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " כעת יש לנו רשימה בעלת 4 איברים, שכל אחד מהם מצביע לפונקציה שונה.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " כעת יש לנו רשימה בעלת 4 איברים, שכל אחד מהם מצביע לפונקציה שונה.
                                                                                                                                                                                    \n", " אם נרצה לבצע פעולת חיבור, נוכל לקרוא ישירות ל־add או (בשביל התרגול) לנסות לאחזר אותה מהרשימה שיצרנו:\n", "

                                                                                                                                                                                    " ] @@ -193,7 +193,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " אם נרצה, נוכל אפילו לעבור על רשימת הפונקציות בעזרת לולאה ולהפעיל את כולן, זו אחר זו:\n", "

                                                                                                                                                                                    " ] @@ -212,8 +212,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " בכל איטרציה של לולאת ה־for, המשתנה function עבר להצביע על הפונקציה הבאה מתוך רשימת functions.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " בכל איטרציה של לולאת ה־for, המשתנה function עבר להצביע על הפונקציה הבאה מתוך רשימת functions.
                                                                                                                                                                                    \n", " בשורה הבאה קראנו לאותה הפונקציה ש־function מצביע עליה, והדפסנו את הערך שהיא החזירה. \n", "

                                                                                                                                                                                    " ] @@ -222,8 +222,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " כיוון שרשימה היא מבנה ששומר על סדר האיברים שבו, התוצאות מודפסות בסדר שבו הפונקציות שמורות ברשימה.
                                                                                                                                                                                    \n", + "

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

                                                                                                                                                                                    " ] @@ -232,17 +232,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### תרגיל ביניים: סוגרים חשבון" + "#### תרגיל ביניים: סוגרים חשבון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " כתבו פונקציה בשם calc שמקבלת כפרמטר שני מספרים וסימן של פעולה חשבונית.
                                                                                                                                                                                    \n", - " הסימן יכול להיות אחד מאלה: +, -, * או /.
                                                                                                                                                                                    \n", - " מטרת הפונקציה היא להחזיר את תוצאת הביטוי החשבוני שהופעל על שני המספרים.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " כתבו פונקציה בשם calc שמקבלת כפרמטר שני מספרים וסימן של פעולה חשבונית.
                                                                                                                                                                                    \n", + " הסימן יכול להיות אחד מאלה: +, -, * או /.
                                                                                                                                                                                    \n", + " מטרת הפונקציה היא להחזיר את תוצאת הביטוי החשבוני שהופעל על שני המספרים.
                                                                                                                                                                                    \n", " בפתרונכם, השתמשו בהגדרת הפונקציות מלמעלה ובמילון.\n", "

                                                                                                                                                                                    " ] @@ -251,15 +251,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### העברת פונקציה כפרמטר" + "### העברת פונקציה כפרמטר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " נמשיך ללהטט בפונקציות.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " נמשיך ללהטט בפונקציות.
                                                                                                                                                                                    \n", "

                                                                                                                                                                                    " ] }, @@ -267,8 +267,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " פונקציה נקראת \"פונקציה מסדר גבוה\" (higher order function) אם היא מקבלת כפרמטר פונקציה.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " פונקציה נקראת \"פונקציה מסדר גבוה\" (higher order function) אם היא מקבלת כפרמטר פונקציה.
                                                                                                                                                                                    \n", " ניקח לדוגמה את הפונקציה calculate:\n", "

                                                                                                                                                                                    " ] @@ -287,8 +287,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " בקריאה ל־calculate, נצטרך להעביר פונקציה ושני מספרים.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " בקריאה ל־calculate, נצטרך להעביר פונקציה ושני מספרים.
                                                                                                                                                                                    \n", " נעביר לדוגמה את הפונקציה divide שהגדרנו קודם לכן:\n", "

                                                                                                                                                                                    " ] @@ -306,9 +306,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " מה שמתרחש במקרה הזה הוא שהעברנו את הפונקציה divide כארגומנט ראשון.
                                                                                                                                                                                    \n", - " הפרמטר function בפונקציה calculate מצביע כעת על פונקציית החילוק שהגדרנו למעלה.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " מה שמתרחש במקרה הזה הוא שהעברנו את הפונקציה divide כארגומנט ראשון.
                                                                                                                                                                                    \n", + " הפרמטר function בפונקציה calculate מצביע כעת על פונקציית החילוק שהגדרנו למעלה.
                                                                                                                                                                                    \n", " מכאן, שהפונקציה תחזיר את התוצאה של divide(5, 2) – הרי היא 2.5.\n", "

                                                                                                                                                                                    " ] @@ -317,16 +317,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### תרגיל ביניים: מפה לפה" + "#### תרגיל ביניים: מפה לפה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " כתבו generator בשם apply שמקבל כפרמטר ראשון פונקציה (func), וכפרמטר שני iterable (iter).
                                                                                                                                                                                    \n", - " עבור כל איבר ב־iterable, ה־generator יניב את האיבר אחרי שהופעלה עליו הפונקציה func, דהיינו – func(item).
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " כתבו generator בשם apply שמקבל כפרמטר ראשון פונקציה (func), וכפרמטר שני iterable (iter).
                                                                                                                                                                                    \n", + " עבור כל איבר ב־iterable, ה־generator יניב את האיבר אחרי שהופעלה עליו הפונקציה func, דהיינו – func(item).
                                                                                                                                                                                    \n", "

                                                                                                                                                                                    " ] }, @@ -334,7 +334,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " ודאו שהרצת התא הבא מחזירה True עבור הקוד שלכם:\n", "

                                                                                                                                                                                    " ] @@ -357,14 +357,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סיכום ביניים" + "### סיכום ביניים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " וואו. זה היה די משוגע.\n", "

                                                                                                                                                                                    " ] @@ -373,10 +373,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " אז למעשה, פונקציות בפייתון הן ערך לכל דבר, כמו מחרוזות ומספרים!
                                                                                                                                                                                    \n", - " אפשר לאחסן אותן במשתנים, לשלוח אותן כארגומנטים ולכלול אותם בתוך מבני נתונים מורכבים יותר.
                                                                                                                                                                                    \n", - " אנשי התיאוריה של מדעי המחשב נתנו להתנהגות כזו שם: \"אזרח ממדרגה ראשונה\" (first class citizen).
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " אז למעשה, פונקציות בפייתון הן ערך לכל דבר, כמו מחרוזות ומספרים!
                                                                                                                                                                                    \n", + " אפשר לאחסן אותן במשתנים, לשלוח אותן כארגומנטים ולכלול אותם בתוך מבני נתונים מורכבים יותר.
                                                                                                                                                                                    \n", + " אנשי התיאוריה של מדעי המחשב נתנו להתנהגות כזו שם: \"אזרח ממדרגה ראשונה\" (first class citizen).
                                                                                                                                                                                    \n", " אם כך, אפשר להגיד על פונקציות בפייתון שהן אזרחיות ממדרגה ראשונה.\n", "

                                                                                                                                                                                    " ] @@ -385,16 +385,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## פונקציות מסדר גבוה בפייתון" + "## פונקציות מסדר גבוה בפייתון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                    " ] @@ -403,17 +403,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הפונקציה map" + "### הפונקציה map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " הפונקציה map מקבלת פונקציה כפרמטר הראשון, ו־iterable כפרמטר השני.
                                                                                                                                                                                    \n", - " map מפעילה את הפונקציה מהפרמטר הראשון על כל אחד מהאיברים שהועברו ב־iterable.
                                                                                                                                                                                    \n", - " היא מחזירה iterator שמורכב מהערכים שחזרו מהפעלת הפונקציה.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " הפונקציה map מקבלת פונקציה כפרמטר הראשון, ו־iterable כפרמטר השני.
                                                                                                                                                                                    \n", + "map מפעילה את הפונקציה מהפרמטר הראשון על כל אחד מהאיברים שהועברו ב־iterable.
                                                                                                                                                                                    \n", + " היא מחזירה iterator שמורכב מהערכים שחזרו מהפעלת הפונקציה.
                                                                                                                                                                                    \n", "

                                                                                                                                                                                    " ] }, @@ -422,8 +422,8 @@ "metadata": {}, "source": [ "\n", - "

                                                                                                                                                                                    \n", - " במילים אחרות, map יוצרת iterable חדש.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " במילים אחרות, map יוצרת iterable חדש.
                                                                                                                                                                                    \n", " ה־iterable כולל את הערך שהוחזר מהפונקציה עבור כל איבר ב־iterable שהועבר.\n", "

                                                                                                                                                                                    " ] @@ -432,7 +432,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " לדוגמה:\n", "

                                                                                                                                                                                    " ] @@ -451,10 +451,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " הפונקציה קיבלה כארגומנט ראשון את הפונקציה square שהגדרנו למעלה, שמטרתה העלאת מספר בריבוע.
                                                                                                                                                                                    \n", - " כארגומנט שני היא קיבלה את רשימת כל המספרים שאנחנו רוצים שהפונקציה תרוץ עליהם.
                                                                                                                                                                                    \n", - " כשהעברנו ל־map את הארגומנטים הללו, map החזירה לנו ב־iterator (מבנה שאפשר לעבור עליו איבר־איבר) את התוצאה:
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " הפונקציה קיבלה כארגומנט ראשון את הפונקציה square שהגדרנו למעלה, שמטרתה העלאת מספר בריבוע.
                                                                                                                                                                                    \n", + " כארגומנט שני היא קיבלה את רשימת כל המספרים שאנחנו רוצים שהפונקציה תרוץ עליהם.
                                                                                                                                                                                    \n", + " כשהעברנו ל־map את הארגומנטים הללו, map החזירה לנו ב־iterator (מבנה שאפשר לעבור עליו איבר־איבר) את התוצאה:
                                                                                                                                                                                    \n", " הריבוע, קרי החזקה השנייה, של כל אחד מהאיברים ברשימה שהועברה כארגומנט השני.\n", "

                                                                                                                                                                                    " ] @@ -463,7 +463,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " למעשה, אפשר להגיד ש־map שקולה לפונקציה הבאה:\n", "

                                                                                                                                                                                    " ] @@ -483,7 +483,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " הנה דוגמה נוספת לשימוש ב־map:\n", "

                                                                                                                                                                                    " ] @@ -503,8 +503,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " במקרה הזה, בכל מעבר, קיבלה הפונקציה sum איבר אחד מתוך הרשימה – tuple.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " במקרה הזה, בכל מעבר, קיבלה הפונקציה sum איבר אחד מתוך הרשימה – tuple.
                                                                                                                                                                                    \n", " היא סכמה את האיברים של כל tuple שקיבלה, וכך החזירה לנו את הסכומים של כל ה־tuple־ים – זה אחרי זה.\n", "

                                                                                                                                                                                    " ] @@ -513,7 +513,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " ודוגמה אחרונה:\n", "

                                                                                                                                                                                    " ] @@ -536,8 +536,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " בדוגמה הזו יצרנו פונקציה משל עצמנו, ואותה העברנו ל־map.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " בדוגמה הזו יצרנו פונקציה משל עצמנו, ואותה העברנו ל־map.
                                                                                                                                                                                    \n", " מטרת דוגמה זו היא להדגיש שאין שוני בין העברת פונקציה שקיימת בפייתון לבין פונקציה שאנחנו יצרנו.\n", "

                                                                                                                                                                                    " ] @@ -546,22 +546,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "

                                                                                                                                                                                    \n", - " כתבו פונקציה שמקבלת רשימת מחרוזות של שתי מילים: שם פרטי ושם משפחה.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " כתבו פונקציה שמקבלת רשימת מחרוזות של שתי מילים: שם פרטי ושם משפחה.
                                                                                                                                                                                    \n", " הפונקציה תשתמש ב־map כדי להחזיר מכולן רק את השם הפרטי.\n", "

                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "

                                                                                                                                                                                    \n", - " חשוב!
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "חשוב!
                                                                                                                                                                                    \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", "
                                                                                                                                                                                    " ] }, @@ -569,16 +569,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הפונקציה filter" + "### הפונקציה filter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " הפונקציה filter מקבלת פונקציה כפרמטר ראשון, ו־iterable כפרמטר שני.
                                                                                                                                                                                    \n", - " filter מפעילה על כל אחד מאיברי ה־iterable את הפונקציה, ומחזירה את האיבר אך ורק אם הערך שחזר מהפונקציה שקול ל־True.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " הפונקציה filter מקבלת פונקציה כפרמטר ראשון, ו־iterable כפרמטר שני.
                                                                                                                                                                                    \n", + "filter מפעילה על כל אחד מאיברי ה־iterable את הפונקציה, ומחזירה את האיבר אך ורק אם הערך שחזר מהפונקציה שקול ל־True.
                                                                                                                                                                                    \n", " אם ערך ההחזרה שקול ל־False – הערך \"יבלע\" ב־filter ולא יחזור ממנה.\n", "

                                                                                                                                                                                    " ] @@ -588,8 +588,8 @@ "metadata": {}, "source": [ "\n", - "

                                                                                                                                                                                    \n", - " במילים אחרות, filter יוצרת iterable חדש ומחזירה אותו.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " במילים אחרות, filter יוצרת iterable חדש ומחזירה אותו.
                                                                                                                                                                                    \n", " ה־iterable כולל רק את האיברים שעבורם הפונקציה שהועברה החזירה ערך השקול ל־True.\n", "

                                                                                                                                                                                    " ] @@ -598,8 +598,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " נבנה, לדוגמה, פונקציה שמחזירה אם אדם הוא בגיר.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " נבנה, לדוגמה, פונקציה שמחזירה אם אדם הוא בגיר.
                                                                                                                                                                                    \n", " הפונקציה תקבל כפרמטר גיל, ותחזיר True כאשר הגיל שהועבר לה הוא לפחות 18, ו־False אחרת.\n", "

                                                                                                                                                                                    " ] @@ -618,7 +618,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " נגדיר רשימת גילים, ונבקש מ־filter לסנן אותם לפי הפונקציה שהגדרנו:\n", "

                                                                                                                                                                                    " ] @@ -638,7 +638,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " כפי שלמדנו, filter מחזירה לנו רק גילים השווים ל־18 או גדולים ממנו.\n", "

                                                                                                                                                                                    " ] @@ -647,8 +647,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " נחדד שהפונקציה שאנחנו מעבירים ל־filter לא חייבת להחזיר בהכרח True או False.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " נחדד שהפונקציה שאנחנו מעבירים ל־filter לא חייבת להחזיר בהכרח True או False.
                                                                                                                                                                                    \n", " הערך 0, לדוגמה, שקול ל־False, ולכן filter תסנן כל ערך שעבורו הפונקציה תחזיר 0: \n", "

                                                                                                                                                                                    " ] @@ -668,8 +668,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " בתא האחרון העברנו ל־filter את sum כפונקציה שאותה אנחנו רוצים להפעיל, ואת to_sum כאיברים שעליהם אנחנו רוצים לפעול.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " בתא האחרון העברנו ל־filter את sum כפונקציה שאותה אנחנו רוצים להפעיל, ואת to_sum כאיברים שעליהם אנחנו רוצים לפעול.
                                                                                                                                                                                    \n", " ה־tuple־ים שסכום איבריהם היה 0 סוננו, וקיבלנו חזרה iterator שהאיברים בו הם אך ורק אלו שסכומם שונה מ־0.\n", "

                                                                                                                                                                                    " ] @@ -678,9 +678,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " כטריק אחרון, נלמד ש־filter יכולה לקבל גם None בתור הפרמטר הראשון, במקום פונקציה.
                                                                                                                                                                                    \n", - " זה יגרום ל־filter לא להפעיל פונקציה על האיברים שהועברו, כלומר לסנן אותם כמו שהם.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " כטריק אחרון, נלמד ש־filter יכולה לקבל גם None בתור הפרמטר הראשון, במקום פונקציה.
                                                                                                                                                                                    \n", + " זה יגרום ל־filter לא להפעיל פונקציה על האיברים שהועברו, כלומר לסנן אותם כמו שהם.
                                                                                                                                                                                    \n", " איברים השקולים ל־True יוחזרו, ואיברים השקולים ל־False לא יוחזרו:\n", "

                                                                                                                                                                                    " ] @@ -700,23 +700,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "

                                                                                                                                                                                    \n", - " כתבו פונקציה שמקבלת רשימת מחרוזות, ומחזירה רק את המחרוזות הפלינדרומיות שבה.
                                                                                                                                                                                    \n", - " מחרוזת נחשבת פלינדרום אם קריאתה מימין לשמאל ומשמאל לימין יוצרת אותו ביטוי.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " כתבו פונקציה שמקבלת רשימת מחרוזות, ומחזירה רק את המחרוזות הפלינדרומיות שבה.
                                                                                                                                                                                    \n", + " מחרוזת נחשבת פלינדרום אם קריאתה מימין לשמאל ומשמאל לימין יוצרת אותו ביטוי.
                                                                                                                                                                                    \n", " השתמשו ב־filter.\n", "

                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", - "

                                                                                                                                                                                    \n", - " חשוב!
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + "חשוב!
                                                                                                                                                                                    \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                    \n", - "
                                                                                                                                                                                    \n", + "
                                                                                                                                                                                    \n", "
                                                                                                                                                                                    " ] }, @@ -724,16 +724,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## פונקציות אנונימיות" + "## פונקציות אנונימיות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " תעלול נוסף שנוסיף לארגז הכלים שלנו הוא פונקציות אנונימיות (anonymous functions).
                                                                                                                                                                                    \n", - " אל תיבהלו מהשם המאיים – בסך הכול פירושו הוא \"פונקציות שאין להן שם\".
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " תעלול נוסף שנוסיף לארגז הכלים שלנו הוא פונקציות אנונימיות (anonymous functions).
                                                                                                                                                                                    \n", + " אל תיבהלו מהשם המאיים – בסך הכול פירושו הוא \"פונקציות שאין להן שם\".
                                                                                                                                                                                    \n", "

                                                                                                                                                                                    " ] }, @@ -741,8 +741,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " לפני שאתם מרימים גבה ושואלים את עצמכם למה הן שימושיות, בואו נבחן כמה דוגמאות.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " לפני שאתם מרימים גבה ושואלים את עצמכם למה הן שימושיות, בואו נבחן כמה דוגמאות.
                                                                                                                                                                                    \n", " ניזכר בהגדרת פונקציית החיבור שיצרנו לא מזמן:\n", "

                                                                                                                                                                                    " ] @@ -761,7 +761,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", " ונגדיר את אותה הפונקציה בדיוק בצורה אנונימית:\n", "

                                                                                                                                                                                    " ] @@ -781,8 +781,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                    \n", - " לפני שנסביר איפה החלק של ה\"פונקציה בלי שם\" נתמקד בצד ימין של ההשמה.
                                                                                                                                                                                    \n", + "

                                                                                                                                                                                    \n", + " לפני שנסביר איפה החלק של ה\"פונקציה בלי שם\" נתמקד בצד ימין של ההשמה.
                                                                                                                                                                                    \n", " כיצד מנוסחת הגדרת פונקציה אנונימית?\n", "

                                                                                                                                                                                    " ] @@ -791,11 +791,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                    1. הצהרנו שברצוננו ליצור פונקציה אנונימית בעזרת מילת המפתח lambda.
                                                                                                                                                                                    2. \n", - "
                                                                                                                                                                                    3. מייד אחריה, ציינו את שמות כל הפרמטרים שהפונקציה תקבל, כשהם מופרדים בפסיק זה מזה.
                                                                                                                                                                                    4. \n", - "
                                                                                                                                                                                    5. כדי להפריד בין רשימת הפרמטרים לערך ההחזרה של הפונקציה, השתמשנו בנקודתיים.
                                                                                                                                                                                    6. \n", - "
                                                                                                                                                                                    7. אחרי הנקודתיים, כתבנו את הביטוי שאנחנו רוצים שהפונקציה תחזיר.
                                                                                                                                                                                    8. \n", + "
                                                                                                                                                                                        \n", + "
                                                                                                                                                                                      1. הצהרנו שברצוננו ליצור פונקציה אנונימית בעזרת מילת המפתח lambda.
                                                                                                                                                                                      2. \n", + "
                                                                                                                                                                                      3. מייד אחריה, ציינו את שמות כל הפרמטרים שהפונקציה תקבל, כשהם מופרדים בפסיק זה מזה.
                                                                                                                                                                                      4. \n", + "
                                                                                                                                                                                      5. כדי להפריד בין רשימת הפרמטרים לערך ההחזרה של הפונקציה, השתמשנו בנקודתיים.
                                                                                                                                                                                      6. \n", + "
                                                                                                                                                                                      7. אחרי הנקודתיים, כתבנו את הביטוי שאנחנו רוצים שהפונקציה תחזיר.
                                                                                                                                                                                      8. \n", "
                                                                                                                                                                                      " ] }, @@ -804,8 +804,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                      \n", - " \"בתמונה\n", - "
                                                                                                                                                                                      חלקי ההגדרה של פונקציה אנונימית בעזרת מילת המפתח lambda
                                                                                                                                                                                      A girl has no name
                                                                                                                                                                                      \n", + "\"בתמונה\n", + "
                                                                                                                                                                                      חלקי ההגדרה של פונקציה אנונימית בעזרת מילת המפתח lambda
                                                                                                                                                                                      A girl has no name
                                                                                                                                                                                      \n", "
                                                                                                                                                                                      " ] }, @@ -813,9 +813,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", - " במה שונה ההגדרה של פונקציה זו מההגדרה של פונקציה רגילה?
                                                                                                                                                                                      \n", - " היא לא באמת שונה.
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + " במה שונה ההגדרה של פונקציה זו מההגדרה של פונקציה רגילה?
                                                                                                                                                                                      \n", + " היא לא באמת שונה.
                                                                                                                                                                                      \n", " המטרה היא לאפשר תחביר שיקל על חיינו כשאנחנו רוצים לכתוב פונקציה קצרצרה שאורכה שורה אחת.\n", "

                                                                                                                                                                                      " ] @@ -824,7 +824,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", " נראה, לדוגמה, שימוש ב־filter כדי לסנן את כל האיברים שאינם חיוביים:\n", "

                                                                                                                                                                                      " ] @@ -848,7 +848,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", " במקום להגדיר פונקציה חדשה שנקראת is_positive, נוכל להשתמש בפונקציה אנונימית:\n", "

                                                                                                                                                                                      " ] @@ -868,10 +868,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", - " איך זה עובד?
                                                                                                                                                                                      \n", - " במקום להעביר ל־filter פונקציה שיצרנו מבעוד מועד, השתמשנו ב־lambda כדי ליצור פונקציה ממש באותה השורה.
                                                                                                                                                                                      \n", - " הפונקציה שהגדרנו מקבלת מספר (n), ומחזירה True אם הוא חיובי, או False אחרת.
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + " איך זה עובד?
                                                                                                                                                                                      \n", + " במקום להעביר ל־filter פונקציה שיצרנו מבעוד מועד, השתמשנו ב־lambda כדי ליצור פונקציה ממש באותה השורה.
                                                                                                                                                                                      \n", + " הפונקציה שהגדרנו מקבלת מספר (n), ומחזירה True אם הוא חיובי, או False אחרת.
                                                                                                                                                                                      \n", " שימו לב שבצורה זו באמת לא היינו צריכים לתת שם לפונקציה שהגדרנו.\n", "

                                                                                                                                                                                      " ] @@ -880,8 +880,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", - " השימוש בפונקציות אנונימיות לא מוגבל ל־map ול־filter, כמובן.
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + " השימוש בפונקציות אנונימיות לא מוגבל ל־map ול־filter, כמובן.
                                                                                                                                                                                      \n", " מקובל להשתמש ב־lambda גם עבור פונקציות כמו sorted, שמקבלות פונקציה בתור ארגומנט.\n", "

                                                                                                                                                                                      " ] @@ -890,16 +890,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      \n", - " \"תזכורת\" \n", - "
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      \n", - "

                                                                                                                                                                                      \n", - " הפונקציה sorted מאפשרת לנו לסדר ערכים, ואפילו להגדיר עבורה לפי מה לסדר אותם.
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      \n", + "\"תזכורת\"\n", + "
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + " הפונקציה sorted מאפשרת לנו לסדר ערכים, ואפילו להגדיר עבורה לפי מה לסדר אותם.
                                                                                                                                                                                      \n", " לרענון בנוגע לשימוש בפונקציה גשו למחברת בנושא פונקציות מובנות בשבוע 4.\n", "

                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      \n", "
                                                                                                                                                                                      " ] }, @@ -907,7 +907,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", " נסדר, למשל, את הדמויות ברשימה הבאה, לפי תאריך הולדתן:\n", "

                                                                                                                                                                                      " ] @@ -931,9 +931,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", - " נרצה שסידור הרשימה יתבצע לפי המפתח year_of_birth.
                                                                                                                                                                                      \n", - " כלומר, בהינתן מילון שמייצג דמות בשם d, יש להשיג את d['year_of_birth'], ולפיו לבצע את סידור הרשימה.
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + " נרצה שסידור הרשימה יתבצע לפי המפתח year_of_birth.
                                                                                                                                                                                      \n", + " כלומר, בהינתן מילון שמייצג דמות בשם d, יש להשיג את d['year_of_birth'], ולפיו לבצע את סידור הרשימה.
                                                                                                                                                                                      \n", " ניגש למלאכה:\n", "

                                                                                                                                                                                      " ] @@ -951,16 +951,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      \n", - " \"אזהרה!\" \n", - "
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      \n", - "

                                                                                                                                                                                      \n", - " פונקציות אנונימיות הן יכולת חביבה שאמורה לסייע לכם לכתוב קוד נאה וקריא.
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      \n", + "\"אזהרה!\"\n", + "
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + " פונקציות אנונימיות הן יכולת חביבה שאמורה לסייע לכם לכתוב קוד נאה וקריא.
                                                                                                                                                                                      \n", " כלל אצבע טוב לחיים הוא להימנע משימוש בהן כאשר הן מסרבלות את הקוד.\n", "

                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      \n", "
                                                                                                                                                                                      " ] }, @@ -968,15 +968,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      \n", - " \"תרגיל\" \n", - "
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      \n", - "

                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      \n", + "\"תרגיל\"\n", + "
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", " סדרו את הדמויות ב־closet לפי האות האחרונה בשמם. \n", "

                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      \n", "
                                                                                                                                                                                      " ] }, @@ -984,43 +984,43 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      פונקציה מסדר גבוה
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      פונקציה שמקבלת פונקציה כאחד הארגומנטים, או שמחזירה פונקציה כערך ההחזרה שלה.
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      אזרח ממדרגה ראשונה
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      ישות תכנותית המתנהגת בשפת התכנות כערך לכל דבר. בפייתון, פונקציות הן אזרחיות ממדרגה ראשונה.
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      פונקציה אנונימית, פונקציית lambda
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      פונקציה ללא שם המיועדת להגדרת פונקציה בשורה אחת, לרוב לשימוש חד־פעמי. בעברית: פונקציית למדא.
                                                                                                                                                                                      \n", - "
                                                                                                                                                                                      " + "
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      פונקציה מסדר גבוה
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      פונקציה שמקבלת פונקציה כאחד הארגומנטים, או שמחזירה פונקציה כערך ההחזרה שלה.
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      אזרח ממדרגה ראשונה
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      ישות תכנותית המתנהגת בשפת התכנות כערך לכל דבר. בפייתון, פונקציות הן אזרחיות ממדרגה ראשונה.
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      פונקציה אנונימית, פונקציית lambda
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      פונקציה ללא שם המיועדת להגדרת פונקציה בשורה אחת, לרוב לשימוש חד־פעמי. בעברית: פונקציית למדא.
                                                                                                                                                                                      \n", + "
                                                                                                                                                                                      " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### פילטר מותאם אישית" + "### פילטר מותאם אישית" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", - " כתבו פונקציה בשם my_filter שמתנהגת בדיוק כמו הפונקציה filter.
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + " כתבו פונקציה בשם my_filter שמתנהגת בדיוק כמו הפונקציה filter.
                                                                                                                                                                                      \n", " בפתירת התרגיל, המנעו משימוש ב־filter או במודולים.\n", "

                                                                                                                                                                                      " ] @@ -1029,17 +1029,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### נשאר? חיובי" + "### נשאר? חיובי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", - "כתבו פונקציה בשם get_positive_numbers שמקבלת מהמשתמש קלט בעזרת input.
                                                                                                                                                                                      \n", - "המשתמש יתבקש להזין סדרה של מספרים המופרדים בפסיק זה מזה.
                                                                                                                                                                                      \n", - "הפונקציה תחזיר את כל המספרים החיוביים שהמשתמש הזין, כרשימה של מספרים מסוג int.
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + "כתבו פונקציה בשם get_positive_numbers שמקבלת מהמשתמש קלט בעזרת input.
                                                                                                                                                                                      \n", + "המשתמש יתבקש להזין סדרה של מספרים המופרדים בפסיק זה מזה.
                                                                                                                                                                                      \n", + "הפונקציה תחזיר את כל המספרים החיוביים שהמשתמש הזין, כרשימה של מספרים מסוג int.
                                                                                                                                                                                      \n", "אפשר להניח שהקלט מהמשתמש תקין.\n", "

                                                                                                                                                                                      " ] @@ -1048,16 +1048,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ריצת 2,000" + "### ריצת 2,000" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", - " כתבו פונקציה בשם timer שמקבלת כפרמטר פונקציה (נקרא לה f) ופרמטרים נוספים.
                                                                                                                                                                                      \n", - " הפונקציה timer תמדוד כמה זמן רצה פונקציה f כשמועברים אליה אותם פרמטרים.
                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", + " כתבו פונקציה בשם timer שמקבלת כפרמטר פונקציה (נקרא לה f) ופרמטרים נוספים.
                                                                                                                                                                                      \n", + " הפונקציה timer תמדוד כמה זמן רצה פונקציה f כשמועברים אליה אותם פרמטרים.
                                                                                                                                                                                      \n", "

                                                                                                                                                                                      " ] }, @@ -1065,7 +1065,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                      \n", + "

                                                                                                                                                                                      \n", " לדוגמה:\n", "

                                                                                                                                                                                      " ] @@ -1074,10 +1074,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                        \n", - "
                                                                                                                                                                                      1. עבור הקריאה timer(print, \"Hello\"), תחזיר הפונקציה את משך זמן הביצוע של print(\"Hello\").
                                                                                                                                                                                      2. \n", - "
                                                                                                                                                                                      3. עבור הקריאה timer(zip, [1, 2, 3], [4, 5, 6]), תחזיר הפונקציה את משך זמן הביצוע של zip([1, 2, 3], [4, 5, 6]).
                                                                                                                                                                                      4. \n", - "
                                                                                                                                                                                      5. עבור הקריאה timer(\"Hi {name}\".format, name=\"Bug\"), תחזיר הפונקציה את משך זמן הביצוע של \"Hi {name}\".format(name=\"Bug\")
                                                                                                                                                                                      6. \n", + "
                                                                                                                                                                                          \n", + "
                                                                                                                                                                                        1. עבור הקריאה timer(print, \"Hello\"), תחזיר הפונקציה את משך זמן הביצוע של print(\"Hello\").
                                                                                                                                                                                        2. \n", + "
                                                                                                                                                                                        3. עבור הקריאה timer(zip, [1, 2, 3], [4, 5, 6]), תחזיר הפונקציה את משך זמן הביצוע של zip([1, 2, 3], [4, 5, 6]).
                                                                                                                                                                                        4. \n", + "
                                                                                                                                                                                        5. עבור הקריאה timer(\"Hi {name}\".format, name=\"Bug\"), תחזיר הפונקציה את משך זמן הביצוע של \"Hi {name}\".format(name=\"Bug\")
                                                                                                                                                                                        6. \n", "
                                                                                                                                                                                        " ] } diff --git a/week6/3_Comprehensions.ipynb b/week6/3_Comprehensions.ipynb index 0fe92e4..e5085b2 100644 --- a/week6/3_Comprehensions.ipynb +++ b/week6/3_Comprehensions.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Comprehensions" + "# Comprehensions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                        \n", + " מפתחי פייתון אוהבים מאוד קוד קצר ופשוט שמנוסח היטב.
                                                                                                                                                                                        \n", + " יוצרי השפה מתמקדים פעמים רבות בלאפשר למפתחים בה לכתוב קוד בהיר ותמציתי במהירות.
                                                                                                                                                                                        \n", " במחברת זו נלמד איך לעבור על iterable וליצור ממנו מבני נתונים מעניינים בקלות ובמהירות.\n", "

                                                                                                                                                                                        " ] @@ -36,23 +36,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## List Comprehension" + "## List Comprehension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### עיבוד רשימות" + "### עיבוד רשימות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                        \n", - " נתחיל במשימה פשוטה יחסית:
                                                                                                                                                                                        \n", - " בהינתן רשימת שמות, אני מעוניין להפוך את כל השמות ברשימה ליווניים.
                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", + " נתחיל במשימה פשוטה יחסית:
                                                                                                                                                                                        \n", + " בהינתן רשימת שמות, אני מעוניין להפוך את כל השמות ברשימה ליווניים.
                                                                                                                                                                                        \n", " כידוע, אפשר להפוך כל שם ליווני על ידי הוספת ההברה os בסופו. לדוגמה, השם Yam ביוונית הוא Yamos.\n", "

                                                                                                                                                                                        " ] @@ -70,7 +70,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", " למה אנחנו מחכים? ניצור את הרשימה החדשה:\n", "

                                                                                                                                                                                        " ] @@ -88,7 +88,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", " נעבור על הרשימה הישנה בעזרת לולאת for, נשרשר לכל איבר \"os\" ונצרף את התוצאה לרשימה החדשה:\n", "

                                                                                                                                                                                        " ] @@ -107,7 +107,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", " כשהלולאה תסיים לרוץ, תהיה בידינו רשימה חדשה של שמות יוונים:\n", "

                                                                                                                                                                                        " ] @@ -125,7 +125,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", " אם נסתכל על הלולאה שיצרנו, נוכל לזהות בה ארבעה מרכיבים עיקריים.\n", "

                                                                                                                                                                                        " ] @@ -134,37 +134,37 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "
                                                                                                                                                                                        פירוק מרכיבי לולאת for ליצירת רשימה חדשה
                                                                                                                                                                                        שם המרכיבתיאור המרכיבדוגמה
                                                                                                                                                                                        ה־iterable הישןאוסף הנתונים המקורי שעליו אנחנו רצים.names
                                                                                                                                                                                        הערך הישןמשתנה הלולאה. הלייזר שמצביע בכל פעם על ערך יחיד מתוך ה־iterable הישן.name
                                                                                                                                                                                        הערך החדשהערך שנרצה להכניס ל־iterable שאנחנו יוצרים, בדרך כלל מושפע מהערך הישן.name + 'os'
                                                                                                                                                                                        ה־iterable החדשה־iterable שאנחנו רוצים ליצור, הערך שיתקבל בסוף הריצה.new_names
                                                                                                                                                                                        \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                                                                                                        פירוק מרכיבי לולאת for ליצירת רשימה חדשה
                                                                                                                                                                                        שם המרכיבתיאור המרכיבדוגמה
                                                                                                                                                                                        ה־iterable הישןאוסף הנתונים המקורי שעליו אנחנו רצים.names
                                                                                                                                                                                        הערך הישןמשתנה הלולאה. הלייזר שמצביע בכל פעם על ערך יחיד מתוך ה־iterable הישן.name
                                                                                                                                                                                        הערך החדשהערך שנרצה להכניס ל־iterable שאנחנו יוצרים, בדרך כלל מושפע מהערך הישן.name + 'os'
                                                                                                                                                                                        ה־iterable החדשה־iterable שאנחנו רוצים ליצור, הערך שיתקבל בסוף הריצה.new_names
                                                                                                                                                                                        " ] }, @@ -172,21 +172,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                        \n", - "
                                                                                                                                                                                        \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                        \n", - "
                                                                                                                                                                                        \n", - "

                                                                                                                                                                                        \n", - " השתמשו ב־map כדי ליצור מ־names רשימת שמות יווניים באותה הצורה.
                                                                                                                                                                                        \n", - "

                                                                                                                                                                                        \n", - "
                                                                                                                                                                                        \n", - "
                                                                                                                                                                                        \n", - "

                                                                                                                                                                                        \n", - " חשוב!
                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", + "
                                                                                                                                                                                        \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                        \n", + "
                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", + " השתמשו ב־map כדי ליצור מ־names רשימת שמות יווניים באותה הצורה.
                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", + "
                                                                                                                                                                                        \n", + "
                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", + "חשוב!
                                                                                                                                                                                        \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                        \n", - "
                                                                                                                                                                                        \n", + "
                                                                                                                                                                                        \n", "
                                                                                                                                                                                        " ] }, @@ -194,9 +194,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                        \n", - " צורת ה־map בפתרון שלכם הייתה אמורה להשתמש בדיוק באותם חלקי הלולאה.
                                                                                                                                                                                        \n", - " אם עדיין לא ניסיתם לפתור בעצמכם, זה הזמן לכך.
                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", + " צורת ה־map בפתרון שלכם הייתה אמורה להשתמש בדיוק באותם חלקי הלולאה.
                                                                                                                                                                                        \n", + " אם עדיין לא ניסיתם לפתור בעצמכם, זה הזמן לכך.
                                                                                                                                                                                        \n", " התשובה שלכם אמורה להיראות בערך כך:\n", "

                                                                                                                                                                                        " ] @@ -215,16 +215,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הטכניקה" + "### הטכניקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                        \n", - " list comprehension היא טכניקה שמטרתה לפשט את מלאכת הרכבת הרשימה, כך שתהיה קצרה, מהירה וקריאה.
                                                                                                                                                                                        \n", - " ניגש לעניינים! אבל ראו הוזהרתם – במבט ראשון list comprehension עשוי להיראות מעט מאיים וקשה להבנה.
                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", + "list comprehension היא טכניקה שמטרתה לפשט את מלאכת הרכבת הרשימה, כך שתהיה קצרה, מהירה וקריאה.
                                                                                                                                                                                        \n", + " ניגש לעניינים! אבל ראו הוזהרתם – במבט ראשון list comprehension עשוי להיראות מעט מאיים וקשה להבנה.
                                                                                                                                                                                        \n", " הנה זה בא:\n", "

                                                                                                                                                                                        " ] @@ -244,8 +244,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                        \n", - " הדבר הראשון שמבלבל כשנפגשים לראשונה עם list comprehension הוא סדר הקריאה המשונה:
                                                                                                                                                                                        \n", + "

                                                                                                                                                                                        \n", + " הדבר הראשון שמבלבל כשנפגשים לראשונה עם list comprehension הוא סדר הקריאה המשונה:
                                                                                                                                                                                        \n", "

                                                                                                                                                                                        " ] }, @@ -253,10 +253,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                        1. list comprehension מתחיל בפתיחת סוגריים מרובעים (ומסתיים בסגירתם), שמציינים שאנחנו מעוניינים ליצור רשימה חדשה.
                                                                                                                                                                                        2. \n", - "
                                                                                                                                                                                        3. את מה שבתוך הסוגריים עדיף להתחיל לקרוא מהמילה for – נוכל לראות את הביטוי for name in names שאנחנו כבר מכירים.
                                                                                                                                                                                        4. \n", - "
                                                                                                                                                                                        5. מייד לפני המילה for, נכתוב את ערכו של האיבר שאנחנו רוצים לצרף לרשימה החדשה בכל איטרציה של הלולאה.
                                                                                                                                                                                        6. \n", + "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                          1. list comprehension מתחיל בפתיחת סוגריים מרובעים (ומסתיים בסגירתם), שמציינים שאנחנו מעוניינים ליצור רשימה חדשה.
                                                                                                                                                                                          2. \n", + "
                                                                                                                                                                                          3. את מה שבתוך הסוגריים עדיף להתחיל לקרוא מהמילה for – נוכל לראות את הביטוי for name in names שאנחנו כבר מכירים.
                                                                                                                                                                                          4. \n", + "
                                                                                                                                                                                          5. מייד לפני המילה for, נכתוב את ערכו של האיבר שאנחנו רוצים לצרף לרשימה החדשה בכל איטרציה של הלולאה.
                                                                                                                                                                                          6. \n", "
                                                                                                                                                                                          " ] }, @@ -264,7 +264,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", " נביט בהשוואת החלקים של ה־list comprehension לחלקים של לולאת ה־for:\n", "

                                                                                                                                                                                          " ] @@ -274,8 +274,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                          \n", - " \"לולאת\n", - "
                                                                                                                                                                                          השוואה בין יצירת רשימה בעזרת for ובעזרת list comprehension
                                                                                                                                                                                          \n", + "\"לולאת\n", + "
                                                                                                                                                                                          השוואה בין יצירת רשימה בעזרת for ובעזרת list comprehension
                                                                                                                                                                                          \n", "
                                                                                                                                                                                          " ] }, @@ -283,8 +283,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                          \n", - " list comprehension מאפשרת לשנות את הערך שנוסף לרשימה בקלות.
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + " list comprehension מאפשרת לשנות את הערך שנוסף לרשימה בקלות.
                                                                                                                                                                                          \n", " מסיבה זו, מתכנתים רבים יעדיפו את הטכניקה הזו על פני שימוש ב־map, שבה נצטרך להשתמש ב־lambda ברוב המקרים.\n", "

                                                                                                                                                                                          " ] @@ -293,23 +293,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - "

                                                                                                                                                                                          \n", - " נתונה הרשימה numbers = [1, 2, 3, 4, 5].
                                                                                                                                                                                          \n", - " השתמשו ב־list comprehension כדי ליצור בעזרתה את הרשימה [1, 4, 9, 16, 25].
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + " נתונה הרשימה numbers = [1, 2, 3, 4, 5].
                                                                                                                                                                                          \n", + " השתמשו ב־list comprehension כדי ליצור בעזרתה את הרשימה [1, 4, 9, 16, 25].
                                                                                                                                                                                          \n", " האם אפשר להשתמש בפונקציה range במקום ב־numbers?\n", "

                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - "

                                                                                                                                                                                          \n", - " חשוב!
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + "חשוב!
                                                                                                                                                                                          \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", "
                                                                                                                                                                                          " ] }, @@ -317,9 +317,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                          \n", - " list comprehension הוא מבנה גמיש מאוד!
                                                                                                                                                                                          \n", - " נוכל לכתוב בערך שאנחנו מצרפים לרשימה כל ביטוי שיתחשק לנו, ואפילו לקרוא לפונקציות.
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + " list comprehension הוא מבנה גמיש מאוד!
                                                                                                                                                                                          \n", + " נוכל לכתוב בערך שאנחנו מצרפים לרשימה כל ביטוי שיתחשק לנו, ואפילו לקרוא לפונקציות.
                                                                                                                                                                                          \n", " נראה כמה דוגמאות:\n", "

                                                                                                                                                                                          " ] @@ -364,22 +364,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - "

                                                                                                                                                                                          \n", - " השתמשו ב־list comprehension כדי ליצור את הרשימה הבאה:
                                                                                                                                                                                          \n", - " [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]. \n", + "

                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + " השתמשו ב־list comprehension כדי ליצור את הרשימה הבאה:
                                                                                                                                                                                          \n", + "[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]. \n", "

                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - "

                                                                                                                                                                                          \n", - " חשוב!
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + "חשוב!
                                                                                                                                                                                          \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", "
                                                                                                                                                                                          " ] }, @@ -387,16 +387,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תנאים" + "### תנאים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                          \n", - " נציג תבנית נפוצה נוספת הנוגעת לעבודה עם רשימות.
                                                                                                                                                                                          \n", - " לעיתים קרובות, נרצה להוסיף איבר לרשימה רק אם מתקיים לגביו תנאי מסוים.
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + " נציג תבנית נפוצה נוספת הנוגעת לעבודה עם רשימות.
                                                                                                                                                                                          \n", + " לעיתים קרובות, נרצה להוסיף איבר לרשימה רק אם מתקיים לגביו תנאי מסוים.
                                                                                                                                                                                          \n", " לדוגמה, ניקח מרשימת השמות הבאה רק את האנשים ששמם ארוך מתריסר תווים:\n", "

                                                                                                                                                                                          " ] @@ -427,21 +427,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - "

                                                                                                                                                                                          \n", - " השתמשו ב־filter כדי ליצור מ־names רשימת שמות ארוכים באותה הצורה.
                                                                                                                                                                                          \n", - "

                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", - "

                                                                                                                                                                                          \n", - " חשוב!
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + " השתמשו ב־filter כדי ליצור מ־names רשימת שמות ארוכים באותה הצורה.
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + "חשוב!
                                                                                                                                                                                          \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                          \n", - "
                                                                                                                                                                                          \n", + "
                                                                                                                                                                                          \n", "
                                                                                                                                                                                          " ] }, @@ -449,7 +449,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", " נפרק את הקוד הקצר שיצרנו למעלה למרכיביו:\n", "

                                                                                                                                                                                          " ] @@ -458,37 +458,37 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "
                                                                                                                                                                                          פירוק מרכיבי לולאת for עם התניה ליצירת רשימה חדשה
                                                                                                                                                                                          שם המרכיבתיאור המרכיבדוגמה
                                                                                                                                                                                          איפוסאתחול הרשימה לערך ריק.long_names = []
                                                                                                                                                                                          הלולאההחלק שעובר על כל האיברים ב־iterable הקיים ויוצר משתנה שאליו אפשר להתייחס.for name in names:
                                                                                                                                                                                          הבדיקההתניה שבודקת אם הערך עונה על תנאי מסוים.if len(name) > 12:
                                                                                                                                                                                          הוספהצירוף האיבר לרשימה החדשה, אם הוא עונה על התנאי שנקבע בבדיקה.long_names.append(name)
                                                                                                                                                                                          \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
                                                                                                                                                                                          פירוק מרכיבי לולאת for עם התניה ליצירת רשימה חדשה
                                                                                                                                                                                          שם המרכיבתיאור המרכיבדוגמה
                                                                                                                                                                                          איפוסאתחול הרשימה לערך ריק.long_names = []
                                                                                                                                                                                          הלולאההחלק שעובר על כל האיברים ב־iterable הקיים ויוצר משתנה שאליו אפשר להתייחס.for name in names:
                                                                                                                                                                                          הבדיקההתניה שבודקת אם הערך עונה על תנאי מסוים.if len(name) > 12:
                                                                                                                                                                                          הוספהצירוף האיבר לרשימה החדשה, אם הוא עונה על התנאי שנקבע בבדיקה.long_names.append(name)
                                                                                                                                                                                          " ] }, @@ -496,7 +496,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", " ונלמד איך מממשים את אותו הרעיון בדיוק בעזרת list comprehension:\n", "

                                                                                                                                                                                          " ] @@ -516,7 +516,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", " נראה שוב השוואה בין list comprehension ללולאת for רגילה, הפעם עם תנאי:\n", "

                                                                                                                                                                                          " ] @@ -526,8 +526,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                          \n", - " \"בחלק 12 בצבע 4, ] בצבע 1.\"/>\n", - "
                                                                                                                                                                                          השוואה בין יצירת רשימה בעזרת for ובעזרת list comprehension
                                                                                                                                                                                          \n", + "\"בחלק\n", + "
                                                                                                                                                                                          השוואה בין יצירת רשימה בעזרת for ובעזרת list comprehension
                                                                                                                                                                                          \n", "
                                                                                                                                                                                          " ] }, @@ -535,8 +535,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                          \n", - " גם כאן יש לנו סדר קריאה משונה מעט, אך הרעיון הכללי של ה־list comprehension נשמר:
                                                                                                                                                                                          \n", + "

                                                                                                                                                                                          \n", + " גם כאן יש לנו סדר קריאה משונה מעט, אך הרעיון הכללי של ה־list comprehension נשמר:
                                                                                                                                                                                          \n", "

                                                                                                                                                                                          " ] }, @@ -544,11 +544,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                          1. list comprehension מתחיל בפתיחת סוגריים מרובעים (ומסתיים בסגירתם), כדי לציין שאנחנו מעוניינים ליצור רשימה חדשה.
                                                                                                                                                                                          2. \n", - "
                                                                                                                                                                                          3. את מה שבתוך הסוגריים עדיף להתחיל לקרוא מהמילה for – נוכל לראות את הביטוי for name in names שאנחנו כבר מכירים.
                                                                                                                                                                                          4. \n", - "
                                                                                                                                                                                          5. ממשיכים לקרוא את התנאי, אם קיים כזה. רק אם התנאי יתקיים, יתווסף האיבר לרשימה.
                                                                                                                                                                                          6. \n", - "
                                                                                                                                                                                          7. מייד לפני המילה for, נכתוב את ערכו של האיבר שאנחנו רוצים לצרף לרשימה בכל איטרציה של הלולאה.
                                                                                                                                                                                          8. \n", + "
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                            1. list comprehension מתחיל בפתיחת סוגריים מרובעים (ומסתיים בסגירתם), כדי לציין שאנחנו מעוניינים ליצור רשימה חדשה.
                                                                                                                                                                                            2. \n", + "
                                                                                                                                                                                            3. את מה שבתוך הסוגריים עדיף להתחיל לקרוא מהמילה for – נוכל לראות את הביטוי for name in names שאנחנו כבר מכירים.
                                                                                                                                                                                            4. \n", + "
                                                                                                                                                                                            5. ממשיכים לקרוא את התנאי, אם קיים כזה. רק אם התנאי יתקיים, יתווסף האיבר לרשימה.
                                                                                                                                                                                            6. \n", + "
                                                                                                                                                                                            7. מייד לפני המילה for, נכתוב את ערכו של האיבר שאנחנו רוצים לצרף לרשימה בכל איטרציה של הלולאה.
                                                                                                                                                                                            8. \n", "
                                                                                                                                                                                            " ] }, @@ -556,8 +556,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " אפשר לשלב את השיטות כדי לבנות בקלילות רשימות מורכבות.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " אפשר לשלב את השיטות כדי לבנות בקלילות רשימות מורכבות.
                                                                                                                                                                                            \n", " נמצא את שמות כל הקבצים שהסיומת שלהם היא \".html\":\n", "

                                                                                                                                                                                            " ] @@ -577,18 +577,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### תרגיל ביניים: טיפול שורש" + "#### תרגיל ביניים: טיפול שורש" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                            \n", + " בחנות של סנדל'ה הארון קצת מבולגן.
                                                                                                                                                                                            \n", + " כשלקוח נכנס ומבקש מסנדל'ה למדוד מידה מסוימת, היא צריכה לפשפש בין אלפי המוצרים בארון, ולפעמים המידות שהיא מוצאת שם מוזרות מאוד.
                                                                                                                                                                                            \n", + " ההנחיות שסנדל'ה נתנה לנו לצורך סידור הארון שלה די פשוטות:
                                                                                                                                                                                            \n", + " התעלמו מכל מידה שיש בה תו שאינו ספרה או נקודה, והוציאו שורש רק מהמידות המספריות.
                                                                                                                                                                                            \n", " התעלמו גם ממספרים עם יותר מנקודה אחת.\n", "

                                                                                                                                                                                            " ] @@ -597,9 +597,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " לדוגמה, עבור הארון ['100', '25.0', '12a', 'mEoW', '0'], החזירו [10.0, 5.0, 0.0].
                                                                                                                                                                                            \n", - " עבור הארון ['Area51', '303', '2038', 'f00b4r', '314.1'], החזירו [17.4, 45.14, 17.72].
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " לדוגמה, עבור הארון ['100', '25.0', '12a', 'mEoW', '0'], החזירו [10.0, 5.0, 0.0].
                                                                                                                                                                                            \n", + " עבור הארון ['Area51', '303', '2038', 'f00b4r', '314.1'], החזירו [17.4, 45.14, 17.72].
                                                                                                                                                                                            \n", " (מחקנו קצת ספרות אחרי הנקודה בשביל הנראות).\n", "

                                                                                                                                                                                            " ] @@ -608,8 +608,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " כתבו פונקציה בשם organize_closet שמקבלת רשימת ארון ומסדרת אותו.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " כתבו פונקציה בשם organize_closet שמקבלת רשימת ארון ומסדרת אותו.
                                                                                                                                                                                            \n", " תוכלו לבדוק את עצמכם באמצעות הפונקציה generate_closet שתיצור עבורכם ארון אסלי מהחנות של סנדל'ה.\n", "

                                                                                                                                                                                            " ] @@ -643,16 +643,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - " \"אזהרה!\" \n", - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "

                                                                                                                                                                                            \n", - " בפייתון, נהוג לכנות משתנה שלא יהיה בו שימוש בעתיד כך: _.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "\"אזהרה!\"\n", + "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " בפייתון, נהוג לכנות משתנה שלא יהיה בו שימוש בעתיד כך: _.
                                                                                                                                                                                            \n", " דוגמה טובה אפשר לראות בלולאה שב־generate_closet.\n", "

                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", "
                                                                                                                                                                                            " ] }, @@ -660,16 +660,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Dictionary Comprehension ו־Set Comprehension" + "### Dictionary Comprehension ו־Set Comprehension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " מלבד list comprehension, קיימים גם set comprehension ו־dictionary comprehension שפועלים בצורה דומה.
                                                                                                                                                                                            \n", - " הרעיון בבסיסו נשאר זהה – שימוש בערכי iterable כלשהו לצורך יצירת מבנה נתונים חדש בצורה קריאה ומהירה.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " מלבד list comprehension, קיימים גם set comprehension ו־dictionary comprehension שפועלים בצורה דומה.
                                                                                                                                                                                            \n", + " הרעיון בבסיסו נשאר זהה – שימוש בערכי iterable כלשהו לצורך יצירת מבנה נתונים חדש בצורה קריאה ומהירה.
                                                                                                                                                                                            \n", " נראה דוגמה ל־dictionary comprehension שבו המפתח הוא מספר, והערך הוא אותו המספר בריבוע:\n", "

                                                                                                                                                                                            " ] @@ -688,9 +688,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " בדוגמה למעלה חישבנו את הריבוע של כל אחד מעשרת המספרים החיוביים הראשונים.
                                                                                                                                                                                            \n", - " משתנה הלולאה i עבר על כל אחד מהמספרים בטווח שבין 1 ל־11 (לא כולל), ויצר עבור כל אחד מהם את המפתח i, ואת הערך i ** 2.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " בדוגמה למעלה חישבנו את הריבוע של כל אחד מעשרת המספרים החיוביים הראשונים.
                                                                                                                                                                                            \n", + " משתנה הלולאה i עבר על כל אחד מהמספרים בטווח שבין 1 ל־11 (לא כולל), ויצר עבור כל אחד מהם את המפתח i, ואת הערך i ** 2.
                                                                                                                                                                                            \n", "

                                                                                                                                                                                            " ] }, @@ -698,9 +698,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                            " ] @@ -709,7 +709,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", " בצורה דומה אפשר ליצור set comprehension:\n", "

                                                                                                                                                                                            " ] @@ -730,9 +730,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " התחביר של set comprehension כמעט זהה לתחביר של list comprehension.
                                                                                                                                                                                            \n", - " ההבדל היחיד ביניהם הוא שב־set comprehension אנחנו משתמשים בסוגריים מסולסלים.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " התחביר של set comprehension כמעט זהה לתחביר של list comprehension.
                                                                                                                                                                                            \n", + " ההבדל היחיד ביניהם הוא שב־set comprehension אנחנו משתמשים בסוגריים מסולסלים.
                                                                                                                                                                                            \n", " ההבדל בינו לבין dictionary comprehension הוא שאנחנו משמיטים את הנקודתיים והערך, ומשאירים רק את המפתח.\n", "

                                                                                                                                                                                            " ] @@ -741,22 +741,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "

                                                                                                                                                                                            \n", - " מצאו כמה מהמספרים הנמוכים מ־1,000 מתחלקים ב־3 וב־7 ללא שארית.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " מצאו כמה מהמספרים הנמוכים מ־1,000 מתחלקים ב־3 וב־7 ללא שארית.
                                                                                                                                                                                            \n", " השתמשו ב־set comprehension.\n", "

                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "

                                                                                                                                                                                            \n", - " חשוב!
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "חשוב!
                                                                                                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", "
                                                                                                                                                                                            " ] }, @@ -764,15 +764,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Generator Expression" + "### Generator Expression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " בשבוע שעבר למדנו על הכוח הטמון ב־generators.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " בשבוע שעבר למדנו על הכוח הטמון ב־generators.
                                                                                                                                                                                            \n", " בזכות שמירת ערך אחד בלבד בכל פעם, generators מאפשרים לנו לכתוב תוכניות יעילות מבחינת צריכת הזיכרון.\n", "

                                                                                                                                                                                            " ] @@ -781,7 +781,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", " נכתוב generator פשוט שמניב עבורנו את אורכי השורות בטקסט מסוים:\n", "

                                                                                                                                                                                            " ] @@ -808,9 +808,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " חדי העין כבר זיהו את התבנית המוכרת – יש פה for, מייד אחריו if ומייד אחריו אנחנו יוצרים איבר חדש.
                                                                                                                                                                                            \n", - " אם כך, generator expression הוא בסך הכול שם מפונפן למה שאנחנו היינו קוראים לו generator comprehension.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " חדי העין כבר זיהו את התבנית המוכרת – יש פה for, מייד אחריו if ומייד אחריו אנחנו יוצרים איבר חדש.
                                                                                                                                                                                            \n", + " אם כך, generator expression הוא בסך הכול שם מפונפן למה שאנחנו היינו קוראים לו generator comprehension.
                                                                                                                                                                                            \n", " נמיר את הפונקציה get_line_lengths ל־generator comprehension:\n", "

                                                                                                                                                                                            " ] @@ -832,7 +832,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", " נעמוד על ההבדלים בין הגישות:\n", "

                                                                                                                                                                                            " ] @@ -842,8 +842,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                            \n", - " \"בחלק\n", - "
                                                                                                                                                                                            השוואה בין יצירת generator בעזרת פונקציה ובין יצירת generator בעזרת generator expression
                                                                                                                                                                                            \n", + "\"בחלק\n", + "
                                                                                                                                                                                            השוואה בין יצירת generator בעזרת פונקציה ובין יצירת generator בעזרת generator expression
                                                                                                                                                                                            \n", "
                                                                                                                                                                                            " ] }, @@ -851,8 +851,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " כאמור, הרעיון דומה מאוד ל־list comprehension.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " כאמור, הרעיון דומה מאוד ל־list comprehension.
                                                                                                                                                                                            \n", " האיבר שנחזיר בכל פעם מה־generator בעזרת yield יהפוך ב־generator expression להיות האיבר שנמצא לפני המילה for.\n", "

                                                                                                                                                                                            " ] @@ -861,8 +861,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " שימו לב שה־generator expression שקול לערך המוחזר לנו בקריאה לפונקציית ה־generator.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " שימו לב שה־generator expression שקול לערך המוחזר לנו בקריאה לפונקציית ה־generator.
                                                                                                                                                                                            \n", " זו נקודה שחשוב לשים עליה דגש: generator expression מחזיר generator iterator, ולא פונקציית generator.\n", "

                                                                                                                                                                                            " ] @@ -871,7 +871,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", " נסתכל על דוגמה נוספת ל־generator expression שמחזיר את ריבועי כל המספרים מ־1 ועד 11 (לא כולל):\n", "

                                                                                                                                                                                            " ] @@ -890,7 +890,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", " בדיוק כמו ב־generator iterator רגיל, אחרי שנשתמש באיבר לא נוכל לקבל אותו שוב:\n", "

                                                                                                                                                                                            " ] @@ -908,7 +908,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", " והפעלת next על generator iterator שכבר הניב את כל הערכים תקפיץ StopIterator: \n", "

                                                                                                                                                                                            " ] @@ -926,9 +926,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " ולטריק האחרון בנושא זה –
                                                                                                                                                                                            \n", - " טוב לדעת שכשמעבירים לפונקציה generator expression כפרמטר יחיד, לא צריך לעטוף אותו בסוגריים נוספים.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " ולטריק האחרון בנושא זה –
                                                                                                                                                                                            \n", + " טוב לדעת שכשמעבירים לפונקציה generator expression כפרמטר יחיד, לא צריך לעטוף אותו בסוגריים נוספים.
                                                                                                                                                                                            \n", " לדוגמה:\n", "

                                                                                                                                                                                            " ] @@ -946,8 +946,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " בדוגמה שלמעלה ה־generator comprehension יצר את כל ריבועי המספרים מ־1 ועד 11, לא כולל.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " בדוגמה שלמעלה ה־generator comprehension יצר את כל ריבועי המספרים מ־1 ועד 11, לא כולל.
                                                                                                                                                                                            \n", " הפונקציה sum השתמשה בכל ריבועי המספרים שה־generator הניב, וסכמה אותם.\n", "

                                                                                                                                                                                            " ] @@ -956,15 +956,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### לולאות מרובות" + "### לולאות מרובות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " לפעמים נרצה לכתוב כמה לולאות מקוננות זו בתוך זו.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " לפעמים נרצה לכתוב כמה לולאות מקוננות זו בתוך זו.
                                                                                                                                                                                            \n", " לדוגמה, ליצירת כל האפשרויות שיכולות להתקבל בהטלת 2 קוביות:\n", "

                                                                                                                                                                                            " ] @@ -987,7 +987,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", " נוכל להפוך גם את המבנה הזה ל־list comprehension:\n", "

                                                                                                                                                                                            " ] @@ -1006,8 +1006,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " כדי להבין איך זה עובד, חשוב לזכור איך קוראים list comprehension:
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " כדי להבין איך זה עובד, חשוב לזכור איך קוראים list comprehension:
                                                                                                                                                                                            \n", " פשוט התחילו לקרוא מה־for הראשון, וחזרו לאיבר שאנחנו מוסיפים לרשימה בכל פעם רק בסוף.\n", "

                                                                                                                                                                                            " ] @@ -1016,7 +1016,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", " אם במשחק מוזר כלשהו נצטרך לזרוק 3 קוביות, לדוגמה, ונרצה לראות אילו אופציות יכולות להתקבל, נוכל לכתוב זאת כך:\n", "

                                                                                                                                                                                            " ] @@ -1040,8 +1040,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " שבירת השורה בתא שלמעלה נעשתה מטעמי סגנון.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " שבירת השורה בתא שלמעלה נעשתה מטעמי סגנון.
                                                                                                                                                                                            \n", " באופן טכני, מותר לרשום את ה־list comprehension הזה בשורה אחת.\n", "

                                                                                                                                                                                            " ] @@ -1050,21 +1050,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "

                                                                                                                                                                                            \n", - " צרו פונקציית generator ו־generator expression מהדוגמה האחרונה.
                                                                                                                                                                                            \n", - "

                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "

                                                                                                                                                                                            \n", - " חשוב!
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " צרו פונקציית generator ו־generator expression מהדוגמה האחרונה.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "חשוב!
                                                                                                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", "
                                                                                                                                                                                            " ] }, @@ -1072,22 +1072,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "

                                                                                                                                                                                            \n", - " החסרון בדוגמה של קוביות הוא שאנחנו מקבלים בתוצאות גם את (1, 1, 6) וגם את (6, 1, 1) .
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " החסרון בדוגמה של קוביות הוא שאנחנו מקבלים בתוצאות גם את (1, 1, 6) וגם את (6, 1, 1) .
                                                                                                                                                                                            \n", " האם תוכלו לפתור בעיה זו בקלות?\n", "

                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", - "

                                                                                                                                                                                            \n", - " חשוב!
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + "חשוב!
                                                                                                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                            \n", - "
                                                                                                                                                                                            \n", + "
                                                                                                                                                                                            \n", "
                                                                                                                                                                                            " ] }, @@ -1095,28 +1095,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### נימוסין" + "### נימוסין" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", - " הטכניקות שלמדנו במחברת זו מפקידות בידינו כוח רב, אך כמו שאומר הדוד בן, \"עם כוח גדול באה אחריות גדולה\".
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " הטכניקות שלמדנו במחברת זו מפקידות בידינו כוח רב, אך כמו שאומר הדוד בן, \"עם כוח גדול באה אחריות גדולה\".
                                                                                                                                                                                            \n", " עלינו לזכור תמיד שהמטרה של הטכניקות הללו בסופו של דבר היא להפוך את הקוד לקריא יותר.\n", "

                                                                                                                                                                                            \n", - "\n", - "

                                                                                                                                                                                            \n", - " לעיתים קרובות מתכנתים לא מנוסים ישתמשו בטכניקות שנלמדו במחברת זו כדי לבנות מבנים מורכבים מאוד.
                                                                                                                                                                                            \n", - " התוצאה תהיה קוד שקשה לתחזק ולקרוא, ולעיתים קרובות הקוד יוחלף לבסוף בלולאות רגילות.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " לעיתים קרובות מתכנתים לא מנוסים ישתמשו בטכניקות שנלמדו במחברת זו כדי לבנות מבנים מורכבים מאוד.
                                                                                                                                                                                            \n", + " התוצאה תהיה קוד שקשה לתחזק ולקרוא, ולעיתים קרובות הקוד יוחלף לבסוף בלולאות רגילות.
                                                                                                                                                                                            \n", " כלל האצבע הוא שבשורה לא יהיו יותר מ־99 תווים, ושהקוד יהיה פשוט ונוח לקריאה בידי מתכנת חיצוני.\n", "

                                                                                                                                                                                            \n", - "\n", - "

                                                                                                                                                                                            \n", - " קהילת פייתון דשה בנושאי קריאות קוד לעיתים קרובות, תוך כדי התייחסויות תכופות ל־PEP8.
                                                                                                                                                                                            \n", - " נסביר בקצרה – PEP8 הוא מסמך שמתקנן את הקווים הכלליים של סגנון הכתיבה הרצוי בפייתון.
                                                                                                                                                                                            \n", - " לדוגמה, מאגרי קוד העוקבים אחרי המסמך בצורה מחמירה לא מתירים כתיבת שורות קוד שבהן יותר מ־79 תווים.
                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", + " קהילת פייתון דשה בנושאי קריאות קוד לעיתים קרובות, תוך כדי התייחסויות תכופות ל־PEP8.
                                                                                                                                                                                            \n", + " נסביר בקצרה – PEP8 הוא מסמך שמתקנן את הקווים הכלליים של סגנון הכתיבה הרצוי בפייתון.
                                                                                                                                                                                            \n", + " לדוגמה, מאגרי קוד העוקבים אחרי המסמך בצורה מחמירה לא מתירים כתיבת שורות קוד שבהן יותר מ־79 תווים.
                                                                                                                                                                                            \n", " כתיבה מסוגננת היטב היא נושא רחב יריעה שנעמיק בו בהמשך הקורס.\n", "

                                                                                                                                                                                            " ] @@ -1125,14 +1123,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## סיכום" + "## סיכום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                            \n", + "

                                                                                                                                                                                            \n", " במחברת זו למדנו 4 טכניקות שימושיות שעוזרות לנו ליצור בצורה קריאה ומהירה מבני נתונים:\n", "

                                                                                                                                                                                            " ] @@ -1141,11 +1139,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                            • List Comprehensions
                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                            • Dictionary Comprehensions
                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                            • Set Comprehensions
                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                            • Generator Expressions
                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                \n", + "
                                                                                                                                                                                              • List Comprehensions
                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                              • Dictionary Comprehensions
                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                              • Set Comprehensions
                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                              • Generator Expressions
                                                                                                                                                                                              • \n", "
                                                                                                                                                                                              " ] }, @@ -1153,8 +1151,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " למדנו מעט איך להשתמש בהם ומתי, ועל ההקבלות שלהם ללולאות רגילות ולפונקציות כמו map ו־filter.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " למדנו מעט איך להשתמש בהם ומתי, ועל ההקבלות שלהם ללולאות רגילות ולפונקציות כמו map ו־filter.
                                                                                                                                                                                              \n", " למדנו גם איך אפשר להשתמש בכל אחת מהן במצב שבו יש לנו כמה לולאות מקוננות.\n", "

                                                                                                                                                                                              " ] @@ -1163,7 +1161,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", "מתכנתי פייתון עושים שימוש רב בטכניקות האלו, וחשוב לשלוט בהן היטב כדי לדעת לקרוא קוד וכדי להצליח לממש רעיונות במהירות.\n", "

                                                                                                                                                                                              " ] @@ -1172,27 +1170,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### הֲיִי שלום" + "### הֲיִי שלום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " כתבו פונקציה בשם words_length שמקבלת משפט ומחזירה את אורכי המילים שבו, לפי סדרן במשפט.
                                                                                                                                                                                              \n", - " לצורך התרגיל, הניחו שסימני הפיסוק הם חלק מאורכי המילים.
                                                                                                                                                                                              \n", + "

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

                                                                                                                                                                                              \n", - "

                                                                                                                                                                                              \n", - " לדוגמה:
                                                                                                                                                                                              \n", - " עבור המשפט: Toto, I've a feeling we're not in Kansas anymore
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " לדוגמה:
                                                                                                                                                                                              \n", + " עבור המשפט: Toto, I've a feeling we're not in Kansas anymore
                                                                                                                                                                                              \n", " החזירו את הרשימה: [5, 4, 1, 7, 5, 3, 2, 6, 7]\n", "

                                                                                                                                                                                              " ] @@ -1201,16 +1199,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### א אוהל, פ זה פייתון" + "### א אוהל, פ זה פייתון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " כתבו פונקציה בשם get_letters שמחזירה את רשימת כל התווים בין a ל־z ובין A ל־Z.
                                                                                                                                                                                              \n", - " השתמשו ב־list comprehension, ב־ord וב־chr.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " כתבו פונקציה בשם get_letters שמחזירה את רשימת כל התווים בין a ל־z ובין A ל־Z.
                                                                                                                                                                                              \n", + " השתמשו ב־list comprehension, ב־ord וב־chr.
                                                                                                                                                                                              \n", " הקפידו שלא לכלול את המספרים 65, 90, 97 או 122 בקוד שלכם.\n", "

                                                                                                                                                                                              " ] @@ -1219,17 +1217,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### חתול ארוך הוא ארוך" + "### חתול ארוך הוא ארוך" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " כתבו פונקציה בשם count_words שמקבלת כפרמטר טקסט, ומחזירה מילון של אורכי המילים שבו.
                                                                                                                                                                                              \n", - " השתמשו ב־comprehension לבחירתכם (או ב־generator expression) כדי לנקות את הטקסט מסימנים שאינם אותיות.
                                                                                                                                                                                              \n", - " לאחר מכן, השתמשו ב־dictionary comprehension כדי לגלות את אורכה של כל מילה במשפט.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " כתבו פונקציה בשם count_words שמקבלת כפרמטר טקסט, ומחזירה מילון של אורכי המילים שבו.
                                                                                                                                                                                              \n", + " השתמשו ב־comprehension לבחירתכם (או ב־generator expression) כדי לנקות את הטקסט מסימנים שאינם אותיות.
                                                                                                                                                                                              \n", + " לאחר מכן, השתמשו ב־dictionary comprehension כדי לגלות את אורכה של כל מילה במשפט.
                                                                                                                                                                                              \n", "

                                                                                                                                                                                              " ] }, @@ -1237,7 +1235,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", " לדוגמה, עבור הטקסט הבא, בדקו שחוזר לכם המילון המופיע מייד אחריו.\n", "

                                                                                                                                                                                              " ] @@ -1265,16 +1263,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ואלה שמות" + "### ואלה שמות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " כתבו פונקציה בשם full_names, שתקבל כפרמטרים רשימת שמות פרטיים ורשימת שמות משפחה, ותרכיב מהם שמות מלאים.
                                                                                                                                                                                              \n", - " לכל שם פרטי תצמיד הפונקציה את כל שמות המשפחה שהתקבלו.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " כתבו פונקציה בשם full_names, שתקבל כפרמטרים רשימת שמות פרטיים ורשימת שמות משפחה, ותרכיב מהם שמות מלאים.
                                                                                                                                                                                              \n", + " לכל שם פרטי תצמיד הפונקציה את כל שמות המשפחה שהתקבלו.
                                                                                                                                                                                              \n", " ודאו שהשמות חוזרים כאשר האות הראשונה בשם הפרטי ובשם המשפחה היא אות גדולה.\n", "

                                                                                                                                                                                              " ] @@ -1283,8 +1281,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " על הפונקציה לקבל גם פרמטר אופציונלי בשם min_length.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " על הפונקציה לקבל גם פרמטר אופציונלי בשם min_length.
                                                                                                                                                                                              \n", " אם הפרמטר הועבר, שמות מלאים שכמות התווים שבהם קטנה מהאורך שהוגדר – לא יוחזרו מהפונקציה.\n", "

                                                                                                                                                                                              " ] @@ -1293,7 +1291,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", " לדוגמה:\n", "

                                                                                                                                                                                              " ] diff --git a/week6/4_Modules_Part_2.ipynb b/week6/4_Modules_Part_2.ipynb index 04aedcb..f25ed36 100644 --- a/week6/4_Modules_Part_2.ipynb +++ b/week6/4_Modules_Part_2.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Modules – חלק 2" + "# Modules – חלק 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " בשבוע שעבר עשינו את צעדינו הראשונים בעולם המודולים.
                                                                                                                                                                                              \n", - " למדנו את הרעיון העומד מאחוריהם, כיצד לייבא אותם, איפה למצוא עליהם מידע וכיצד להשתמש בהם.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " בשבוע שעבר עשינו את צעדינו הראשונים בעולם המודולים.
                                                                                                                                                                                              \n", + " למדנו את הרעיון העומד מאחוריהם, כיצד לייבא אותם, איפה למצוא עליהם מידע וכיצד להשתמש בהם.
                                                                                                                                                                                              \n", " השתמשנו במודולים שמגיעים עם פייתון, כמו math, random או datetime, ופתרנו בעזרתם בעיות מורכבות.\n", "

                                                                                                                                                                                              " ] @@ -36,11 +36,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                              " ] }, @@ -48,10 +48,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                              \n", + " אך ישנם גם חסרונות למודולים המובנים בפייתון:
                                                                                                                                                                                              \n", + " הם לא מתיימרים לפתור בעיות איזוטריות, כמו קריאת חדשות או פתירת קוביות הונגריות.
                                                                                                                                                                                              \n", + " יתרה מזאת, המודולים מתעדכנים לעיתים רחוקות, חלקם מפגרים אחר קצב החידושים בעולם,
                                                                                                                                                                                              \n", " ועבור חלקם הקהילה מפתחת אלטרנטיבה טובה יותר.\n", "

                                                                                                                                                                                              " ] @@ -60,8 +60,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " בפרק זה נלמד על מודולים שנוצרו על ידי צד שלישי – מתכנתים כמוכם.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " בפרק זה נלמד על מודולים שנוצרו על ידי צד שלישי – מתכנתים כמוכם.
                                                                                                                                                                                              \n", " לאורך המחברת הזו נבין איך מוצאים אותם, איך מתקינים אותם ואיך משתמשים בהם.\n", "

                                                                                                                                                                                              " ] @@ -70,16 +70,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## איתור מודול" + "## איתור מודול" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " בדרך כלל המסע שלנו יתחיל כאשר ניתקל בבעיה שגורמת לנו לשבור את הראש –
                                                                                                                                                                                              \n", - " מאחר שהיא מורכבת מאוד או שיש לה מקרי קצה רבים מאוד.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " בדרך כלל המסע שלנו יתחיל כאשר ניתקל בבעיה שגורמת לנו לשבור את הראש –
                                                                                                                                                                                              \n", + " מאחר שהיא מורכבת מאוד או שיש לה מקרי קצה רבים מאוד.
                                                                                                                                                                                              \n", " זו גם יכולה להיות בעיה שכנראה כבר פתרו בעבר ושייקח לנו זמן לממש בעצמנו.\n", "

                                                                                                                                                                                              " ] @@ -88,9 +88,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " נניח שאנחנו בונים פרויקט קטן משלנו – מילון אינטרנטי שמציג למשתמש את פירוש המילה שהוא מקליד.
                                                                                                                                                                                              \n", - " אנחנו רוצים שכשמחפשים מילה במילון שלנו – אחת התוצאות תהיה תקציר מוויקיפדיה.
                                                                                                                                                                                              \n", + "

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

                                                                                                                                                                                              " ] @@ -99,8 +99,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " המקום הראשון שנפנה אליו הוא מנוע החיפוש המועדף עליכם.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " המקום הראשון שנפנה אליו הוא מנוע החיפוש המועדף עליכם.
                                                                                                                                                                                              \n", " נחפש מודול שמתעסק בוויקיפדיה: python module wikipedia, וננסה לקבל מושג על מודולים שעשויים לעזור לנו:\n", "

                                                                                                                                                                                              " ] @@ -110,8 +110,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                              \n", - " \"4\n", - "
                                                                                                                                                                                              תוצאות החיפוש שהופיעו לנו בגוגל כשחיפשנו python module wikipedia
                                                                                                                                                                                              \n", + "\"4\n", + "
                                                                                                                                                                                              תוצאות החיפוש שהופיעו לנו בגוגל כשחיפשנו python module wikipedia
                                                                                                                                                                                              \n", "
                                                                                                                                                                                              " ] }, @@ -119,11 +119,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " הקישור הראשון שהתקבל בתוצאות החיפוש מוביל אותנו לאתר שנקרא PyPI, או בשמו המלא – Python Package Index.
                                                                                                                                                                                              \n", - " זהו האתר הרשמי של פייתון לאחסון חבילות (שאנחנו מכירים כ\"מודולים\") – מאגר גדול שבו חבילות מכל סוג וצורה.
                                                                                                                                                                                              \n", - " בבסיסו, PyPI הוא מקום ריכוזי שאליו משתמשים יכולים להעלות חבילות שיצרו, וממנו ציבור המתכנתים יכול להוריד חבילות ולהשתמש בהן.
                                                                                                                                                                                              \n", - " נכון לכתיבת מילים אלו, ל־PyPI הועלו יותר מ־235,000 חבילות.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " הקישור הראשון שהתקבל בתוצאות החיפוש מוביל אותנו לאתר שנקרא PyPI, או בשמו המלא – Python Package Index.
                                                                                                                                                                                              \n", + " זהו האתר הרשמי של פייתון לאחסון חבילות (שאנחנו מכירים כ\"מודולים\") – מאגר גדול שבו חבילות מכל סוג וצורה.
                                                                                                                                                                                              \n", + " בבסיסו, PyPI הוא מקום ריכוזי שאליו משתמשים יכולים להעלות חבילות שיצרו, וממנו ציבור המתכנתים יכול להוריד חבילות ולהשתמש בהן.
                                                                                                                                                                                              \n", + " נכון לכתיבת מילים אלו, ל־PyPI הועלו יותר מ־235,000 חבילות.
                                                                                                                                                                                              \n", "

                                                                                                                                                                                              " ] }, @@ -131,8 +131,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " ישנו הבדל בין משמעות המונח \"חבילה\" (Package) לבין משמעות המונח \"מודול\" (Module).
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " ישנו הבדל בין משמעות המונח \"חבילה\" (Package) לבין משמעות המונח \"מודול\" (Module).
                                                                                                                                                                                              \n", " נסביר את ההבדל בין המילים באחד השבועות הבאים. עד אז – נתייחס אליהן כאל מילים נרדפות.\n", "

                                                                                                                                                                                              " ] @@ -141,7 +141,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", " נכנס לקישור שהופיע בתוצאות החיפוש, ונביט על דף המודול wikipedia באתר PyPI:\n", "

                                                                                                                                                                                              " ] @@ -151,8 +151,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                              \n", - " \"תמונת\n", - "
                                                                                                                                                                                              דף המודול wikipedia באתר PyPI.
                                                                                                                                                                                              \n", + "\"תמונת\n", + "
                                                                                                                                                                                              דף המודול wikipedia באתר PyPI.
                                                                                                                                                                                              \n", "
                                                                                                                                                                                              " ] }, @@ -160,9 +160,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " במרכז האתר נוכל לראות פירוט קצר על החבילה, ולעיתים יופיעו הוראות התקנה ודוגמאות קוד המדריכות כיצד לעבוד איתה.
                                                                                                                                                                                              \n", - " מדובר במידע שימושי שכדאי לעיין בו –
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " במרכז האתר נוכל לראות פירוט קצר על החבילה, ולעיתים יופיעו הוראות התקנה ודוגמאות קוד המדריכות כיצד לעבוד איתה.
                                                                                                                                                                                              \n", + " מדובר במידע שימושי שכדאי לעיין בו –
                                                                                                                                                                                              \n", " פעמים רבות נמצא בו קישורים רלוונטיים, או דוגמאות שנותנות מושג על נוחות השימוש בחבילה לצורכנו.\n", "

                                                                                                                                                                                              " ] @@ -171,10 +171,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " בצד ימין למעלה נוכל למצוא את תאריך העדכון האחרון של החבילה – במקרה שלנו, לפני 6 שנים, ב־2014.
                                                                                                                                                                                              \n", - " מדובר בתאריך ישן וברור שהחבילה אינה מתוחזקת.
                                                                                                                                                                                              \n", - " נעדיף שלא לבחור חבילות כאלו לצורכי פרויקטים גדולים שאנחנו מתכוונים לתחזק לאורך זמן.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " בצד ימין למעלה נוכל למצוא את תאריך העדכון האחרון של החבילה – במקרה שלנו, לפני 6 שנים, ב־2014.
                                                                                                                                                                                              \n", + " מדובר בתאריך ישן וברור שהחבילה אינה מתוחזקת.
                                                                                                                                                                                              \n", + " נעדיף שלא לבחור חבילות כאלו לצורכי פרויקטים גדולים שאנחנו מתכוונים לתחזק לאורך זמן.
                                                                                                                                                                                              \n", " לרוב נעדיף חבילות עם סביבת תמיכה כמה שיותר מבוססת, וכאלו שעבורן משוחררים תיקונים ועדכונים שיוצאים תדיר.\n", "

                                                                                                                                                                                              " ] @@ -183,9 +183,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " בצד שמאל נוכל לראות נתונים שמעידים, בין היתר, על הפופולריות של הפרויקט.
                                                                                                                                                                                              \n", - " מדד הכוכבים הוא למעשה כמות ה\"לייקים\" שהפרויקט קיבל בפלטפורמה לניהול קוד בשם GitHub.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " בצד שמאל נוכל לראות נתונים שמעידים, בין היתר, על הפופולריות של הפרויקט.
                                                                                                                                                                                              \n", + " מדד הכוכבים הוא למעשה כמות ה\"לייקים\" שהפרויקט קיבל בפלטפורמה לניהול קוד בשם GitHub.
                                                                                                                                                                                              \n", " לרוב נעדיף לבחור בספריות שצברו כמה מאות כוכבים. לזו יש כמעט 2,000, מספר לא רע בכלל.\n", "

                                                                                                                                                                                              " ] @@ -194,15 +194,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## התקנת החבילה" + "## התקנת החבילה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " המודול הזה נראה טוב דיו לצורכנו, והחלטנו להשתמש בו.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " המודול הזה נראה טוב דיו לצורכנו, והחלטנו להשתמש בו.
                                                                                                                                                                                              \n", " אם ננסה לייבא אותו, נקבל שגיאה:\n", "

                                                                                                                                                                                              " ] @@ -220,8 +220,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " זה מובן. פייתון מן הסתם לא יכולה להגיע עם כל ה־235,000 מודולים שפרסמה הקהילה.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " זה מובן. פייתון מן הסתם לא יכולה להגיע עם כל ה־235,000 מודולים שפרסמה הקהילה.
                                                                                                                                                                                              \n", " אם כך, נצטרך לבחור אילו מודולים אנחנו רוצים להתקין, ולהתקין אותם לפני שנוכל להשתמש בהם.\n", "

                                                                                                                                                                                              " ] @@ -230,9 +230,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " תהליך ההתקנה הוא לרוב פשוט ולא דורש מאמץ רב.
                                                                                                                                                                                              \n", - " פייתון מגיעה עם כלי שנקרא pip, שמשמש להתקנה של חבילות חיצוניות ולניהולן.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " תהליך ההתקנה הוא לרוב פשוט ולא דורש מאמץ רב.
                                                                                                                                                                                              \n", + " פייתון מגיעה עם כלי שנקרא pip, שמשמש להתקנה של חבילות חיצוניות ולניהולן.
                                                                                                                                                                                              \n", " כדי להשתמש בו, פתחו את שורת הפקודה במחשב שלכם.\n", "

                                                                                                                                                                                              " ] @@ -241,10 +241,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " כדי לפתוח את שורת הפקודה במערכת ההפעלה חלונות, לחצו על ⊞ WinKey+R במקלדת.
                                                                                                                                                                                              \n", - " הלחצן ⊞ WinKey מופיע בין כפתור ה־ALT לכפתור ה־CTRL בצד השמאלי התחתון של המקלדת.
                                                                                                                                                                                              \n", - " בחלון הקטן שייפתח לכם, הקישו cmd ולחצו ⏎ Enter.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " כדי לפתוח את שורת הפקודה במערכת ההפעלה חלונות, לחצו על ⊞ WinKey+R במקלדת.
                                                                                                                                                                                              \n", + " הלחצן ⊞ WinKey מופיע בין כפתור ה־ALT לכפתור ה־CTRL בצד השמאלי התחתון של המקלדת.
                                                                                                                                                                                              \n", + " בחלון הקטן שייפתח לכם, הקישו cmd ולחצו ⏎ Enter.
                                                                                                                                                                                              \n", " בשלב זה אמור להופיע לכם על המסך חלון שחור. זוהי שורת הפקודה.\n", "

                                                                                                                                                                                              " ] @@ -253,10 +253,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " כדי לפתוח את שורת הפקודה במערכת Mac, לחצו על cmd ⌘+Space במקלדת.
                                                                                                                                                                                              \n", - " בחלון שייפתח לכם, הקישו Terminal. התוכנה Terminal אמורה להופיע לכם כעת תחת המילים Top Hit.
                                                                                                                                                                                              \n", - " לחצו לחיצה כפולה על Terminal.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " כדי לפתוח את שורת הפקודה במערכת Mac, לחצו על cmd ⌘+Space במקלדת.
                                                                                                                                                                                              \n", + " בחלון שייפתח לכם, הקישו Terminal. התוכנה Terminal אמורה להופיע לכם כעת תחת המילים Top Hit.
                                                                                                                                                                                              \n", + " לחצו לחיצה כפולה על Terminal.
                                                                                                                                                                                              \n", " בשלב זה אמור להופיע לכם על המסך חלון לבן. זוהי שורת הפקודה.\n", "

                                                                                                                                                                                              " ] @@ -265,9 +265,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " עכשיו, כששורת הפקודה פתוחה, נוכל להתקין את החבילה wikipedia.
                                                                                                                                                                                              \n", - " נכתוב בשורת הפקודה: pip install wikipedia, ונראה את pip מתקין עבורנו את החבילה.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " עכשיו, כששורת הפקודה פתוחה, נוכל להתקין את החבילה wikipedia.
                                                                                                                                                                                              \n", + " נכתוב בשורת הפקודה: pip install wikipedia, ונראה את pip מתקין עבורנו את החבילה.
                                                                                                                                                                                              \n", " פקודת ההתקנה מופיעה בראש הדף של החבילה באתר PyPI, ולרוב גם בתיעוד החבילה עצמו.\n", "

                                                                                                                                                                                              " ] @@ -276,16 +276,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", - " \"אזהרה!\" \n", - "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", - "

                                                                                                                                                                                              \n", - " אפשר להריץ פקודה בשורת הפקודה מהמחברת. פתחו תא קוד חדש, והדביקו את הפקודה כשלפניה סימן קריאה.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", + "\"אזהרה!\"\n", + "
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " אפשר להריץ פקודה בשורת הפקודה מהמחברת. פתחו תא קוד חדש, והדביקו את הפקודה כשלפניה סימן קריאה.
                                                                                                                                                                                              \n", " לדוגמה, כדי להתקין את החבילה, השתמשו ב־!pip install wikipedia\n", - "

                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", "
                                                                                                                                                                                              " ] }, @@ -293,15 +293,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תפעול החבילה" + "## תפעול החבילה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " זה הזמן להתחיל לעבוד עם החבילה.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " זה הזמן להתחיל לעבוד עם החבילה.
                                                                                                                                                                                              \n", " בשלב הזה כדאי לפתוח את תיעוד החבילה ולנסות להריץ משם דברים כדי לקבל תחושה כללית בנוגע לטיבה.\n", "

                                                                                                                                                                                              " ] @@ -310,9 +310,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " חיפוש זריז בגוגל של python wikipedia module documentation יחזיר לנו את התוצאה הרביעית מהחיפוש הקודם שלנו בגוגל.
                                                                                                                                                                                              \n", - " ניכנס ונריץ את שורות הקוד לדוגמה המופיעות בתיעוד:
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " חיפוש זריז בגוגל של python wikipedia module documentation יחזיר לנו את התוצאה הרביעית מהחיפוש הקודם שלנו בגוגל.
                                                                                                                                                                                              \n", + "ניכנס ונריץ את שורות הקוד לדוגמה המופיעות בתיעוד:
                                                                                                                                                                                              \n", "

                                                                                                                                                                                              " ] }, @@ -330,8 +330,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " יופי! כבר עכשיו אפשר להגיד שהצלחנו במשימה שלנו לאחזר את פסקת הסיכום מוויקיפדיה לפי ערך מילוני.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " יופי! כבר עכשיו אפשר להגיד שהצלחנו במשימה שלנו לאחזר את פסקת הסיכום מוויקיפדיה לפי ערך מילוני.
                                                                                                                                                                                              \n", " לאן ממשיכים מכאן?\n", "

                                                                                                                                                                                              " ] @@ -340,8 +340,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " נשוטט קצת בתיעוד של החבילה כדי להבין מה עוד היא יכולה לעשות.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " נשוטט קצת בתיעוד של החבילה כדי להבין מה עוד היא יכולה לעשות.
                                                                                                                                                                                              \n", " נראה, לדוגמה, שאפשר לחפש ערכים גם בעברית!\n", "

                                                                                                                                                                                              " ] @@ -361,16 +361,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", - "

                                                                                                                                                                                              \n", - " מצאו אילו נקודות עניין יש ברדיוס של עד 600 מטר מהנקודה שהקואורדינטות שלה הן: קו רוחב 29.979167 וקו אורך 31.134167.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " מצאו אילו נקודות עניין יש ברדיוס של עד 600 מטר מהנקודה שהקואורדינטות שלה הן: קו רוחב 29.979167 וקו אורך 31.134167.
                                                                                                                                                                                              \n", " השתמשו בחבילה wikipedia ובתיעוד שלה.\n", "

                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", "
                                                                                                                                                                                              " ] }, @@ -378,14 +378,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " אם אתם אמיצים במיוחד ומרגישים ברי־מזל, תוכלו לכתוב את שם החבילה, נקודה, ואז ללחוץ על Tab ↹ במקלדת.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " אם אתם אמיצים במיוחד ומרגישים ברי־מזל, תוכלו לכתוב את שם החבילה, נקודה, ואז ללחוץ על Tab ↹ במקלדת.
                                                                                                                                                                                              \n", " התוצאה תהיה רשימת הפעולות הקיימות בחבילה, מסודרת לפי סדר מילוני.\n", "

                                                                                                                                                                                              \n", - "

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

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

                                                                                                                                                                                              " ] @@ -394,16 +394,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ניהול חבילות" + "## ניהול חבילות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " pip מאפשרת לנו לנהל את כל חבילות הפייתון שמותקנות על המחשב שלנו.
                                                                                                                                                                                              \n", - " נסקור כמה פקודות שכדאי להכיר:
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " pip מאפשרת לנו לנהל את כל חבילות הפייתון שמותקנות על המחשב שלנו.
                                                                                                                                                                                              \n", + " נסקור כמה פקודות שכדאי להכיר:
                                                                                                                                                                                              \n", "

                                                                                                                                                                                              " ] }, @@ -411,29 +411,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              pip install
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", - " מאפשרת לנו להתקין חבילה חדשה, או לשדרג חבילה קיימת.
                                                                                                                                                                                              \n", - " כדי לשדרג חבילה קיימת, השתמשו בדגל -U: pip install -U wikipedia.
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              pip install
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", + " מאפשרת לנו להתקין חבילה חדשה, או לשדרג חבילה קיימת.
                                                                                                                                                                                              \n", + " כדי לשדרג חבילה קיימת, השתמשו בדגל -U: pip install -U wikipedia.
                                                                                                                                                                                              \n", " במערכות שבהן פייתון מותקנת בהרשאות נמוכות, התקינו רק עבור המשתמש המקומי באמצעות הדגל --user: pip install --user wikipedia.\n", "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              pip uninstall
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              pip uninstall
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", " מאפשרת להסיר חבילה מסוימת מהמחשב: pip uninstall wikipedia.\n", "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              pip show
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              pip show
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", " מאפשרת לסקור פרטים נוספים על החבילה: pip show wikipedia.\n", "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              pip search
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", - " מאפשרת לחפש חבילות משורת הפקודה, לדוגמה: pip search wikipedia.
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              pip search
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", + " מאפשרת לחפש חבילות משורת הפקודה, לדוגמה: pip search wikipedia.
                                                                                                                                                                                              \n", " גוגל זה גם אחלה.\n", "
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              pip list
                                                                                                                                                                                              \n", - "
                                                                                                                                                                                              \n", - " מאפשרת לראות את רשימת כל החבילות שהותקנו במחשב שלנו.
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              pip list
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", + " מאפשרת לראות את רשימת כל החבילות שהותקנו במחשב שלנו.
                                                                                                                                                                                              \n", " שימו לב שה־Anaconda שהתקנו מוסיפה לתהליך ההתקנה חבילות רבות, ולכן הרשימה שתראו מנופחת יחסית.\n", "
                                                                                                                                                                                              \n", "
                                                                                                                                                                                              " @@ -443,23 +443,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                              \n", + "
                                                                                                                                                                                              \n", "
                                                                                                                                                                                              PyPI
                                                                                                                                                                                              \n", - " מאגר עצום המאחסן חבילות פייתון שמפתחים יצרו והעלו אליו.
                                                                                                                                                                                              \n", + " מאגר עצום המאחסן חבילות פייתון שמפתחים יצרו והעלו אליו.
                                                                                                                                                                                              \n", " המקום שממנו pip מושך את קובצי החבילות שהוא צריך להתקין. \n", "
                                                                                                                                                                                              \n", "
                                                                                                                                                                                              pip
                                                                                                                                                                                              \n", - " כלי המותקן יחד עם פייתון ועוזר לנו לנהל את החבילות שנמצאות על המחשב שלנו.
                                                                                                                                                                                              \n", + " כלי המותקן יחד עם פייתון ועוזר לנו לנהל את החבילות שנמצאות על המחשב שלנו.
                                                                                                                                                                                              \n", " ראשי תיבות של Pip Install Packages.
                                                                                                                                                                                              \n", "
                                                                                                                                                                                              חבילה
                                                                                                                                                                                              \n", - " בניגוד למודול, שהוא קובץ פייתון אחד שניתן לייבא, חבילה היא צירוף של כמה מודולים שניתן לייבא בפקודה אחת.
                                                                                                                                                                                              \n", + " בניגוד למודול, שהוא קובץ פייתון אחד שניתן לייבא, חבילה היא צירוף של כמה מודולים שניתן לייבא בפקודה אחת.
                                                                                                                                                                                              \n", " בעתיד נרד לעומקו של העניין, אבל עד אז עד אז נניח שהמילים \"חבילה\" ו\"מודול\" הן נרדפות.\n", "
                                                                                                                                                                                              \n", "
                                                                                                                                                                                              " @@ -469,15 +469,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## סיכום" + "## סיכום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " במחברת זו למדנו כיצד מוצאים, מתקינים ומשתמשים במודול שכתבו מפתחי פייתון אחרים.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " במחברת זו למדנו כיצד מוצאים, מתקינים ומשתמשים במודול שכתבו מפתחי פייתון אחרים.
                                                                                                                                                                                              \n", " היכולת למצוא קטעי קוד שכתבו מתכנתים אחרים ולהשתמש בהם, היא אחד הכלים החשובים ביותר עבור כל מתכנת.\n", "

                                                                                                                                                                                              " ] @@ -486,8 +486,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " ככל שתשתמשו יותר בחבילות חיצוניות, כך יתפתחו יכולותיכם הקשורות במציאה של מודולים חדשים ובתפעולם.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " ככל שתשתמשו יותר בחבילות חיצוניות, כך יתפתחו יכולותיכם הקשורות במציאה של מודולים חדשים ובתפעולם.
                                                                                                                                                                                              \n", " הקפידו לזכור שלרוב קיים פתרון לכל בעיה שנתקלתם בה, והרבו להשתמש בחבילות חיצוניות כדי לפתור בעיות.\n", "

                                                                                                                                                                                              " ] @@ -496,22 +496,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### שְׁתַּיִם דֻּבִּים מִן הַגִּיזָה" + "### שְׁתַּיִם דֻּבִּים מִן הַגִּיזָה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - "מצאו במחשבכם חבילה אחת ששמה כשם של חיה, חבילה אחת ששמה כשם של מספר וחבילה אחת ששמה כשם של יצור מתולוגי.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + "מצאו במחשבכם חבילה אחת ששמה כשם של חיה, חבילה אחת ששמה כשם של מספר וחבילה אחת ששמה כשם של יצור מתולוגי.
                                                                                                                                                                                              \n", "בחרו באחת מהן והסבירו במשפט אחד מה היא עושה.\n", "

                                                                                                                                                                                              " ] @@ -520,7 +520,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", " שימו לב: אפשר להתעלם מהערות הבודק האוטומטי.\n", "

                                                                                                                                                                                              " ] @@ -529,16 +529,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### זהות בדויה" + "### זהות בדויה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " כתבו פונקציה בשם create_people שמקבלת מספר ($n$) ומחזירה $n$ פרטי אנשים מזויפים.
                                                                                                                                                                                              \n", - " \"איש\" מוגדר כצירוף הפרטים של שם מלא, כתובת, כתובת דואר אלקטרוני ומספר טלפון.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " כתבו פונקציה בשם create_people שמקבלת מספר ($n$) ומחזירה $n$ פרטי אנשים מזויפים.
                                                                                                                                                                                              \n", + " \"איש\" מוגדר כצירוף הפרטים של שם מלא, כתובת, כתובת דואר אלקטרוני ומספר טלפון.
                                                                                                                                                                                              \n", " בחרו בעצמכם את מבני הנתונים שבהם כדאי לעשות שימוש בתרגיל זה.\n", "

                                                                                                                                                                                              " ] @@ -547,15 +547,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### זכרו זכרו" + "### זכרו זכרו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " הצילו! טרוריסט משוגע מנסה לבצע פיגוע, ויכולות הפייתון שלכם הן היחידות שיכולות לעזור!
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " הצילו! טרוריסט משוגע מנסה לבצע פיגוע, ויכולות הפייתון שלכם הן היחידות שיכולות לעזור!
                                                                                                                                                                                              \n", " מאמצי מודיעין נרחבים הביאו אותנו למסקנה שהטרוריסט מצפין את מסריו בתמונות כך:\n", "

                                                                                                                                                                                              " ] @@ -564,9 +564,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " בכל עמודה בתמונה ישנו פיקסל אחד שצבוע בשחור.
                                                                                                                                                                                              \n", - " הפיקסל צבוע במספר השורה שתואם את הערך המספרי של התו (ראו תיעוד על הפונקציות ord, chr).
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " בכל עמודה בתמונה ישנו פיקסל אחד שצבוע בשחור.
                                                                                                                                                                                              \n", + " הפיקסל צבוע במספר השורה שתואם את הערך המספרי של התו (ראו תיעוד על הפונקציות ord, chr).
                                                                                                                                                                                              \n", " אם ממירים את המיקום שבו נמצאים הפיקסלים השחורים לפי סדר, משמאל לימין, מקבלים את המסר המוכמן.\n", "

                                                                                                                                                                                              " ] @@ -575,7 +575,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", " לדוגמה, אם בתמונה בגודל (2, 255) הפיקסל השמאלי נמצא בשורה מספר 72 והפיקסל הימני נמצא בשורה מספר 105, המסר המוכמן הוא \"Hi\".\n", "

                                                                                                                                                                                              " ] @@ -584,8 +584,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " כתבו פונקציה שמקבלת נתיב לקובץ המוצפן ומחזירה את המסר המוצפן בו.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " כתבו פונקציה שמקבלת נתיב לקובץ המוצפן ומחזירה את המסר המוצפן בו.
                                                                                                                                                                                              \n", " השתמשו בקובץ resources/code.png כדי לפענח את המסר של הטרוריסט!\n", "

                                                                                                                                                                                              " ] diff --git a/week6/5_Summary.ipynb b/week6/5_Summary.ipynb index 46fe680..26ece91 100644 --- a/week6/5_Summary.ipynb +++ b/week6/5_Summary.ipynb @@ -4,22 +4,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# תרגילים" + "# תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### group_by" + "### group_by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                              \n", - " כתבו פונקציה בשם group_by שמקבלת פונקציה כפרמטר ראשון, ו־iterable כפרמטר שני.
                                                                                                                                                                                              \n", + "

                                                                                                                                                                                              \n", + " כתבו פונקציה בשם group_by שמקבלת פונקציה כפרמטר ראשון, ו־iterable כפרמטר שני.
                                                                                                                                                                                              \n", " הפונקציה תחזיר מילון, שבו:\n", "

                                                                                                                                                                                              " ] @@ -28,9 +28,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                \n", - "
                                                                                                                                                                                              • המפתחות הם הערכים שחזרו מהפונקציה שהועברה כפרמטר הראשון.
                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                              • הערך התואם למפתח מסוים הוא רשימה של כל האיברים שעבורם חזר הערך המופיע במפתח.
                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                • המפתחות הם הערכים שחזרו מהפונקציה שהועברה כפרמטר הראשון.
                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                • הערך התואם למפתח מסוים הוא רשימה של כל האיברים שעבורם חזר הערך המופיע במפתח.
                                                                                                                                                                                                • \n", "
                                                                                                                                                                                                " ] }, @@ -38,7 +38,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                \n", "לדוגמה, עבור הקריאה group_by(len, [\"hi\", \"bye\", \"yo\", \"try\"]) יוחזר הערך: {2: [\"hi\", \"yo\"], 3: [\"bye\", \"try\"]}.\n", "

                                                                                                                                                                                                " ] @@ -47,15 +47,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### zipwith" + "### zipwith" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                \n", - " כתבו פונקציה בשם zip_with שמקבלת פונקציה כפרמטר ראשון, ושני iterable־ים או יותר בפרמטרים שאחריו.
                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                \n", + " כתבו פונקציה בשם zip_with שמקבלת פונקציה כפרמטר ראשון, ושני iterable־ים או יותר בפרמטרים שאחריו.
                                                                                                                                                                                                \n", " הפונקציה תחזיר רשימה, שבה האיבר במקום ה־N־י הוא הערך שחזר מהעברת כל הערכים במקום ה־N־י של כל ה־iterables לפונקציה.\n", "

                                                                                                                                                                                                " ] @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                \n", "לדוגמה:\n", "

                                                                                                                                                                                                " ] @@ -73,9 +73,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                • עבור הקריאה zipwith(add, [1, 2, 3], [4, 5, 6]) יוחזר הערך: [5, 7, 9].
                                                                                                                                                                                                • \n", - "
                                                                                                                                                                                                • עבור הקריאה zipwith(max, (5, 4), (2, 5), (6, -6)) יוחזר הערך: [6, 5].
                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                  • עבור הקריאה zipwith(add, [1, 2, 3], [4, 5, 6]) יוחזר הערך: [5, 7, 9].
                                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                                  • עבור הקריאה zipwith(max, (5, 4), (2, 5), (6, -6)) יוחזר הערך: [6, 5].
                                                                                                                                                                                                  • \n", "
                                                                                                                                                                                                  " ] }, @@ -83,7 +83,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                  \n", " אפשר להניח שה־iterables המועברים לפונקציה זהים באורכם.\n", "

                                                                                                                                                                                                  " ] @@ -92,15 +92,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### זכרתם?\n" + "### זכרתם?\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                  \n", - " כתבו פונקציה שמקבלת מסר להצפנה, ויוצרת ממנו תמונה מוצפנת.
                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                  \n", + " כתבו פונקציה שמקבלת מסר להצפנה, ויוצרת ממנו תמונה מוצפנת.
                                                                                                                                                                                                  \n", " השתמשו בשיטת ההצפנה שהוצגה במחברת הקודמת. \n", "

                                                                                                                                                                                                  " ] @@ -109,14 +109,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סט" + "### סט" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                  \n", " למדו את החוקים של המשחק סט, מהערך בוויקיפדיה או מ־YouTube.\n", "

                                                                                                                                                                                                  " ] @@ -125,10 +125,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                  1. צרו חפיסת סט.
                                                                                                                                                                                                  2. \n", - "
                                                                                                                                                                                                  3. טרפו אותה היטב, ופתחו 12 קלפים על השולחן. הדפיסו את כל הסטים שמצאתם.
                                                                                                                                                                                                  4. \n", - "
                                                                                                                                                                                                  5. בדקו בכמה אחוזים מהפעמים שבהן פותחים 12 קלפים אקראיים מהחפיסה – אין אף סט על הלוח.
                                                                                                                                                                                                  6. \n", + "
                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                    1. צרו חפיסת סט.
                                                                                                                                                                                                    2. \n", + "
                                                                                                                                                                                                    3. טרפו אותה היטב, ופתחו 12 קלפים על השולחן. הדפיסו את כל הסטים שמצאתם.
                                                                                                                                                                                                    4. \n", + "
                                                                                                                                                                                                    5. בדקו בכמה אחוזים מהפעמים שבהן פותחים 12 קלפים אקראיים מהחפיסה – אין אף סט על הלוח.
                                                                                                                                                                                                    6. \n", "
                                                                                                                                                                                                    " ] }, @@ -136,7 +136,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                    \n", " כדי לחשב את סעיף 3, הריצו את הבדיקה על 10,000 מקרים שבהם פתחתם 12 קלפים מהחפיסה המעורבבת.\n", "

                                                                                                                                                                                                    " ] @@ -145,15 +145,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 100 מעלות" + "### 100 מעלות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                    \n", - " כתבו קוד שמוצא את 100 השירים הפופולריים ביותר לפי מדד Hot 100 של Billboard.
                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                    \n", + " כתבו קוד שמוצא את 100 השירים הפופולריים ביותר לפי מדד Hot 100 של Billboard.
                                                                                                                                                                                                    \n", " השיגו את המילים של השירים שמצאתם, ושרטטו גרף שמראה כמה פעמים מופיעה כל מילה מ־100 המילים הנפוצות ביותר בכל השירים.\n", "

                                                                                                                                                                                                    " ] @@ -162,7 +162,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                    \n", " בונוס: בצעו ניתוח מעניין אחר, כמו מיהם האומנים שמשתמשים בהכי הרבה מילים בשירים שלהם!\n", "

                                                                                                                                                                                                    " ] diff --git a/week7/1_Classes.ipynb b/week7/1_Classes.ipynb index 8b23d3c..ce8efa0 100644 --- a/week7/1_Classes.ipynb +++ b/week7/1_Classes.ipynb @@ -4,29 +4,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# מחלקות" + "# מחלקות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                    \n", - " בוקר חדש, השמש הפציעה והחלטתם שצברתם מספיק ידע בקורס כדי לפתוח רשת חברתית משלכם, בשם צ'יקצ'וק.
                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                    \n", + " בוקר חדש, השמש הפציעה והחלטתם שצברתם מספיק ידע בקורס כדי לפתוח רשת חברתית משלכם, בשם צ'יקצ'וק.
                                                                                                                                                                                                    \n", " אתם משליכים את מחברות הפייתון מהחלון ומתחילים לתכנת במרץ את המערכת שתעזור לכם לנהל את המשתמשים.\n", "

                                                                                                                                                                                                    " ] @@ -35,7 +35,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                    \n", " לכל משתמש יש את התכונות הבאות:\n", "

                                                                                                                                                                                                    " ] @@ -44,11 +44,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                    • שם פרטי
                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                    • שם משפחה
                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                    • כינוי
                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                    • גיל
                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                      • שם פרטי
                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                      • שם משפחה
                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                      • כינוי
                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                      • גיל
                                                                                                                                                                                                      • \n", "
                                                                                                                                                                                                      " ] }, @@ -56,22 +56,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                      \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                      \n", - "

                                                                                                                                                                                                      \n", - " בחרו סוג משתנה שיאפשר לכם לאחסן בנוחות את הנתונים הללו.
                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                      \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                      \n", + " בחרו סוג משתנה שיאפשר לכם לאחסן בנוחות את הנתונים הללו.
                                                                                                                                                                                                      \n", " צרו שני משתמשים לדוגמה, והשתמשו בסוג המשתנה שבחרתם.\n", "

                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                      \n", - "

                                                                                                                                                                                                      \n", - " חשוב!
                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                      \n", + "חשוב!
                                                                                                                                                                                                      \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                      \n", "
                                                                                                                                                                                                      " ] }, @@ -79,9 +79,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                      \n", - " לפני שנציג את פתרון השאלה, נעמיק מעט ברעיון הכללי שעומד מאחורי הדוגמה הזו.
                                                                                                                                                                                                      \n", - " כל משתמש שניצור הוא מעין אסופת תכונות – במקרה שלנו התכונות הן שם פרטי, שם משפחה, כינוי וגיל.
                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                      \n", + " לפני שנציג את פתרון השאלה, נעמיק מעט ברעיון הכללי שעומד מאחורי הדוגמה הזו.
                                                                                                                                                                                                      \n", + "כל משתמש שניצור הוא מעין אסופת תכונות – במקרה שלנו התכונות הן שם פרטי, שם משפחה, כינוי וגיל.
                                                                                                                                                                                                      \n", " לכל תכונה יהיה ערך המתאים לה, ויחד הערכים הללו יצרו משתמש אחד.\n", "

                                                                                                                                                                                                      " ] @@ -90,15 +90,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                      \n", " נמצא עוד דוגמאות לאסופות תכונות שכאלו:\n", "

                                                                                                                                                                                                      \n", - "\n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                      • תכונותיו של שולחן הן גובה, מספר רגליים, צבע, אורך ורוחב.
                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                      • תכונותיה של נורה הן צבע ומצב (דולקת או כבויה).
                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                      • תכונותיו של תרגיל בקורס הן השבוע והמחברת שבהן הוא הופיע, כותרת והוראות התרגיל.
                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                      • תכונותיו של שיר הן מילות השיר, האומנים שהשתתפו ביצירתו ואורכו.
                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                        • תכונותיו של שולחן הן גובה, מספר רגליים, צבע, אורך ורוחב.
                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                        • תכונותיה של נורה הן צבע ומצב (דולקת או כבויה).
                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                        • תכונותיו של תרגיל בקורס הן השבוע והמחברת שבהן הוא הופיע, כותרת והוראות התרגיל.
                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                        • תכונותיו של שיר הן מילות השיר, האומנים שהשתתפו ביצירתו ואורכו.
                                                                                                                                                                                                        • \n", "
                                                                                                                                                                                                        " ] }, @@ -106,21 +105,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "

                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", " חשבו על עוד 3 דוגמאות לעצמים שאפשר לתאר כערכים עם אסופת תכונות.\n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "

                                                                                                                                                                                                        \n", - " חשוב!
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "חשוב!
                                                                                                                                                                                                        \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", "
                                                                                                                                                                                                        " ] }, @@ -128,7 +127,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", " ניצור שני משתמשים לדוגמה לפי תכונותיהם שהוצגו לעיל:\n", "

                                                                                                                                                                                                        " ] @@ -157,8 +156,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " תוכלו ליצור בעצמכם פונקציה שיוצרת משתמש חדש?
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " תוכלו ליצור בעצמכם פונקציה שיוצרת משתמש חדש?
                                                                                                                                                                                                        \n", " זה לא מסובך מדי:\n", "

                                                                                                                                                                                                        " ] @@ -187,9 +186,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " נוכל גם לממש פונקציות שיעזרו לנו לבצע פעולות על כל אחד מהמשתמשים.
                                                                                                                                                                                                        \n", - " לדוגמה: הפונקציה describe_as_a_string תקבל משתמש ותחזיר לנו מחרוזת שמתארת אותו,
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "נוכל גם לממש פונקציות שיעזרו לנו לבצע פעולות על כל אחד מהמשתמשים.
                                                                                                                                                                                                        \n", + " לדוגמה: הפונקציה describe_as_a_string תקבל משתמש ותחזיר לנו מחרוזת שמתארת אותו,
                                                                                                                                                                                                        \n", " והפונקציה celeberate_birthday תקבל משתמש ותגדיל את גילו ב־1:\n", "

                                                                                                                                                                                                        " ] @@ -223,16 +222,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - " \"תזכורת\" \n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "

                                                                                                                                                                                                        \n", - " הצלחנו לערוך את ערכו של user['age'] מבלי להחזיר ערך, כיוון שמילונים הם mutable.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "\"תזכורת\"\n", + "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " הצלחנו לערוך את ערכו של user['age'] מבלי להחזיר ערך, כיוון שמילונים הם mutable.
                                                                                                                                                                                                        \n", " אם זה נראה לכם מוזר, חזרו למחברת על mutability ו־immutability.\n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", "
                                                                                                                                                                                                        " ] }, @@ -240,8 +239,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " בשלב הזה בתוכניתנו קיימות קבוצת פונקציות שמטרתן היא ניהול של משתמשים ושל תכונותיהם.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " בשלב הזה בתוכניתנו קיימות קבוצת פונקציות שמטרתן היא ניהול של משתמשים ושל תכונותיהם.
                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                        " ] }, @@ -249,9 +248,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " נוכל להוסיף למשתמש תכונות נוספות, כמו דוא\"ל ומשקל, לדוגמה,
                                                                                                                                                                                                        \n", - " או להוסיף לו פעולות שיהיה אפשר לבצע עליו, כמו הפעולה eat_bourekas, שמוסיפה לתכונת המשקל של המשתמש חצי קילו.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " נוכל להוסיף למשתמש תכונות נוספות, כמו דוא\"ל ומשקל, לדוגמה,
                                                                                                                                                                                                        \n", + " או להוסיף לו פעולות שיהיה אפשר לבצע עליו, כמו הפעולה eat_bourekas, שמוסיפה לתכונת המשקל של המשתמש חצי קילו.
                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                        " ] }, @@ -259,16 +258,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### חסרונות" + "### חסרונות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " אף על פי שהרעיון נחמד, ככל שנרבה להוסיף פעולות ותכונות, תגבר תחושת האי־סדר שאופפת את הקוד הזה.
                                                                                                                                                                                                        \n", - " קל לראות שהקוד שכתבנו מפוזר על פני פונקציות רבות בצורה לא מאורגנת.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " אף על פי שהרעיון נחמד, ככל שנרבה להוסיף פעולות ותכונות, תגבר תחושת האי־סדר שאופפת את הקוד הזה.
                                                                                                                                                                                                        \n", + " קל לראות שהקוד שכתבנו מפוזר על פני פונקציות רבות בצורה לא מאורגנת.
                                                                                                                                                                                                        \n", " במילים אחרות – אין אף מבנה בקוד שתחתיו מאוגדות כל הפונקציות והתכונות ששייכות לטיפול במשתמש.\n", "

                                                                                                                                                                                                        " ] @@ -277,10 +276,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " הבעיה תצוף כשנרצה להוסיף לתוכנה שלנו עוד מבנים שכאלו.
                                                                                                                                                                                                        \n", - " לדוגמה, כשנרצה להוסיף לצ'יקצ'וק יכולת לניהול סרטונים – שתכונותיהם אורך סרטון ומספר לייקים, והפעולה עליהם היא היכולת לעשות Like לסרטון.
                                                                                                                                                                                                        \n", - " הקוד לניהול המשתמש והקוד לניהול הסרטונים עלולים להתערבב, יווצרו תלויות ביניהם וחוויית ההתמצאות בקוד תהפוך ללא נעימה בעליל.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " הבעיה תצוף כשנרצה להוסיף לתוכנה שלנו עוד מבנים שכאלו.
                                                                                                                                                                                                        \n", + " לדוגמה, כשנרצה להוסיף לצ'יקצ'וק יכולת לניהול סרטונים – שתכונותיהם אורך סרטון ומספר לייקים, והפעולה עליהם היא היכולת לעשות Like לסרטון.
                                                                                                                                                                                                        \n", + " הקוד לניהול המשתמש והקוד לניהול הסרטונים עלולים להתערבב, יווצרו תלויות ביניהם וחוויית ההתמצאות בקוד תהפוך ללא נעימה בעליל.
                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                        " ] }, @@ -288,9 +287,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " החוסר באיגוד התכונות והפונקציות אף מקשה על הקורא להבין לאן שייכות כל אחת מהתכונות והפונקציות, ומה תפקידן בקוד.
                                                                                                                                                                                                        \n", - " מי שמסתכל על הקוד שלנו לא יכול להבין מייד ש־describe_as_a_string מיועדת לפעול רק על מבנים שנוצרו מ־create_user.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " החוסר באיגוד התכונות והפונקציות אף מקשה על הקורא להבין לאן שייכות כל אחת מהתכונות והפונקציות, ומה תפקידן בקוד.
                                                                                                                                                                                                        \n", + " מי שמסתכל על הקוד שלנו לא יכול להבין מייד ש־describe_as_a_string מיועדת לפעול רק על מבנים שנוצרו מ־create_user.
                                                                                                                                                                                                        \n", " הוא עלול לנסות להכניס מבנים אחרים ולהקריס את התוכנית, או גרוע מכך – להיתקל בבאגים בעתיד, בעקבות שימוש לא נכון בפונקציה.\n", "

                                                                                                                                                                                                        " ] @@ -299,17 +298,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הגדרה" + "## הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " במהלך המחברת ראינו דוגמאות למבנים שהגדרנו כאוספים של תכונות ושל פעולות.
                                                                                                                                                                                                        \n", - " משתמש באפליקציית צ'יקצ'וק, לדוגמה, מורכב מהתכונות שם פרטי, שם משפחה, כינוי וגיל, ומהפעולות \"חגוג יום הולדת\" ו\"תאר כמחרוזת\".
                                                                                                                                                                                                        \n", - " נורה עשויה להיות מורכבת מהתכונות צבע ומצב (דולקת או לא), ומהפעולות \"הדלק נורה\" ו\"כבה נורה\".
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " במהלך המחברת ראינו דוגמאות למבנים שהגדרנו כאוספים של תכונות ושל פעולות.
                                                                                                                                                                                                        \n", + " משתמש באפליקציית צ'יקצ'וק, לדוגמה, מורכב מהתכונות שם פרטי, שם משפחה, כינוי וגיל, ומהפעולות \"חגוג יום הולדת\" ו\"תאר כמחרוזת\".
                                                                                                                                                                                                        \n", + " נורה עשויה להיות מורכבת מהתכונות צבע ומצב (דולקת או לא), ומהפעולות \"הדלק נורה\" ו\"כבה נורה\".
                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                        " ] }, @@ -317,9 +316,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " מחלקה היא דרך לתאר לפייתון אוסף כזה של תכונות ושל פעולות, ולאגד אותן תחת מבנה אחד.
                                                                                                                                                                                                        \n", - " אחרי שתיארנו בעזרת מחלקה אילו תכונות ופעולות מאפיינות עצם מסוים, נוכל להשתמש בה כדי לייצר כמה עצמים כאלו שנרצה.
                                                                                                                                                                                                        \n", + "

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

                                                                                                                                                                                                        " ] }, @@ -327,9 +326,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " נדמיין מחלקה כמו שבלונה – תבנית שמתארת אילו תכונות ופעולות מאפיינות סוג עצם מסוים.
                                                                                                                                                                                                        \n", - " מחלקה שעוסקת במשתמשים, לדוגמה, תתאר עבור פייתון מאילו תכונות ופעולות מורכב כל משתמש.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " נדמיין מחלקה כמו שבלונה – תבנית שמתארת אילו תכונות ופעולות מאפיינות סוג עצם מסוים.
                                                                                                                                                                                                        \n", + " מחלקה שעוסקת במשתמשים, לדוגמה, תתאר עבור פייתון מאילו תכונות ופעולות מורכב כל משתמש.
                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                        " ] }, @@ -338,8 +337,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                        \n", - " \"במרכז\n", - "
                                                                                                                                                                                                        איור המתאר את התכונות ואת הפעולות השייכות למחלקה \"משתמש\".
                                                                                                                                                                                                        \n", + "\"במרכז\n", + "
                                                                                                                                                                                                        איור המתאר את התכונות ואת הפעולות השייכות למחלקה \"משתמש\".
                                                                                                                                                                                                        \n", "
                                                                                                                                                                                                        " ] }, @@ -347,9 +346,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " בעזרת אותה מחלקת משתמשים (או שבלונת משתמשים, אם תרצו), נוכל ליצור משתמשים רבים.
                                                                                                                                                                                                        \n", - " כל משתמש שניצור באמצעות השבלונה ייקרא \"מופע\" (או Instance) – יחידה אחת, עצמאית, שמכילה את התכונות והפעולות שתיארנו.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " בעזרת אותה מחלקת משתמשים (או שבלונת משתמשים, אם תרצו), נוכל ליצור משתמשים רבים.
                                                                                                                                                                                                        \n", + " כל משתמש שניצור באמצעות השבלונה ייקרא \"מופע\" (או Instance) – יחידה אחת, עצמאית, שמכילה את התכונות והפעולות שתיארנו.
                                                                                                                                                                                                        \n", " אנחנו נשתמש במחלקה שוב ושוב כדי ליצור כמה משתמשים שנרצה, בדיוק כמו שנשתמש בשבלונה.\n", "

                                                                                                                                                                                                        " ] @@ -358,8 +357,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " יש עוד הרבה מה להגיד והרבה מה להגדיר, אבל נשמע שמתחתי אתכם מספיק.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " יש עוד הרבה מה להגיד והרבה מה להגדיר, אבל נשמע שמתחתי אתכם מספיק.
                                                                                                                                                                                                        \n", " בואו ניגש לקוד!\n", "

                                                                                                                                                                                                        " ] @@ -368,22 +367,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## יצירת מחלקות" + "## יצירת מחלקות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מחלקה בסיסית" + "### מחלקה בסיסית" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " ראשית, ניצור את המחלקה הפשוטה ביותר שאנחנו יכולים לבנות, ונקרא לה User.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " ראשית, ניצור את המחלקה הפשוטה ביותר שאנחנו יכולים לבנות, ונקרא לה User.
                                                                                                                                                                                                        \n", " בהמשך המחברת נרחיב את המחלקה, והיא תהיה זו שמטפלת בכל הקשור במשתמשים של צ'יקצ'וק:\n", "

                                                                                                                                                                                                        " ] @@ -402,16 +401,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - " \"תזכורת\" \n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "

                                                                                                                                                                                                        \n", - " ניסינו ליצור את המבנה הכי קצר שאפשר, אבל class חייב להכיל קוד.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "\"תזכורת\"\n", + "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " ניסינו ליצור את המבנה הכי קצר שאפשר, אבל class חייב להכיל קוד.
                                                                                                                                                                                                        \n", " כדי לעקוף את המגבלה הזו, השתמשנו במילת המפתח pass, שאומרת לפייתון \"אל תעשי כלום\".\n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", "
                                                                                                                                                                                                        " ] }, @@ -419,9 +418,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " בקוד שלמעלה השתמשנו במילת המפתח class כדי להצהיר על מחלקה חדשה.
                                                                                                                                                                                                        \n", - " מייד לאחר מכן ציינו את שם המחלקה שאנחנו רוצים ליצור – User במקרה שלנו.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " בקוד שלמעלה השתמשנו במילת המפתח class כדי להצהיר על מחלקה חדשה.
                                                                                                                                                                                                        \n", + " מייד לאחר מכן ציינו את שם המחלקה שאנחנו רוצים ליצור – User במקרה שלנו.
                                                                                                                                                                                                        \n", " שם המחלקה נתון לחלוטין לבחירתנו, והמילה User לא אומרת לפייתון שום דבר מיוחד. באותה המידה יכולנו לבחור כל שם אחר.\n", "

                                                                                                                                                                                                        " ] @@ -430,9 +429,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " הדבר שחשוב לזכור הוא שהמחלקה היא לא המשתמש עצמו, אלא רק השבלונה שלפיה פייתון תבנה את המשתמש.
                                                                                                                                                                                                        \n", - " אמנם כרגע המחלקה User ריקה ולא מתארת כלום, אבל פייתון עדיין תדע ליצור משתמש חדש אם נבקש ממנה לעשות זאת.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " הדבר שחשוב לזכור הוא שהמחלקה היא לא המשתמש עצמו, אלא רק השבלונה שלפיה פייתון תבנה את המשתמש.
                                                                                                                                                                                                        \n", + " אמנם כרגע המחלקה User ריקה ולא מתארת כלום, אבל פייתון עדיין תדע ליצור משתמש חדש אם נבקש ממנה לעשות זאת.
                                                                                                                                                                                                        \n", " נבקש מהמחלקה ליצור עבורנו משתמש חדש. נקרא לה בשמה ונוסיף סוגריים, בדומה לקריאה לפונקציה:\n", "

                                                                                                                                                                                                        " ] @@ -450,9 +449,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " כעת יצרנו משתמש, ואנחנו יכולים לשנות את התכונות שלו.
                                                                                                                                                                                                        \n", - " מבחינה מילולית, נהוג להגיד שיצרנו מופע (Instance) או עצם (אובייקט, Object) מסוג User, ששמו user1.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " כעת יצרנו משתמש, ואנחנו יכולים לשנות את התכונות שלו.
                                                                                                                                                                                                        \n", + " מבחינה מילולית, נהוג להגיד שיצרנו מופע (Instance) או עצם (אובייקט, Object) מסוג User, ששמו user1.
                                                                                                                                                                                                        \n", " השתמשנו לשם כך במחלקה בשם User.\n", "

                                                                                                                                                                                                        " ] @@ -461,9 +460,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " נשנה את תכונות המשתמש.
                                                                                                                                                                                                        \n", - " כדי להתייחס לתכונה של מופע כלשהו בפייתון, נכתוב את שם המשתנה שמצביע למופע, נקודה, ואז שם התכונה.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " נשנה את תכונות המשתמש.
                                                                                                                                                                                                        \n", + " כדי להתייחס לתכונה של מופע כלשהו בפייתון, נכתוב את שם המשתנה שמצביע למופע, נקודה, ואז שם התכונה.
                                                                                                                                                                                                        \n", " אם נרצה לשנות את התכונה – נבצע אליה השמה:\n", "

                                                                                                                                                                                                        " ] @@ -484,7 +483,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", " נוכל לאחזר את התכונות הללו בקלות, באותה הצורה:\n", "

                                                                                                                                                                                                        " ] @@ -502,7 +501,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", " ואם נבדוק מה הסוג של המשתנה user1, מצפה לנו הפתעה נחמדה:\n", "

                                                                                                                                                                                                        " ] @@ -520,9 +519,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " איזה יופי! המחלקה גרמה לכך ש־User הוא ממש סוג משתנה בפייתון עכשיו.
                                                                                                                                                                                                        \n", - " קחו לעצמכם רגע להתפעל – יצרנו סוג משתנה חדש בפייתון!
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " איזה יופי! המחלקה גרמה לכך ש־User הוא ממש סוג משתנה בפייתון עכשיו.
                                                                                                                                                                                                        \n", + " קחו לעצמכם רגע להתפעל – יצרנו סוג משתנה חדש בפייתון!
                                                                                                                                                                                                        \n", " אם כך, המשתנה user1 מצביע על מופע של משתמש, שסוגו User.\n", "

                                                                                                                                                                                                        " ] @@ -531,7 +530,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", " ננסה ליצור מופע נוסף, הפעם של משתמש אחר:\n", "

                                                                                                                                                                                                        " ] @@ -553,7 +552,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", " ונשים לב ששני המופעים מתקיימים זה לצד זה, ולא דורסים את הערכים זה של זה:\n", "

                                                                                                                                                                                                        " ] @@ -572,8 +571,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " המצב הזה מתקיים כיוון שכל קריאה למחלקה User יוצרת מופע חדש של משתמש.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " המצב הזה מתקיים כיוון שכל קריאה למחלקה User יוצרת מופע חדש של משתמש.
                                                                                                                                                                                                        \n", " כל אחד מהמופעים הוא ישות נפרדת שמתקיימת בזכות עצמה.\n", "

                                                                                                                                                                                                        " ] @@ -582,22 +581,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "

                                                                                                                                                                                                        \n", - " צרו מחלקה בשם Point שמייצגת נקודה.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " צרו מחלקה בשם Point שמייצגת נקודה.
                                                                                                                                                                                                        \n", " צרו 2 מופעים של נקודות: אחת בעלת x שערכו 3 ו־y שערכו 1, והשנייה בעלת x שערכו 4 ו־y שערכו 1.\n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "

                                                                                                                                                                                                        \n", - " חשוב!
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "חשוב!
                                                                                                                                                                                                        \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", "
                                                                                                                                                                                                        " ] }, @@ -605,9 +604,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " שמות מחלקה ייכתבו באות גדולה בתחילתם, כדי להבדילם מפונקציות וממשתנים רגילים.
                                                                                                                                                                                                        \n", - " אם שם המחלקה מורכב מכמה מילים, האות הראשונה בכל מילה תהא אות גדולה. בשם לא יופיעו קווים תחתונים.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " שמות מחלקה ייכתבו באות גדולה בתחילתם, כדי להבדילם מפונקציות וממשתנים רגילים.
                                                                                                                                                                                                        \n", + " אם שם המחלקה מורכב מכמה מילים, האות הראשונה בכל מילה תהא אות גדולה. בשם לא יופיעו קווים תחתונים.
                                                                                                                                                                                                        \n", " לדוגמה, מחלקת PopSong.\n", "

                                                                                                                                                                                                        " ] @@ -616,15 +615,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מחלקה עם פעולות" + "### מחלקה עם פעולות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " יצירת מחלקה ריקה זה נחמד, אבל זה לא מרגיש שעשינו צעד מספיק משמעותי כדי לשפר את איכות הקוד מתחילת המחברת.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " יצירת מחלקה ריקה זה נחמד, אבל זה לא מרגיש שעשינו צעד מספיק משמעותי כדי לשפר את איכות הקוד מתחילת המחברת.
                                                                                                                                                                                                        \n", " לדוגמה, אם אנחנו רוצים להדפיס את הפרטים של משתמש מסוים, עדיין נצטרך לכתוב פונקציה כזו:\n", "

                                                                                                                                                                                                        " ] @@ -647,8 +646,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " הפונקציה עדיין מסתובבת לה חופשייה ולא מאוגדת תחת אף מבנה – וזה בדיוק המצב שניסינו למנוע.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " הפונקציה עדיין מסתובבת לה חופשייה ולא מאוגדת תחת אף מבנה – וזה בדיוק המצב שניסינו למנוע.
                                                                                                                                                                                                        \n", " למזלנו הפתרון לבעיית איגוד הקוד הוא פשוט. נוכל להדביק את קוד הפונקציה תחת המחלקה User:\n", "

                                                                                                                                                                                                        " ] @@ -676,8 +675,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " בתא שלמעלה הגדרנו את הפונקציה describe_as_a_string בתוך המחלקה User.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " בתא שלמעלה הגדרנו את הפונקציה describe_as_a_string בתוך המחלקה User.
                                                                                                                                                                                                        \n", " פונקציה שמוגדרת בתוך מחלקה נקראת פעולה (Method), שם שניתן לה כדי לבדל אותה מילולית מפונקציה רגילה.\n", "

                                                                                                                                                                                                        " ] @@ -686,8 +685,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " למעשה, בתא שלמעלה הוספנו את הפעולה describe_as_a_string לשבלונה של המשתמש.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " למעשה, בתא שלמעלה הוספנו את הפעולה describe_as_a_string לשבלונה של המשתמש.
                                                                                                                                                                                                        \n", " מעכשיו, כל מופע חדש של משתמש יוכל לקרוא לפעולה describe_as_a_string בצורה הבאה:\n", "

                                                                                                                                                                                                        " ] @@ -705,9 +704,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " חדי העין שמו ודאי לב למשהו מעט משונה בקריאה לפעולה describe_as_a_string.
                                                                                                                                                                                                        \n", - " הפעולה מצפה לקבל פרמטר (קראנו לו user), אבל כשקראנו לה בתא האחרון לא העברנו לה אף ארגומנט!
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " חדי העין שמו ודאי לב למשהו מעט משונה בקריאה לפעולה describe_as_a_string.
                                                                                                                                                                                                        \n", + " הפעולה מצפה לקבל פרמטר (קראנו לו user), אבל כשקראנו לה בתא האחרון לא העברנו לה אף ארגומנט!
                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                        " ] }, @@ -715,9 +714,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " זהו קסם ידוע ונחמד של מחלקות: כשמופע קורא לפעולה כלשהי – אותו מופע עצמו מועבר אוטומטית כארגומנט הראשון לפעולה.
                                                                                                                                                                                                        \n", - " לדוגמה, בקריאה user3.describe_as_a_string(), המופע user3 הועבר לתוך הפרמטר user של describe_as_a_string.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " זהו קסם ידוע ונחמד של מחלקות: כשמופע קורא לפעולה כלשהי – אותו מופע עצמו מועבר אוטומטית כארגומנט הראשון לפעולה.
                                                                                                                                                                                                        \n", + " לדוגמה, בקריאה user3.describe_as_a_string(), המופע user3 הועבר לתוך הפרמטר user של describe_as_a_string.
                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                        " ] }, @@ -725,8 +724,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " המוסכמה היא לקרוא תמיד לפרמטר הקסום הזה, זה שהולך לקבל את המופע, בשם self.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " המוסכמה היא לקרוא תמיד לפרמטר הקסום הזה, זה שהולך לקבל את המופע, בשם self.
                                                                                                                                                                                                        \n", " נשנה את ההגדרה שלנו בהתאם למוסכמה:\n", "

                                                                                                                                                                                                        " ] @@ -755,15 +754,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - " \"אזהרה!\" \n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "

                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "\"אזהרה!\"\n", + "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", " טעות נפוצה היא לשכוח לשים self כפרמטר הראשון בפעולות שנגדיר.\n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", "
                                                                                                                                                                                                        " ] }, @@ -771,22 +770,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "

                                                                                                                                                                                                        \n", - " צרו פעולה בשם describe_as_a_string עבור מחלקת Point שיצרתם.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " צרו פעולה בשם describe_as_a_string עבור מחלקת Point שיצרתם.
                                                                                                                                                                                                        \n", " הפעולה תחזיר מחרוזת בצורת (x, y).\n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", - "

                                                                                                                                                                                                        \n", - " חשוב!
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + "חשוב!
                                                                                                                                                                                                        \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                        \n", "
                                                                                                                                                                                                        " ] }, @@ -794,17 +793,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### יצירת מופע" + "### יצירת מופע" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " הפיסה החסרה בפאזל היא יצירת המופע.
                                                                                                                                                                                                        \n", - " אם נרצה ליצור משתמש חדש, עדיין נצטרך להציב בו תכונות אחת־אחת – וזה לא כזה כיף.
                                                                                                                                                                                                        \n", - " נשדרג את עצמנו ונכתוב פונקציה שקוראת ל־User ויוצרת מופע עם כל התכונות שלו:
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " הפיסה החסרה בפאזל היא יצירת המופע.
                                                                                                                                                                                                        \n", + " אם נרצה ליצור משתמש חדש, עדיין נצטרך להציב בו תכונות אחת־אחת – וזה לא כזה כיף.
                                                                                                                                                                                                        \n", + " נשדרג את עצמנו ונכתוב פונקציה שקוראת ל־User ויוצרת מופע עם כל התכונות שלו:
                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                        " ] }, @@ -831,8 +830,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", - " אבל הגדרה שכזו, כמו שכבר אמרנו, סותרת את כל הרעיון של מחלקות.
                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", + " אבל הגדרה שכזו, כמו שכבר אמרנו, סותרת את כל הרעיון של מחלקות.
                                                                                                                                                                                                        \n", " הרי המטרה של מחלקות היא קיבוץ כל מה שקשור בניהול התכונות והפעולות תחת המחלקה.\n", "

                                                                                                                                                                                                        " ] @@ -841,12 +840,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                        \n", " נעתיק את create_user לתוך מחלקת User, בשינויים קלים: \n", "

                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                        1. לא נשכח לשים את self כפרמטר ראשון בחתימת הפעולה.
                                                                                                                                                                                                        2. \n", - "
                                                                                                                                                                                                        3. כפי שראינו, פעולות במחלקה מקבלות מופע ועובדות ישירות עליו, ולכן נשמיט את השורות user = User() ו־return user.
                                                                                                                                                                                                        4. \n", + "
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                          1. לא נשכח לשים את self כפרמטר ראשון בחתימת הפעולה.
                                                                                                                                                                                                          2. \n", + "
                                                                                                                                                                                                          3. כפי שראינו, פעולות במחלקה מקבלות מופע ועובדות ישירות עליו, ולכן נשמיט את השורות user = User() ו־return user.
                                                                                                                                                                                                          4. \n", "
                                                                                                                                                                                                          " ] }, @@ -872,7 +871,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                          \n", " עכשיו נוכל ליצור משתמש חדש, בצורה החביבה והמקוצרת הבאה:\n", "

                                                                                                                                                                                                          " ] @@ -892,15 +891,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: מחלקת נקודות" + "### תרגיל ביניים: מחלקת נקודות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                          \n", - " מינרווה מקגונגל יצאה לבילוי לילי בסמטת דיאגון,
                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                          \n", + " מינרווה מקגונגל יצאה לבילוי לילי בסמטת דיאגון,
                                                                                                                                                                                                          \n", " ואחרי לילה עמוס בשתיית שיכר בקלחת הרותחת, היא מעט מתקשה לחזור להוגוורטס.\n", "

                                                                                                                                                                                                          " ] @@ -909,9 +908,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                          \n", - " הוסיפו את הפעולות create_point ו־distance למחלקת הנקודה שיצרתם.
                                                                                                                                                                                                          \n", - " הפעולה create_point תקבל כפרמטרים x ו־y, ותיצוק תוכן למופע שיצרתם.
                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                          \n", + " הוסיפו את הפעולות create_point ו־distance למחלקת הנקודה שיצרתם.
                                                                                                                                                                                                          \n", + " הפעולה create_point תקבל כפרמטרים x ו־y, ותיצוק תוכן למופע שיצרתם.
                                                                                                                                                                                                          \n", " הפעולה distance תחזיר את המרחק של מקגונגל מהוגוורטס, הממוקם בנקודה (0, 0).\n", "

                                                                                                                                                                                                          " ] @@ -920,17 +919,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                          \n", - " נוסחת המרחק היא חיבור בין הערכים המוחלטים של נקודות ה־x וה־y.
                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                          \n", + " נוסחת המרחק היא חיבור בין הערכים המוחלטים של נקודות ה־x וה־y.
                                                                                                                                                                                                          \n", " לדוגמה:\n", "

                                                                                                                                                                                                          \n", - "\n", - "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                          • המרחק מהנקודה
                                                                                                                                                                                                            x = 5, y = 3
                                                                                                                                                                                                            הוא 8.
                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                          • המרחק מהנקודה
                                                                                                                                                                                                            x = 0, y = 3
                                                                                                                                                                                                            הוא 3.
                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                          • המרחק מהנקודה
                                                                                                                                                                                                            x = -3, y = 3
                                                                                                                                                                                                            הוא 6.
                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                          • המרחק מהנקודה
                                                                                                                                                                                                            x = -5, y = 0
                                                                                                                                                                                                            הוא 5.
                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                          • המרחק מהנקודה
                                                                                                                                                                                                            x = 0, y = 0
                                                                                                                                                                                                            הוא 0.
                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                            • המרחק מהנקודה
                                                                                                                                                                                                              x = 5, y = 3
                                                                                                                                                                                                              הוא 8.
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • המרחק מהנקודה
                                                                                                                                                                                                              x = 0, y = 3
                                                                                                                                                                                                              הוא 3.
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • המרחק מהנקודה
                                                                                                                                                                                                              x = -3, y = 3
                                                                                                                                                                                                              הוא 6.
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • המרחק מהנקודה
                                                                                                                                                                                                              x = -5, y = 0
                                                                                                                                                                                                              הוא 5.
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • המרחק מהנקודה
                                                                                                                                                                                                              x = 0, y = 0
                                                                                                                                                                                                              הוא 0.
                                                                                                                                                                                                            • \n", "
                                                                                                                                                                                                            " ] }, @@ -938,7 +936,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", " ודאו שהתוכנית שלכם מחזירה Success! עבור הקוד הבא:\n", "

                                                                                                                                                                                                            " ] @@ -959,15 +957,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פעולות קסם" + "### פעולות קסם" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " כדי להקל אפילו עוד יותר על המלאכה, בפייתון יש פעולות קסם (Magic Methods).
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " כדי להקל אפילו עוד יותר על המלאכה, בפייתון יש פעולות קסם (Magic Methods).
                                                                                                                                                                                                            \n", " אלו פעולות עם שם מיוחד, שאם נגדיר אותן במחלקה, הן ישנו את ההתנהגות שלה או של המופעים הנוצרים בעזרתה.\n", "

                                                                                                                                                                                                            " ] @@ -976,16 +974,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            הפעולה __str__

                                                                                                                                                                                                            " + "

                                                                                                                                                                                                            הפעולה __str__

                                                                                                                                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " נתחיל, לדוגמה, מהיכרות קצרה עם פעולת הקסם __str__ (עם קו תחתון כפול, מימין ומשמאל לשם הפעולה).
                                                                                                                                                                                                            \n", - " אם ננסה סתם ככה להמיר למחרוזת את user4 שיצרנו קודם לכן, נקבל בהלה והיסטריה:" + "

                                                                                                                                                                                                            \n", + " נתחיל, לדוגמה, מהיכרות קצרה עם פעולת הקסם __str__ (עם קו תחתון כפול, מימין ומשמאל לשם הפעולה).
                                                                                                                                                                                                            \n", + " אם ננסה סתם ככה להמיר למחרוזת את user4 שיצרנו קודם לכן, נקבל בהלה והיסטריה:

                                                                                                                                                                                                            " ] }, { @@ -1003,8 +1001,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " פייתון אמנם אומרת דברים נכונים, כמו שמדובר באובייקט (מופע) מהמחלקה User ואת הכתובת שלו בזיכרון, אבל זה לא באמת מועיל.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " פייתון אמנם אומרת דברים נכונים, כמו שמדובר באובייקט (מופע) מהמחלקה User ואת הכתובת שלו בזיכרון, אבל זה לא באמת מועיל.
                                                                                                                                                                                                            \n", "

                                                                                                                                                                                                            " ] }, @@ -1012,8 +1010,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " כיוון שפונקציית ההדפסה print, מאחורי הקלעים, מבקשת את צורת המחרוזת של הארגומנט שמועבר אליה,
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " כיוון שפונקציית ההדפסה print, מאחורי הקלעים, מבקשת את צורת המחרוזת של הארגומנט שמועבר אליה,
                                                                                                                                                                                                            \n", " גם קריאה ל־print ישירות על user4 תיצור את אותה תוצאה לא ססגונית:\n", "

                                                                                                                                                                                                            " ] @@ -1031,8 +1029,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " המחלקה שלנו, כמובן, כבר ערוכה להתמודד עם המצב.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " המחלקה שלנו, כמובן, כבר ערוכה להתמודד עם המצב.
                                                                                                                                                                                                            \n", " בזכות הפעולה describe_as_a_string שהגדרנו קודם לכן נוכל להדפיס את פרטי המשתמש בקלות יחסית:\n", "

                                                                                                                                                                                                            " ] @@ -1050,9 +1048,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " אבל יש דרך קלה עוד יותר!
                                                                                                                                                                                                            \n", - " ניחשתם נכון – פעולת הקסם __str__.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " אבל יש דרך קלה עוד יותר!
                                                                                                                                                                                                            \n", + " ניחשתם נכון – פעולת הקסם __str__.
                                                                                                                                                                                                            \n", " נחליף את השם של הפעולה describe_as_a_string, ל־__str__:\n", "

                                                                                                                                                                                                            " ] @@ -1084,8 +1082,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " ראו איזה קסם! עכשיו המרה של כל מופע מסוג User למחרוזת היא פעולה ממש פשוטה!
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " ראו איזה קסם! עכשיו המרה של כל מופע מסוג User למחרוזת היא פעולה ממש פשוטה!
                                                                                                                                                                                                            \n", "

                                                                                                                                                                                                            " ] }, @@ -1093,9 +1091,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " בתא שלמעלה, הגדרנו את פעולת הקסם __str__.
                                                                                                                                                                                                            \n", - " הפעולה מקבלת כפרמטר את self, המופע שביקשנו להמיר למחרוזת,
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " בתא שלמעלה, הגדרנו את פעולת הקסם __str__.
                                                                                                                                                                                                            \n", + " הפעולה מקבלת כפרמטר את self, המופע שביקשנו להמיר למחרוזת,
                                                                                                                                                                                                            \n", " ומחזירה לנו מחרוזת שאנחנו הגדרנו כמחרוזת שמתארת את המופע.\n", "

                                                                                                                                                                                                            " ] @@ -1104,7 +1102,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", " הגדרת פעולת הקסם __str__ עבור מחלקה מסוימת מאפשרת לנו להמיר מופעים למחרוזות בצורה טבעית.\n", "

                                                                                                                                                                                                            " ] @@ -1113,15 +1111,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            הפעולה __init__

                                                                                                                                                                                                            " + "

                                                                                                                                                                                                            הפעולה __init__

                                                                                                                                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " פעולת קסם חשובה אף יותר, ואולי המפורסמת ביותר, נקראת __init__.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " פעולת קסם חשובה אף יותר, ואולי המפורסמת ביותר, נקראת __init__.
                                                                                                                                                                                                            \n", " היא מאפשרת לנו להגדיר מה יקרה ברגע שניצור מופע חדש:\n", "

                                                                                                                                                                                                            " ] @@ -1156,8 +1154,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " בדוגמת הקוד שלמעלה הגדרנו את פעולת הקסם __init__, שתרוץ מייד כשנוצר מופע חדש.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " בדוגמת הקוד שלמעלה הגדרנו את פעולת הקסם __init__, שתרוץ מייד כשנוצר מופע חדש.
                                                                                                                                                                                                            \n", " החלטנו שברגע שייווצר מופע של משתמש, תודפס ההודעה New user has been created!.\n", "

                                                                                                                                                                                                            " ] @@ -1166,8 +1164,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " הכיף הגדול ב־__init__ הוא היכולת שלה לקבל פרמטרים.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " הכיף הגדול ב־__init__ הוא היכולת שלה לקבל פרמטרים.
                                                                                                                                                                                                            \n", " נוכל להעביר אליה את הארגומנטים בקריאה לשם המחלקה, בעת יצירת המופע 🤯\n", "

                                                                                                                                                                                                            " ] @@ -1204,9 +1202,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " בתא שלמעלה הגדרנו שפעולת הקסם __init__ תקבל כפרמטר הודעה להדפסה.
                                                                                                                                                                                                            \n", - " ההודעה תישמר בתכונה creation_message השייכת למופע, ותודפס מייד לאחר מכן.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " בתא שלמעלה הגדרנו שפעולת הקסם __init__ תקבל כפרמטר הודעה להדפסה.
                                                                                                                                                                                                            \n", + " ההודעה תישמר בתכונה creation_message השייכת למופע, ותודפס מייד לאחר מכן.
                                                                                                                                                                                                            \n", " את ההודעה העברנו כארגומנט בעת הקריאה לשם המחלקה, User, שיוצרת את המופע.\n", "

                                                                                                                                                                                                            " ] @@ -1215,10 +1213,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " ואם כבר יש לנו משהו שרץ כשאנחנו יוצרים את המופע... והוא יודע לקבל פרמטרים...
                                                                                                                                                                                                            \n", - " אתם חושבים על מה שאני חושב?
                                                                                                                                                                                                            \n", - " בואו נשנה את השם של create_user ל־__init__!
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " ואם כבר יש לנו משהו שרץ כשאנחנו יוצרים את המופע... והוא יודע לקבל פרמטרים...
                                                                                                                                                                                                            \n", + " אתם חושבים על מה שאני חושב?
                                                                                                                                                                                                            \n", + " בואו נשנה את השם של create_user ל־__init__!
                                                                                                                                                                                                            \n", " בצורה הזו נוכל לצקת את התכונות למופע מייד עם יצירתו, ולוותר על קריאה נפרדת לפעולה שמטרתה למלא את הערכים:\n", "

                                                                                                                                                                                                            " ] @@ -1250,9 +1248,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " איגדנו את יצירת תכונות המופע תחת פעולה אחת, שרצה כשהוא נוצר.
                                                                                                                                                                                                            \n", - " הרעיון הנפלא הזה נפוץ מאוד בשפות תכנות שתומכות במחלקות, ומוכרת בשם פעולת אתחול (Initialization Method).
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " איגדנו את יצירת תכונות המופע תחת פעולה אחת, שרצה כשהוא נוצר.
                                                                                                                                                                                                            \n", + " הרעיון הנפלא הזה נפוץ מאוד בשפות תכנות שתומכות במחלקות, ומוכרת בשם פעולת אתחול (Initialization Method).
                                                                                                                                                                                                            \n", " זו גם הסיבה לשם הפעולה – המילה init נגזרת מהמילה initialization, אתחול. \n", "

                                                                                                                                                                                                            " ] @@ -1261,21 +1259,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - "

                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", " שפצו את מחלקת הנקודה שיצרתם, כך שתכיל __init__ ו־__str__.\n", "

                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - "

                                                                                                                                                                                                            \n", - " חשוב!
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + "חשוב!
                                                                                                                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", "
                                                                                                                                                                                                            " ] }, @@ -1283,15 +1281,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ייצור מסחרי" + "### ייצור מסחרי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " צ'יקצ'וק שמה את ידה על פרטי המשתמשים של הרשת החברתית המתחרה, סניילצ'אט.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " צ'יקצ'וק שמה את ידה על פרטי המשתמשים של הרשת החברתית המתחרה, סניילצ'אט.
                                                                                                                                                                                                            \n", " רשימת המשתמשים נראית כך:\n", "

                                                                                                                                                                                                            " ] @@ -1313,8 +1311,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " נניח, לכאורה בלבד, שאנחנו רוצים להעתיק את אותה רשימת משתמשים ולצרף אותה לרשת החברתית שלנו.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " נניח, לכאורה בלבד, שאנחנו רוצים להעתיק את אותה רשימת משתמשים ולצרף אותה לרשת החברתית שלנו.
                                                                                                                                                                                                            \n", " קחו דקה וחשבו איך הייתם עושים את זה.\n", "

                                                                                                                                                                                                            " ] @@ -1323,8 +1321,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " זכרו שקריאה למחלקה User היא ככל קריאה לפונקציה אחרת,
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " זכרו שקריאה למחלקה User היא ככל קריאה לפונקציה אחרת,
                                                                                                                                                                                                            \n", " ושהמופע שחוזר ממנה הוא ערך בדיוק כמו כל ערך אחר.\n", "

                                                                                                                                                                                                            " ] @@ -1333,7 +1331,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", " נוכל ליצור רשימת מופעים של משתמשים. לדוגמה:\n", "

                                                                                                                                                                                                            " ] @@ -1355,9 +1353,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " בקוד שלמעלה יצרנו רשימה ריקה, שאותה נמלא במשתמשים שנגנוב שנשאיל מסניילצ'אט.
                                                                                                                                                                                                            \n", - " נעביר את הפרטים של כל אחד מהמשתמשים המופיעים ב־snailchat_users, ל־__init__ של User,
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " בקוד שלמעלה יצרנו רשימה ריקה, שאותה נמלא במשתמשים שנגנוב שנשאיל מסניילצ'אט.
                                                                                                                                                                                                            \n", + " נעביר את הפרטים של כל אחד מהמשתמשים המופיעים ב־snailchat_users, ל־__init__ של User,
                                                                                                                                                                                                            \n", " ונצרף את המופע החדש שנוצר לתוך הרשימה החדשה שיצרנו.\n", "

                                                                                                                                                                                                            " ] @@ -1366,7 +1364,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", " עכשיו הרשימה our_users היא רשימה לכל דבר, שכוללת את כל המשתמשים החדשים שהצטרפו לרשת החברתית שלנו:\n", "

                                                                                                                                                                                                            " ] @@ -1386,23 +1384,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - "

                                                                                                                                                                                                            \n", - " צרו את רשימת כל הנקודות שה־x וה־y שלהן הוא מספר שלם בין 0 ל־6.
                                                                                                                                                                                                            \n", - " לדוגמה, רשימת כל הנקודות שה־x וה־y שלהן הוא בין 0 ל־2 היא:
                                                                                                                                                                                                            \n", - " [(0, 0), (0, 1), (1, 0), (1, 1), (0, 2), (1, 2), (2, 0), (2, 1), (2, 2)]\n", - "

                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - "

                                                                                                                                                                                                            \n", - " חשוב!
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " צרו את רשימת כל הנקודות שה־x וה־y שלהן הוא מספר שלם בין 0 ל־6.
                                                                                                                                                                                                            \n", + " לדוגמה, רשימת כל הנקודות שה־x וה־y שלהן הוא בין 0 ל־2 היא:
                                                                                                                                                                                                            \n", + "[(0, 0), (0, 1), (1, 0), (1, 1), (0, 2), (1, 2), (2, 0), (2, 1), (2, 2)]\n", + "

                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + "חשוב!
                                                                                                                                                                                                            \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", "
                                                                                                                                                                                                            " ] }, @@ -1410,22 +1408,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## טעויות נפוצות" + "## טעויות נפוצות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### גבולות מרחב הערכים" + "### גבולות מרחב הערכים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " נסקור כמה דוגמאות כדי לוודא שבאמת הבנו כיצד מתנהגות מחלקות.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " נסקור כמה דוגמאות כדי לוודא שבאמת הבנו כיצד מתנהגות מחלקות.
                                                                                                                                                                                                            \n", " נגדיר את מחלקת User שאנחנו מכירים, ונצרף לה את הפעולה celebrate_birthday, שכזכור, מגדילה את גיל המשתמש ב־1:\n", "

                                                                                                                                                                                                            " ] @@ -1455,8 +1453,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " ניסיון ליצור מופע של משתמש ולחגוג לו יום הולדת יגרום לשגיאה.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " ניסיון ליצור מופע של משתמש ולחגוג לו יום הולדת יגרום לשגיאה.
                                                                                                                                                                                                            \n", " תוכלו לנחש מה תהיה השגיאה עוד לפני שתריצו?\n", "

                                                                                                                                                                                                            " ] @@ -1475,10 +1473,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " ניסינו לשנות את המשתנה age – אך הוא אינו מוגדר.
                                                                                                                                                                                                            \n", - " כדי לשנות את הגיל של המשתמש שיצרנו, נהיה חייבים להתייחס ל־self.age.
                                                                                                                                                                                                            \n", - " אם לא נציין במפורש שאנחנו רוצים לשנות את התכונה age ששייכת ל־self, פייתון לא תדע לאיזה מופע אנחנו מתכוונים.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " ניסינו לשנות את המשתנה age – אך הוא אינו מוגדר.
                                                                                                                                                                                                            \n", + " כדי לשנות את הגיל של המשתמש שיצרנו, נהיה חייבים להתייחס ל־self.age.
                                                                                                                                                                                                            \n", + " אם לא נציין במפורש שאנחנו רוצים לשנות את התכונה age ששייכת ל־self, פייתון לא תדע לאיזה מופע אנחנו מתכוונים.
                                                                                                                                                                                                            \n", " נתקן:\n", "

                                                                                                                                                                                                            " ] @@ -1514,8 +1512,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " באותה המידה, תכונות שהוגדרו כחלק ממופע לא מוגדרות מחוצה לו.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " באותה המידה, תכונות שהוגדרו כחלק ממופע לא מוגדרות מחוצה לו.
                                                                                                                                                                                                            \n", " אפשר להשתמש, לדוגמה, בשם המשתנה age מבלי לחשוש לפגוע בתפקוד המחלקה או בתפקוד המופעים:\n", "

                                                                                                                                                                                                            " ] @@ -1536,7 +1534,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", " כדי לשנות את גילו של המשתמש, נצטרך להתייחס אל התכונה שלו בצורת הכתיבה שלמדנו:\n", "

                                                                                                                                                                                                            " ] @@ -1555,15 +1553,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תכונה או פעולה שלא קיימות" + "### תכונה או פעולה שלא קיימות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " שגיאה שמתרחשת לא מעט היא פנייה לתכונה או לפעולה שלא קיימות עבור המופע.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " שגיאה שמתרחשת לא מעט היא פנייה לתכונה או לפעולה שלא קיימות עבור המופע.
                                                                                                                                                                                                            \n", " לדוגמה:\n", "

                                                                                                                                                                                                            " ] @@ -1587,8 +1585,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " יצרנו רשימת קוביות וביצענו השמה כך ש־dice_bag תצביע עליה.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " יצרנו רשימת קוביות וביצענו השמה כך ש־dice_bag תצביע עליה.
                                                                                                                                                                                                            \n", " כעת נדפיס את התכונה is_valid של כל אחת מהקוביות:\n", "

                                                                                                                                                                                                            " ] @@ -1607,9 +1605,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " הבעיה היא שהקוביה הראשונה שיצרנו קיבלה את המספר 0.
                                                                                                                                                                                                            \n", - " במקרה כזה, התנאי בפעולת האתחול (__init__) לא יתקיים, והתכונה is_valid לא תוגדר.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " הבעיה היא שהקוביה הראשונה שיצרנו קיבלה את המספר 0.
                                                                                                                                                                                                            \n", + " במקרה כזה, התנאי בפעולת האתחול (__init__) לא יתקיים, והתכונה is_valid לא תוגדר.
                                                                                                                                                                                                            \n", " כשהלולאה תגיע לקובייה 0 ותנסה לגשת לתכונה is_valid, נגלה שהיא לא קיימת עבור הקובייה 0, ונקבל AttributeError.\n", "

                                                                                                                                                                                                            " ] @@ -1618,7 +1616,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", " נתקן:\n", "

                                                                                                                                                                                                            " ] @@ -1643,15 +1641,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## סיכום" + "## סיכום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " במחברת זו רכשנו כלים לעבודה עם מחלקות ועצמים, ולייצוג אוספים של תכונות ופעולות.
                                                                                                                                                                                                            \n", + "

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

                                                                                                                                                                                                            " ] @@ -1660,9 +1658,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " נהוג לכנות את עולם המחלקות בשם \"תכנות מונחה עצמים\" (Object Oriented Programming, או OOP).
                                                                                                                                                                                                            \n", - " זו פרדיגמת תכנות הדוגלת ביצירת מחלקות לצורך חלוקת קוד טובה יותר,
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " נהוג לכנות את עולם המחלקות בשם \"תכנות מונחה עצמים\" (Object Oriented Programming, או OOP).
                                                                                                                                                                                                            \n", + " זו פרדיגמת תכנות הדוגלת ביצירת מחלקות לצורך חלוקת קוד טובה יותר,
                                                                                                                                                                                                            \n", " ובתיאור עצמים מהעולם האמיתי בצורה טובה יותר, כאוספים של תכונות ופעולות.\n", "

                                                                                                                                                                                                            " ] @@ -1671,8 +1669,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " תכנות מונחה עצמים הוא פיתוח מאוחר יותר של פרדיגמת תכנות אחרת שאתם כבר מכירים, הנקראת \"תכנות פרוצדורלי\".
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " תכנות מונחה עצמים הוא פיתוח מאוחר יותר של פרדיגמת תכנות אחרת שאתם כבר מכירים, הנקראת \"תכנות פרוצדורלי\".
                                                                                                                                                                                                            \n", " פרדיגמה זו דוגלת בחלוקת הקוד לתתי־תוכניות קטנות (מה שאתם מכירים כפונקציות), כדי ליצור קוד שמחולק טוב יותר וקל יותר לתחזוק.\n", "

                                                                                                                                                                                                            " ] @@ -1681,7 +1679,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", " פייתון תומכת הן בתכנות פרוצדורלי והן בתכנות מונחה עצמים.\n", "

                                                                                                                                                                                                            " ] @@ -1690,63 +1688,63 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            מחלקה (Class)
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " תבנית, או שבלונה, שמתארת אוסף של תכונות ופעולות שיש ביניהן קשר.
                                                                                                                                                                                                            \n", - " המחלקה מגדירה מבנה שבעזרתו נוכל ליצור בקלות עצם מוגדר, שוב ושוב.
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            מחלקה (Class)
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + " תבנית, או שבלונה, שמתארת אוסף של תכונות ופעולות שיש ביניהן קשר.
                                                                                                                                                                                                            \n", + " המחלקה מגדירה מבנה שבעזרתו נוכל ליצור בקלות עצם מוגדר, שוב ושוב.
                                                                                                                                                                                                            \n", " לדוגמה: מחלקה המתארת משתמש ברשת חברתית, מחלקה המתארת כלי רכב, מחלקה המתארת נקודה במישור.\n", "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            מופע (Instance)
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " נקרא גם עצם (Object).
                                                                                                                                                                                                            \n", - " ערך שנוצר על ידי מחלקה כלשהי. סוג הערך ייקבע לפי המחלקה שיצרה אותו.
                                                                                                                                                                                                            \n", - " הערך נוצר לפי התבנית (\"השבלונה\") של המחלקה שממנה הוא נוצר, ומוצמדות לו הפעולות שהוגדרו במחלקה.
                                                                                                                                                                                                            \n", - " המופע הוא יחידה עצמאית שעומדת בפני עצמה. לרוב מחלקה תשמש אותנו ליצירת מופעים רבים.
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            מופע (Instance)
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + " נקרא גם עצם (Object).
                                                                                                                                                                                                            \n", + " ערך שנוצר על ידי מחלקה כלשהי. סוג הערך ייקבע לפי המחלקה שיצרה אותו.
                                                                                                                                                                                                            \n", + " הערך נוצר לפי התבנית (\"השבלונה\") של המחלקה שממנה הוא נוצר, ומוצמדות לו הפעולות שהוגדרו במחלקה.
                                                                                                                                                                                                            \n", + " המופע הוא יחידה עצמאית שעומדת בפני עצמה. לרוב מחלקה תשמש אותנו ליצירת מופעים רבים.
                                                                                                                                                                                                            \n", " לדוגמה: המופע \"נקודה שנמצאת ב־(5, 3)\" יהיה מופע שנוצר מהמחלקה \"נקודה\". \n", "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            תכונה (Property, Member)
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " ערך אופייני למופע שנוצר מהמחלקה.
                                                                                                                                                                                                            \n", - " משתנים השייכים למופע שנוצר מהמחלקה, ומכילים ערכים שמתארים אותו.
                                                                                                                                                                                                            \n", - " לדוגמה: לנקודה במישור יש ערך x וערך y. אלו 2 תכונות של הנקודה.
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            תכונה (Property, Member)
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + " ערך אופייני למופע שנוצר מהמחלקה.
                                                                                                                                                                                                            \n", + " משתנים השייכים למופע שנוצר מהמחלקה, ומכילים ערכים שמתארים אותו.
                                                                                                                                                                                                            \n", + " לדוגמה: לנקודה במישור יש ערך x וערך y. אלו 2 תכונות של הנקודה.
                                                                                                                                                                                                            \n", " נוכל להחליט שתכונותיה של מחלקת מכונית יהיו צבע, דגם ויצרן.\n", "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            פעולה (Method)
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " פונקציה שמוגדרת בגוף המחלקה.
                                                                                                                                                                                                            \n", - " מתארת התנהגויות אפשריות של המופע שייווצר מהמחלקה.
                                                                                                                                                                                                            \n", - " לדוגמה: פעולה על נקודה במישור יכולה להיות מציאת מרחקה מראשית הצירים.
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            פעולה (Method)
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + " פונקציה שמוגדרת בגוף המחלקה.
                                                                                                                                                                                                            \n", + " מתארת התנהגויות אפשריות של המופע שייווצר מהמחלקה.
                                                                                                                                                                                                            \n", + " לדוגמה: פעולה על נקודה במישור יכולה להיות מציאת מרחקה מראשית הצירים.
                                                                                                                                                                                                            \n", " פעולה על שולחן יכולה להיות \"קצץ 5 סנטימטר מגובהו\".\n", "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            שדה (Field, Attribute)
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " שם כללי הנועד לתאר תכונה או פעולה.
                                                                                                                                                                                                            \n", - " שדות של מופע מסוים יהיו כלל התכונות והפעולות שאפשר לגשת אליהן מאותו מופע.
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            שדה (Field, Attribute)
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + " שם כללי הנועד לתאר תכונה או פעולה.
                                                                                                                                                                                                            \n", + " שדות של מופע מסוים יהיו כלל התכונות והפעולות שאפשר לגשת אליהן מאותו מופע.
                                                                                                                                                                                                            \n", " לדוגמה: השדות של נקודה יהיו התכונות x ו־y, והפעולה שבודקת את מרחקה מראשית הצירים.\n", "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            פעולה מיוחדת (Special Method)
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " ידועה גם כ־dunder method (double under, קו תחתון כפול) או כ־magic method (פעולת קסם).
                                                                                                                                                                                                            \n", - " פעולה שהגדרתה במחלקה גורמת למחלקה או למופעים הנוצרים ממנה להתנהגות מיוחדת.
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            פעולה מיוחדת (Special Method)
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + " ידועה גם כ־dunder method (double under, קו תחתון כפול) או כ־magic method (פעולת קסם).
                                                                                                                                                                                                            \n", + " פעולה שהגדרתה במחלקה גורמת למחלקה או למופעים הנוצרים ממנה להתנהגות מיוחדת.
                                                                                                                                                                                                            \n", " דוגמאות לפעולות שכאלו הן __init__ ו־__str__.\n", "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            פעולת אתחול (Initialization Method)
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " פעולה שרצה עם יצירת מופע חדש מתוך מחלקה.
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            פעולת אתחול (Initialization Method)
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + " פעולה שרצה עם יצירת מופע חדש מתוך מחלקה.
                                                                                                                                                                                                            \n", " לרוב משתמשים בפעולה זו כדי להזין במופע ערכים התחלתיים.\n", "
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            תכנות מונחה עצמים (Object Oriented Programming)
                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                            \n", - " פרדיגמת תכנות שמשתמשת במחלקות בקוד ככלי העיקרי להפשטה של העולם האמיתי.
                                                                                                                                                                                                            \n", - " בפרדיגמה זו נהוג ליצור מחלקות המייצגות תבניות של עצמים, ולאפיין את העצמים באמצעות תכונות ופעולות.
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            תכנות מונחה עצמים (Object Oriented Programming)
                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                            \n", + " פרדיגמת תכנות שמשתמשת במחלקות בקוד ככלי העיקרי להפשטה של העולם האמיתי.
                                                                                                                                                                                                            \n", + " בפרדיגמה זו נהוג ליצור מחלקות המייצגות תבניות של עצמים, ולאפיין את העצמים באמצעות תכונות ופעולות.
                                                                                                                                                                                                            \n", " בעזרת המחלקות אפשר ליצור מופעים, שהם ייצוג של פריט בודד (עצם, אובייקט) שנוצר לפי תבנית המחלקה.\n", "
                                                                                                                                                                                                            \n", "
                                                                                                                                                                                                            " @@ -1756,18 +1754,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגיל לדוגמה" + "## תרגיל לדוגמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", - " כתבו מחלקה המייצגת נתיב תקין במערכת ההפעלה חלונות.
                                                                                                                                                                                                            \n", - " הנתיב מחולק לחלקים באמצעות התו / או התו \\.
                                                                                                                                                                                                            \n", - " החלק הראשון בנתיב הוא תמיד אות הכונן ואחריה נקודתיים.
                                                                                                                                                                                                            \n", - " החלקים שנמצאים אחרי החלק הראשון, ככל שיש כאלו, הם תיקיות וקבצים.
                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", + " כתבו מחלקה המייצגת נתיב תקין במערכת ההפעלה חלונות.
                                                                                                                                                                                                            \n", + " הנתיב מחולק לחלקים באמצעות התו / או התו \\.
                                                                                                                                                                                                            \n", + " החלק הראשון בנתיב הוא תמיד אות הכונן ואחריה נקודתיים.
                                                                                                                                                                                                            \n", + " החלקים שנמצאים אחרי החלק הראשון, ככל שיש כאלו, הם תיקיות וקבצים.
                                                                                                                                                                                                            \n", " דוגמאות לנתיבים תקינים:\n", "

                                                                                                                                                                                                            " ] @@ -1776,32 +1774,32 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                            • C:\\Users\\Yam\\python.jpg
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • C:/Users/Yam/python.jpg
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • C:
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • C:\\
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • C:/
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • C:\\User/
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • D:/User/
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • C:/User
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            " + "
                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                            • C:\\Users\\Yam\\python.jpg
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • C:/Users/Yam/python.jpg
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • C:
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • C:\\
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • C:/
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • C:\\User/
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • D:/User/
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            • C:/User
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                            " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                            \n", " המחלקה תכלול את הפעולות הבאות:\n", "

                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                            • אחזר את אות הכונן בעזרת הפעולה get_drive_letter.
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • אחזר את הנתיב ללא חלקו האחרון בעזרת הפעולה get_dirname.
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • אחזר את שם החלק האחרון בנתיב, בעזרת הפעולה get_basename.
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • אחזר את סיומת הקובץ בעזרת הפעולה get_extension.
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • אחזר אם הנתיב קיים במחשב בעזרת הפעולה is_exists.
                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                            • אחזר את הנתיב כולו כמחרוזת, כשהתו המפריד הוא /, וללא / בסוף הנתיב.
                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                              • אחזר את אות הכונן בעזרת הפעולה get_drive_letter.
                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                              • אחזר את הנתיב ללא חלקו האחרון בעזרת הפעולה get_dirname.
                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                              • אחזר את שם החלק האחרון בנתיב, בעזרת הפעולה get_basename.
                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                              • אחזר את סיומת הקובץ בעזרת הפעולה get_extension.
                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                              • אחזר אם הנתיב קיים במחשב בעזרת הפעולה is_exists.
                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                              • אחזר את הנתיב כולו כמחרוזת, כשהתו המפריד הוא /, וללא / בסוף הנתיב.
                                                                                                                                                                                                              • \n", "
                                                                                                                                                                                                              " ] }, @@ -1888,25 +1886,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### סקרנות" + "### סקרנות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                              \n", - " מחלקת המוצר בצ'יקצ'וק החליטה להוסיף פיצ'ר שמאפשר למשתמשים ליצור סקרים, וכרגיל כל העבודה נופלת עליכם.
                                                                                                                                                                                                              \n", - " כתבו מחלקה בשם Poll שמייצגת סקר.
                                                                                                                                                                                                              \n", - " פעולת האתחול של המחלקה תקבל כפרמטר את שאלת הסקר, וכפרמטר נוסף iterable עם כל אפשרויות ההצבעה לסקר.
                                                                                                                                                                                                              \n", - " כל אפשרות הצבעה בסקר מיוצגת על ידי מחרוזת.
                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                              \n", + " מחלקת המוצר בצ'יקצ'וק החליטה להוסיף פיצ'ר שמאפשר למשתמשים ליצור סקרים, וכרגיל כל העבודה נופלת עליכם.
                                                                                                                                                                                                              \n", + " כתבו מחלקה בשם Poll שמייצגת סקר.
                                                                                                                                                                                                              \n", + " פעולת האתחול של המחלקה תקבל כפרמטר את שאלת הסקר, וכפרמטר נוסף iterable עם כל אפשרויות ההצבעה לסקר.
                                                                                                                                                                                                              \n", + " כל אפשרות הצבעה בסקר מיוצגת על ידי מחרוזת.
                                                                                                                                                                                                              \n", " המחלקה תכיל את הפעולות הבאות: \n", "

                                                                                                                                                                                                              " ] @@ -1915,13 +1913,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                              1. vote שמקבלת כפרמטר אפשרות הצבעה לסקר ומגדילה את מספר ההצבעות בו ב־1.
                                                                                                                                                                                                              2. \n", - "
                                                                                                                                                                                                              3. add_option, שמקבלת כפרמטר אפשרות הצבעה לסקר ומוסיפה אותה.
                                                                                                                                                                                                              4. \n", - "
                                                                                                                                                                                                              5. remove_option שמקבלת כפרמטר אפשרות הצבעה לסקר ומוחקת אותה.
                                                                                                                                                                                                              6. \n", - "
                                                                                                                                                                                                              7. get_votes המחזירה את כל האפשרויות כרשימה של tuple, המסודרים לפי כמות ההצבעות.
                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                1. vote שמקבלת כפרמטר אפשרות הצבעה לסקר ומגדילה את מספר ההצבעות בו ב־1.
                                                                                                                                                                                                                2. \n", + "
                                                                                                                                                                                                                3. add_option, שמקבלת כפרמטר אפשרות הצבעה לסקר ומוסיפה אותה.
                                                                                                                                                                                                                4. \n", + "
                                                                                                                                                                                                                5. remove_option שמקבלת כפרמטר אפשרות הצבעה לסקר ומוחקת אותה.
                                                                                                                                                                                                                6. \n", + "
                                                                                                                                                                                                                7. get_votes המחזירה את כל האפשרויות כרשימה של tuple, המסודרים לפי כמות ההצבעות.
                                                                                                                                                                                                                  \n", " בכל tuple התא הראשון יהיה שם האפשרות בסקר, והתא השני יהיה מספר ההצבעות.
                                                                                                                                                                                                                8. \n", - "
                                                                                                                                                                                                                9. get_winner המחזירה את שם האפשרות שקיבלה את מרב ההצבעות.
                                                                                                                                                                                                                10. \n", + "
                                                                                                                                                                                                                11. get_winner המחזירה את שם האפשרות שקיבלה את מרב ההצבעות.
                                                                                                                                                                                                                12. \n", "
                                                                                                                                                                                                                " ] }, @@ -1929,10 +1927,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                \n", - " במקרה של תיקו, החזירו מ־get_winner את אחת האפשרויות המובילות.
                                                                                                                                                                                                                \n", - " החזירו מהפעולות vote, add_option ו־remove_option את הערך True אם הפעולה עבדה כמצופה.
                                                                                                                                                                                                                \n", - " במקרה של הצבעה לאפשרות שאינה קיימת, מחיקת אפשרות שאינה קיימת או הוספת אפשרות שכבר קיימת, החזירו False.
                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                \n", + " במקרה של תיקו, החזירו מ־get_winner את אחת האפשרויות המובילות.
                                                                                                                                                                                                                \n", + " החזירו מהפעולות vote, add_option ו־remove_option את הערך True אם הפעולה עבדה כמצופה.
                                                                                                                                                                                                                \n", + " במקרה של הצבעה לאפשרות שאינה קיימת, מחיקת אפשרות שאינה קיימת או הוספת אפשרות שכבר קיימת, החזירו False.
                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                " ] }, @@ -1940,7 +1938,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                \n", "ודאו שהקוד הבא מדפיס רק True עבור התוכנית שכתבתם:\n", "

                                                                                                                                                                                                                " ] @@ -1975,15 +1973,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### משחקי הרעב" + "### משחקי הרעב" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                \n", - " קטניס אוורדין הלכה לאיבוד באיזו זירה מעצבנת, ועכשיו היא מחפשת את הסניף הקרוב של אבו־חסן למנה משולשת ראויה.
                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                \n", + " קטניס אוורדין הלכה לאיבוד באיזו זירה מעצבנת, ועכשיו היא מחפשת את הסניף הקרוב של אבו־חסן למנה משולשת ראויה.
                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                " ] }, @@ -1991,10 +1989,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                \n", - " צורת הזירה היא משולש שקודקודיו (0, 0), (2, 2) ו־(4, 0).
                                                                                                                                                                                                                \n", - " קטניס מתחילה מאחד הקודקודים ומחליטה על הצעד הבא שלה כך:
                                                                                                                                                                                                                \n", - " \n", + "

                                                                                                                                                                                                                \n", + " צורת הזירה היא משולש שקודקודיו (0, 0), (2, 2) ו־(4, 0).
                                                                                                                                                                                                                \n", + " קטניס מתחילה מאחד הקודקודים ומחליטה על הצעד הבא שלה כך:
                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                " ] }, @@ -2002,10 +1999,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                1. היא בוחרת אקראית באחד מקודקודי הזירה.
                                                                                                                                                                                                                2. \n", - "
                                                                                                                                                                                                                3. היא הולכת מהמקום שבו היא נמצאת את מחצית הדרך עד לקודקוד שבחרה.
                                                                                                                                                                                                                4. \n", - "
                                                                                                                                                                                                                5. היא מסמנת על המפה את הנקודה שהגיעה אליה.
                                                                                                                                                                                                                6. \n", + "
                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                  1. היא בוחרת אקראית באחד מקודקודי הזירה.
                                                                                                                                                                                                                  2. \n", + "
                                                                                                                                                                                                                  3. היא הולכת מהמקום שבו היא נמצאת את מחצית הדרך עד לקודקוד שבחרה.
                                                                                                                                                                                                                  4. \n", + "
                                                                                                                                                                                                                  5. היא מסמנת על המפה את הנקודה שהגיעה אליה.
                                                                                                                                                                                                                  6. \n", "
                                                                                                                                                                                                                  " ] }, @@ -2013,9 +2010,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", - " כתבו פעולה בשם plot_walks, שמקבלת כפרמטר את מספר הצעדים של קטניס.
                                                                                                                                                                                                                  \n", - " הפעולה תצייר מפת נקודות בגודל 4 על 4, שכל נקודה בה מציינת מקום שקטניס סימנה במפה שלה.
                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", + " כתבו פעולה בשם plot_walks, שמקבלת כפרמטר את מספר הצעדים של קטניס.
                                                                                                                                                                                                                  \n", + " הפעולה תצייר מפת נקודות בגודל 4 על 4, שכל נקודה בה מציינת מקום שקטניס סימנה במפה שלה.
                                                                                                                                                                                                                  \n", "

                                                                                                                                                                                                                  " ] }, @@ -2023,8 +2020,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", - " השתמשו במנועי חיפוש כדי לקרוא על פעולות קסם שיכולות לעזור לכם, ועל מודולים לשרטוט גרפים.
                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", + " השתמשו במנועי חיפוש כדי לקרוא על פעולות קסם שיכולות לעזור לכם, ועל מודולים לשרטוט גרפים.
                                                                                                                                                                                                                  \n", " שימו לב שנקודות יכולות להיות ממוקמות על x ו־y עשרוניים.\n", "

                                                                                                                                                                                                                  " ] diff --git a/week7/2_Documentation.ipynb b/week7/2_Documentation.ipynb index 3475037..e06b997 100644 --- a/week7/2_Documentation.ipynb +++ b/week7/2_Documentation.ipynb @@ -4,29 +4,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# תיעוד" + "# תיעוד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", - " אחרי שחיפשתם זמן רב מודולים ואפילו השתמשתם באחד או שניים מהם, הבנתם ודאי את החשיבות הרבה של תיעוד טוב.
                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", + " אחרי שחיפשתם זמן רב מודולים ואפילו השתמשתם באחד או שניים מהם, הבנתם ודאי את החשיבות הרבה של תיעוד טוב.
                                                                                                                                                                                                                  \n", " בין אם תכתבו קוד כחלק מפרויקט צוותי או שתשחררו מודול בקוד פתוח, איכות התיעוד תקבע אם יהיו לכם לקוחות מרוצים או אם תצטרכו לעמוד מול המון זועם. \n", "

                                                                                                                                                                                                                  " ] @@ -35,9 +35,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", - " כמפתחים וכמשתמשים, התיעוד עוזר לנו להבין מהי תכליתם של מודולים, טיפוסים, מחלקות, פעולות ופונקציות.
                                                                                                                                                                                                                  \n", - " הוא עוזר לנו להתמצא בקוד ולהבין במהירות אם מה שאנחנו רואים מתאים לנו ומה תהיה צורת השימוש המיטבית בו,
                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", + " כמפתחים וכמשתמשים, התיעוד עוזר לנו להבין מהי תכליתם של מודולים, טיפוסים, מחלקות, פעולות ופונקציות.
                                                                                                                                                                                                                  \n", + " הוא עוזר לנו להתמצא בקוד ולהבין במהירות אם מה שאנחנו רואים מתאים לנו ומה תהיה צורת השימוש המיטבית בו,
                                                                                                                                                                                                                  \n", " ובכלל, בשפה כמו פייתון, שמקדשת את ערך קְרִיאוּת הקוד, יש ערך גדול מאוד לתיעוד ראוי. \n", "

                                                                                                                                                                                                                  " ] @@ -46,7 +46,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", " במחברת הקרובה נלמד על תיעוד ראוי בפייתון, על מוסכמות תיעוד ועל גישות שונות לתיעוד.\n", "

                                                                                                                                                                                                                  " ] @@ -55,14 +55,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הערות ותיעוד" + "### הערות ותיעוד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", " לפני שנדון לעומק בתיעוד, נדבר מעט על ההבדל שבין הערות בקוד לבין תיעוד בקוד.\n", "

                                                                                                                                                                                                                  " ] @@ -71,11 +71,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                                                  " ] }, @@ -83,9 +83,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                  \n", + " לעומתן, תיעוד הוא מלל המיועד לאנשים שמשתמשים בקוד שלכם.
                                                                                                                                                                                                                  \n", + " הוא יוצמד למודולים, למחלקות, לפעולות ולפונקציות, ויספר בקצרה ובענייניות מה עושה הפונקציה ואיך להשתמש בה.
                                                                                                                                                                                                                  \n", "

                                                                                                                                                                                                                  " ] }, @@ -93,8 +93,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", - " אם, לדוגמה, פיתחתם מודול ושיחררתם אותו לאינטרנט,
                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", + " אם, לדוגמה, פיתחתם מודול ושיחררתם אותו לאינטרנט,
                                                                                                                                                                                                                  \n", " המשתמשים בו יצפו לתיעוד שברור ממנו איך משתמשים בקוד, ומה קורה בכל אחד ממקרי הקצה.\n", "

                                                                                                                                                                                                                  " ] @@ -103,22 +103,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הערות בקוד" + "## הערות בקוד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Block Comments" + "### Block Comments" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", - " כפי שאתם ודאי זוכרים מהמחברות שקראתם עד כה, הערה תתחיל בתו # ורווח שיבוא אחריו.
                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", + " כפי שאתם ודאי זוכרים מהמחברות שקראתם עד כה, הערה תתחיל בתו # ורווח שיבוא אחריו.
                                                                                                                                                                                                                  \n", " אחרי הסולמית והרווח יבוא המלל שמסביר את ההחלטות שהתקבלו לצורך כתיבת הקוד.\n", "

                                                                                                                                                                                                                  " ] @@ -127,7 +127,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", " נראה לדוגמה קוד קצר לפירוק מספרים ראשוניים עם הערות שהוטמעו בו:\n", "

                                                                                                                                                                                                                  " ] @@ -172,9 +172,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", - " בקוד שלמעלה מופיעים שני מקרים של \"Block Comment\".
                                                                                                                                                                                                                  \n", - " מדובר בשורה אחת או יותר של הערה שבאה לפני פיסת קוד, ומטרתה לבאר דברים בקוד.
                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", + " בקוד שלמעלה מופיעים שני מקרים של \"Block Comment\".
                                                                                                                                                                                                                  \n", + " מדובר בשורה אחת או יותר של הערה שבאה לפני פיסת קוד, ומטרתה לבאר דברים בקוד.
                                                                                                                                                                                                                  \n", " ה־Block ייכתב באותה רמת הזחה של הקוד שאליו הוא מתייחס, וכל שורה בו תתחיל בתו # שלאחריו יבוא רווח.\n", "

                                                                                                                                                                                                                  " ] @@ -183,7 +183,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                  \n", " נשים לב לנקודות סגנון חשובות, שניכרות היטב בדוגמה האחרונה:\n", "

                                                                                                                                                                                                                  " ] @@ -192,12 +192,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                  • הערה תמיד תסביר למה עשינו משהו מסוים – ובשום אופן לא מה עשינו.
                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                    • הערה תמיד תסביר למה עשינו משהו מסוים – ובשום אופן לא מה עשינו.
                                                                                                                                                                                                                      \n", " המתכנת המפורסם ג'ף אטווד אומר: \"הקוד יגיד לך מה, ההערות יגידו לך למה\".
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • הערות מורכבות ממשפטים שלמים שמתחילים באות גדולה ומסתיימים בנקודה.
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • לעולם לא נשנה שמות של מזהים (משתנים, פונקציות וכו') – גם אם הם מופיעים בתחילת משפט.
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • הערות חייבות להיכתב באנגלית.
                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                    • הערות מורכבות ממשפטים שלמים שמתחילים באות גדולה ומסתיימים בנקודה.
                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                    • לעולם לא נשנה שמות של מזהים (משתנים, פונקציות וכו') – גם אם הם מופיעים בתחילת משפט.
                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                    • הערות חייבות להיכתב באנגלית.
                                                                                                                                                                                                                    • \n", "
                                                                                                                                                                                                                    " ] }, @@ -205,14 +205,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Inline Comments" + "### Inline Comments" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                    \n", " הערה יכולה להיות ממוקמת גם בסוף שורת הקוד:\n", "

                                                                                                                                                                                                                    " ] @@ -230,8 +230,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                    \n", - " במקרה שבו ההערה נמצאת באותה שורה יחד עם הקוד (כמו בתא האחרון), נהוג לשים לפחות שני רווחים לפני הסימן #.
                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                    \n", + " במקרה שבו ההערה נמצאת באותה שורה יחד עם הקוד (כמו בתא האחרון), נהוג לשים לפחות שני רווחים לפני הסימן #.
                                                                                                                                                                                                                    \n", " זוהי צורה מקובלת פחות לכתיבת הערות, כיוון שהיא מאריכה את שורת הקוד, שוברת את רצף הקריאה ולרוב מיותרת.\n", "

                                                                                                                                                                                                                    " ] @@ -240,8 +240,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                    \n", - " מתכנתים מתחילים נוטים להסביר מה הקוד עושה, ולשם כך הם משתמשים לעיתים קרובות ב־Inline Comments.
                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                    \n", + " מתכנתים מתחילים נוטים להסביר מה הקוד עושה, ולשם כך הם משתמשים לעיתים קרובות ב־Inline Comments.
                                                                                                                                                                                                                    \n", " הימנעו מלהסביר מה הקוד שלכם עושה.\n", "

                                                                                                                                                                                                                    " ] @@ -250,7 +250,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                    \n", " דוגמה להערה לא טובה:\n", "

                                                                                                                                                                                                                    " ] @@ -268,7 +268,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                    \n", " ולעומתה, הערה המתקבלת על הדעת:\n", "

                                                                                                                                                                                                                    " ] @@ -286,14 +286,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הוויכוח על הערות" + "### הוויכוח על הערות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                    \n", " בעולם התוכנה המקצועי ניטש ויכוח רב שנים על מתי נכון להוסיף הערות לקוד.\n", "

                                                                                                                                                                                                                    " ] @@ -302,9 +302,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                    \n", - " דעה פופולרית אחת דוגלת בריבוי הערות בקוד.
                                                                                                                                                                                                                    \n", - " אלו המצדדים בדעה זו מוסיפים לקוד שלהם הערות לצרכים מגוונים:
                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                    \n", + " דעה פופולרית אחת דוגלת בריבוי הערות בקוד.
                                                                                                                                                                                                                    \n", + " אלו המצדדים בדעה זו מוסיפים לקוד שלהם הערות לצרכים מגוונים:
                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                    " ] }, @@ -312,22 +312,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                    • הסבר מילולי על פעולת הקוד.
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • הסבר מדוע קוד מסוים עושה משהו.
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • הסבר מדוע קוד נראה פגום בצורה מסוימת (לא עוקב אחרי מוסכמות, לא יעיל) ולמה יש להשאיר אותו כך.
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • הסבר על החלטות שהתקבלו בנוגע לצורת הקוד שנכתב ולארכיטקטורה שלו.
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • שמירה של קוד לשימוש עתידי (נניח, במקרים של קוד שעוזר לנפות שגיאות).
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • צירוף נתונים נוספים על אודות הקוד – מהיכן הוא לקוח, תנאי הרישיון שלו וכדומה.
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                      • הסבר מילולי על פעולת הקוד.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • הסבר מדוע קוד מסוים עושה משהו.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • הסבר מדוע קוד נראה פגום בצורה מסוימת (לא עוקב אחרי מוסכמות, לא יעיל) ולמה יש להשאיר אותו כך.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • הסבר על החלטות שהתקבלו בנוגע לצורת הקוד שנכתב ולארכיטקטורה שלו.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • שמירה של קוד לשימוש עתידי (נניח, במקרים של קוד שעוזר לנפות שגיאות).
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • צירוף נתונים נוספים על אודות הקוד – מהיכן הוא לקוח, תנאי הרישיון שלו וכדומה.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • \n", " תיוג, שמטרתו להקל בחיפוש עתידי של בעיות נפוצות בקוד. לדוגמה:\n", "
                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                        • # FIXME לציון קטע קוד שצריך לתקן.
                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                        • # TODO ואחריו מלל שמסביר משהו שעדיין צריך לבצע ועוד לא נפתר.
                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                        • # HACK לציון מעקף שנועד לפתור בעיה, פעמים רבות בדרך בעייתית.
                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                      • שחרור קיטור. בקוד המקור של פרויקט הקוד הפתוח Linux, לדוגמה, מופיעה המילה \"crap\" מעל 150 פעמים, מספר שנמצא במגמת עלייה לאורך השנים.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • # FIXME לציון קטע קוד שצריך לתקן.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • # TODO ואחריו מלל שמסביר משהו שעדיין צריך לבצע ועוד לא נפתר.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • # HACK לציון מעקף שנועד לפתור בעיה, פעמים רבות בדרך בעייתית.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                    • שחרור קיטור. בקוד המקור של פרויקט הקוד הפתוח Linux, לדוגמה, מופיעה המילה \"crap\" מעל 150 פעמים, מספר שנמצא במגמת עלייה לאורך השנים.
                                                                                                                                                                                                                    • \n", "
                                                                                                                                                                                                                    " ] }, @@ -335,9 +335,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                    \n", - " דעה פופולרית אחרת דוגלת בצמצום ההערות בקוד למינימום ההכרחי.
                                                                                                                                                                                                                    \n", - " אלו המצדדים בדעה זו משתדלים להמעיט ככל האפשר בהוספת הערות לקוד.
                                                                                                                                                                                                                    \n", + "

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

                                                                                                                                                                                                                    " ] }, @@ -345,8 +345,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                    \n", - " טענותיהם של הנמנים עם אסכולת צמצום ההערות מגוונות יחסית:
                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                    \n", + " טענותיהם של הנמנים עם אסכולת צמצום ההערות מגוונות יחסית:
                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                    " ] }, @@ -354,12 +354,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                    • קוד צריך להסביר את עצמו. אם הוספת הערות לקוד, סימן שהקוד לא מובן דיו, וזה מצב שיפגע במפתחי הקוד בעתיד.
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • הערות שמסבירות קוד יוצרות שכפול – ושכפול בקוד זה רע.
                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                    • \n", - " הערות מצריכות תחזוקה בפני עצמן – שינוי של קוד יצריך לרוב שינוי של ההערה שמתייחסת אליו.
                                                                                                                                                                                                                      \n", - " רוב המפתחים שוכחים לתחזק את ההערות, ולעיתים נשארות הערות שלא תואמות את הקוד עצמו.
                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                      • קוד צריך להסביר את עצמו. אם הוספת הערות לקוד, סימן שהקוד לא מובן דיו, וזה מצב שיפגע במפתחי הקוד בעתיד.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • הערות שמסבירות קוד יוצרות שכפול – ושכפול בקוד זה רע.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                      • \n", + " הערות מצריכות תחזוקה בפני עצמן – שינוי של קוד יצריך לרוב שינוי של ההערה שמתייחסת אליו.
                                                                                                                                                                                                                        \n", + " רוב המפתחים שוכחים לתחזק את ההערות, ולעיתים נשארות הערות שלא תואמות את הקוד עצמו.
                                                                                                                                                                                                                        \n", " הערה שאומרת דבר לא נכון על הקוד גרועה בהרבה מחוסר הערה.\n", "
                                                                                                                                                                                                                      • \n", "
                                                                                                                                                                                                                      " @@ -369,8 +369,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                      \n", - " האמת, כרגיל, נמצאת איפשהו באמצע, ולא מתפקידה של מחברת זו להכריע בוויכוח הזה.
                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                      \n", + " האמת, כרגיל, נמצאת איפשהו באמצע, ולא מתפקידה של מחברת זו להכריע בוויכוח הזה.
                                                                                                                                                                                                                      \n", " כן נזכיר כמה כללים בסיסיים שפחות או יותר מקובלים על כולם:\n", "

                                                                                                                                                                                                                      " ] @@ -379,10 +379,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                                      • השתדלו להימנע מהערות שבבירור אין בהן צורך.
                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                      • אל תוסיפו הערות על קוד לא טוב דיו – במקום זאת, שפרו אותו.
                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                      • ודאו תמיד שההערות שלכם תואמות לקוד שכתבתם.
                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                        • השתדלו להימנע מהערות שבבירור אין בהן צורך.
                                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                                        • אל תוסיפו הערות על קוד לא טוב דיו – במקום זאת, שפרו אותו.
                                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                                        • ודאו תמיד שההערות שלכם תואמות לקוד שכתבתם.
                                                                                                                                                                                                                        • \n", "
                                                                                                                                                                                                                        " ] }, @@ -390,14 +390,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מחרוזות תיעוד" + "## מחרוזות תיעוד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                        \n", " ניזכר בפונקציה help, שמטרתה להציג לנו תיעוד בנוגע לערך מסוים בתוכנית:\n", "

                                                                                                                                                                                                                        " ] @@ -416,7 +416,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                        \n", " והיא תעבוד היטב, לשמחתנו, גם עבור סוג המשתנה str עצמו, אם כי בצורה טיפה פחות חיננית (פנו ערב כדי לקרוא את זה):\n", "

                                                                                                                                                                                                                        " ] @@ -435,7 +435,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                        \n", " אם ננסה להגדיר פונקציה משלנו, העברתה כארגומנט לפונקציה help תחזיר לנו מידע לא מועיל בעליל: \n", "

                                                                                                                                                                                                                        " ] @@ -457,8 +457,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                        \n", - " אז מה עלינו לעשות כדי להוסיף תיעוד?
                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                        \n", + " אז מה עלינו לעשות כדי להוסיף תיעוד?
                                                                                                                                                                                                                        \n", " מתברר שזה לא כזה מסובך. בסך הכול צריך להוסיף משהו שנקרא \"מחרוזת תיעוד\".\n", "

                                                                                                                                                                                                                        " ] @@ -467,14 +467,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מחרוזות תיעוד של שורה אחת" + "### מחרוזות תיעוד של שורה אחת" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                        \n", " נוסיף לפונקציה שלנו מחרוזת תיעוד של שורה אחת (One-line Docstring) בצורה הבאה:\n", "

                                                                                                                                                                                                                        " ] @@ -494,9 +494,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                        \n", - " בדוגמה האחרונה הוספנו לשורה הראשונה של גוף הפונקציה מחרוזת תיעוד (Docstring), שמתחילה ומסתיימת ב־3 מירכאות כפולות.
                                                                                                                                                                                                                        \n", - " אפשר להשתמש בסוג מירכאות אחר, אך 3 מירכאות זו המוסכמה ואנחנו נדבוק בה.
                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                        \n", + " בדוגמה האחרונה הוספנו לשורה הראשונה של גוף הפונקציה מחרוזת תיעוד (Docstring), שמתחילה ומסתיימת ב־3 מירכאות כפולות.
                                                                                                                                                                                                                        \n", + " אפשר להשתמש בסוג מירכאות אחר, אך 3 מירכאות זו המוסכמה ואנחנו נדבוק בה.
                                                                                                                                                                                                                        \n", " בין המירכאות תיארנו בקצרה מה הפונקציה עושה.\n", "

                                                                                                                                                                                                                        " ] @@ -505,7 +505,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                        \n", " כעת הפונקציה help תשתף איתנו פעולה, ונוכל לקבל את התיעוד על הפונקציה שכתבנו: \n", "

                                                                                                                                                                                                                        " ] @@ -523,7 +523,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                        \n", " נקודות חשובות בהקשר זה:\n", "

                                                                                                                                                                                                                        " ] @@ -532,12 +532,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                        • תיעוד של שורה אחת מיועד עבור מקרים ברורים במיוחד, כמו הפונקציה add שכתבנו.
                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                        • התיעוד ייכתב בשורה אחת, צמוד למירכאות, ללא שורות ריקות לפניו או אחריו.
                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                        • התיעוד ינוסח בצורת פקודה ולא כסיפור (\"החזר את התוצאה\" ולא \"הפונקציה מחזירה...\").
                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                          • תיעוד של שורה אחת מיועד עבור מקרים ברורים במיוחד, כמו הפונקציה add שכתבנו.
                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                          • התיעוד ייכתב בשורה אחת, צמוד למירכאות, ללא שורות ריקות לפניו או אחריו.
                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                          • התיעוד ינוסח בצורת פקודה ולא כסיפור (\"החזר את התוצאה\" ולא \"הפונקציה מחזירה...\").
                                                                                                                                                                                                                            \n", " כלל אצבע טוב הוא לשמור על הצורה \"עשה X, החזר Y\" (באנגלית: Do X, Return Y).
                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                          • תיעוד של שורה אחת לא יכלול את סוג הפרמטרים (a או b, במקרה שלנו). הוא יכול לכלול את הסוג של ערך ההחזרה.
                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                          • תיעוד של שורה אחת לא יכלול את סוג הפרמטרים (a או b, במקרה שלנו). הוא יכול לכלול את הסוג של ערך ההחזרה.
                                                                                                                                                                                                                          • \n", "
                                                                                                                                                                                                                          " ] }, @@ -545,14 +545,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מחרוזות תיעוד מרובות שורות" + "### מחרוזות תיעוד מרובות שורות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", " ניקח לדוגמה פונקציה שמקבלת נתיב ומחזירה את חלקיו:\n", "

                                                                                                                                                                                                                          " ] @@ -579,7 +579,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", " בתור התחלה, נוסיף לפונקציה מחרוזת תיעוד של שורה אחת שמתארת בקצרה מה תכליתה.\n", "

                                                                                                                                                                                                                          " ] @@ -607,9 +607,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", - " כדי להפוך את התיעוד למרובה שורות, נוסיף שורה ריקה אחרי השורה שמתארת בקצרה מה עושה הפונקציה.
                                                                                                                                                                                                                          \n", - " אחרי השורה הריקה נוסיף תיאור כללי יותר שמסביר מה אפשר לצפות שהפונקציה תחזיר, ומה הפרמטרים שהיא מצפה לקבל.
                                                                                                                                                                                                                          \n", + "

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

                                                                                                                                                                                                                          " ] @@ -645,8 +645,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", - " סוג כזה של תיעוד נקרא \"מחרוזת תיעוד מרובת שורות\" (Multi-line Docstring).
                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", + " סוג כזה של תיעוד נקרא \"מחרוזת תיעוד מרובת שורות\" (Multi-line Docstring).
                                                                                                                                                                                                                          \n", " נכתוב אותו כדי לעזור למי שישתמש בפונקציה להבין מה מטרתה, אילו פרמטרים היא מצפה לקבל ואילו ערכים יוחזרו ממנה.\n", "

                                                                                                                                                                                                                          " ] @@ -655,7 +655,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", " היכן נשתמש בתיעוד מרובה שורות?\n", "

                                                                                                                                                                                                                          " ] @@ -664,18 +664,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                                          • בראש הקוד – נסכם מה מטרת הקוד, ונסביר בקצרה מה הוא כולל.
                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                          • בראש מחלקה – נסכם את התנהגות המחלקה ונתעד את הפעולה __init__.
                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                          • בפונקציה או בפעולה – נסכם:\n", + "
                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                            • בראש הקוד – נסכם מה מטרת הקוד, ונסביר בקצרה מה הוא כולל.
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            • בראש מחלקה – נסכם את התנהגות המחלקה ונתעד את הפעולה __init__.
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            • בפונקציה או בפעולה – נסכם:\n", "
                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                              • מה מטרתה.
                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                              • אילו ארגומנטים היא מצפה לקבל.
                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                              • מהם ערכי ההחזרה שלה.
                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                              • אילו שגיאות היא עלולה להחזיר.
                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                              • על מה היא משפיעה חוץ מאשר על המשתנים בפונקציה עצמה (נניח – כתיבה לקובץ).
                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            • מה מטרתה.
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            • אילו ארגומנטים היא מצפה לקבל.
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            • מהם ערכי ההחזרה שלה.
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            • אילו שגיאות היא עלולה להחזיר.
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            • על מה היא משפיעה חוץ מאשר על המשתנים בפונקציה עצמה (נניח – כתיבה לקובץ).
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                          • \n", "
                                                                                                                                                                                                                          " ] }, @@ -683,7 +683,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### דוגמה לתיעוד בסיסי" + "### דוגמה לתיעוד בסיסי" ] }, { @@ -825,17 +825,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מאחורי הקלעים" + "### מאחורי הקלעים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", - " כאשר אנחנו מוסיפים לישות מסוימת מחרוזת תיעוד, נוספת לה תכונת קסם בשם __doc__ שמכילה את התיעוד שלה.
                                                                                                                                                                                                                          \n", - " התוכן של התכונה הזו הוא זה שמודפס כאשר אנחנו מפעילים את הפונקציה help.
                                                                                                                                                                                                                          \n", - " נבחן לדוגמה את תוכן התכונה __doc__ של quote.upper שסקרנו בתחילת המחברת.
                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", + " כאשר אנחנו מוסיפים לישות מסוימת מחרוזת תיעוד, נוספת לה תכונת קסם בשם __doc__ שמכילה את התיעוד שלה.
                                                                                                                                                                                                                          \n", + " התוכן של התכונה הזו הוא זה שמודפס כאשר אנחנו מפעילים את הפונקציה help.
                                                                                                                                                                                                                          \n", + " נבחן לדוגמה את תוכן התכונה __doc__ של quote.upper שסקרנו בתחילת המחברת.
                                                                                                                                                                                                                          \n", " אפשר לראות שהיא זהה לחלוטין למחרוזת שקיבלנו כשהפעלנו עליה help:\n", "

                                                                                                                                                                                                                          " ] @@ -862,9 +862,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", - " ומה קורה כשניצור פונקציה משלנו?
                                                                                                                                                                                                                          \n", - " ננסה ליצור לדוגמה את ידידתנו הוותיקה, הפונקציה add:" + "

                                                                                                                                                                                                                          \n", + " ומה קורה כשניצור פונקציה משלנו?
                                                                                                                                                                                                                          \n", + " ננסה ליצור לדוגמה את ידידתנו הוותיקה, הפונקציה add:

                                                                                                                                                                                                                          " ] }, { @@ -881,7 +881,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", " כיוון שלא הוספנו לפונקציה תיעוד, התכונה __doc__ תוגדר כ־None:\n", "

                                                                                                                                                                                                                          " ] @@ -899,7 +899,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", " נוסיף תיעוד ונראה את השינוי:\n", "

                                                                                                                                                                                                                          " ] @@ -921,7 +921,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", " מדובר בידע כללי מגניב, אבל כאנשים מתורבתים לעולם לא נבצע השמה ישירה ל־__doc__ ולא ניגש אליה ישירות.\n", "

                                                                                                                                                                                                                          " ] @@ -930,15 +930,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## התפתחות התיעוד" + "## התפתחות התיעוד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", - " עם הזמן ראתה קהילת המפתחים בפייתון כי טוב, וחשבה על דרך נעימה ונוחה יותר לקרוא תיעוד ולכתוב אותו.
                                                                                                                                                                                                                          \n", + "

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

                                                                                                                                                                                                                          " ] @@ -947,16 +947,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שפת סימון לתיעוד" + "### שפת סימון לתיעוד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                          \n", + " תחילה, קהילת פייתון חיפשה דרך לכתוב משהו שהוא יותר מ\"סתם מלל\".
                                                                                                                                                                                                                          \n", + " לעיתים קרובות נרצה להדגיש דברים בתיעוד, לתת קישור למקור חיצוני, להוסיף כותרת או לציין פריטים ברשימה.
                                                                                                                                                                                                                          \n", " שפת הסימון המוכרת HTML שמשומשת תדיר ליצירת דפי אינטרנט הייתה כבר קיימת, אבל בפייתון חיפשו שפה נקייה יותר שנוח לעין לסרוק.\n", "

                                                                                                                                                                                                                          " ] @@ -965,9 +965,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", - " לצורך כך פותחה בשנת 2002 שפת הסימון reStructuredText (או בקיצור – reST), שמאפשרת להפוך מלל שאנחנו כותבים לטקסט מסוגנן.
                                                                                                                                                                                                                          \n", - " מטרתה העיקרית של reST הייתה לאפשר הכנסת טקסט מסוגנן לתיעוד טכני בפייתון, ופייתון אכן אימצה אותה רשמית לצורך זה.
                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", + " לצורך כך פותחה בשנת 2002 שפת הסימון reStructuredText (או בקיצור – reST), שמאפשרת להפוך מלל שאנחנו כותבים לטקסט מסוגנן.
                                                                                                                                                                                                                          \n", + " מטרתה העיקרית של reST הייתה לאפשר הכנסת טקסט מסוגנן לתיעוד טכני בפייתון, ופייתון אכן אימצה אותה רשמית לצורך זה.
                                                                                                                                                                                                                          \n", " היא מאפשרת לכתוב לא רק תיעוד בקוד, אלא גם תיעוד מילולי כללי על מטרותיו של הפרויקט ועל דרך השימוש בו (כמו ספר תיעוד קטן).\n", "

                                                                                                                                                                                                                          " ] @@ -976,7 +976,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", " קצרה היריעה מלכלול פה הדרכה על שימוש ב־reStructuredText, אבל אנחנו ממליצים בחום לקרוא את המדריך המקוצר שנמצא כאן.\n", "

                                                                                                                                                                                                                          " ] @@ -985,7 +985,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", " מלל שנכתב ב־reStructuredText ייראה כך עבור מי שכתב אותו:\n", "

                                                                                                                                                                                                                          " ] @@ -994,7 +994,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                          \n",
                                                                                                                                                                                                                          +    "
                                                                                                                                                                                                                          \n",
                                                                                                                                                                                                                               "אפשר לראות בטקסט *הזה* טעימה קטנה מהיכולות של **reStructuredText**.\n",
                                                                                                                                                                                                                               "חלק מהאפשרויות הפחות מתוחכמות שלו כוללות:\n",
                                                                                                                                                                                                                               "\n",
                                                                                                                                                                                                                          @@ -1008,7 +1008,7 @@
                                                                                                                                                                                                                              "cell_type": "markdown",
                                                                                                                                                                                                                              "metadata": {},
                                                                                                                                                                                                                              "source": [
                                                                                                                                                                                                                          -    "

                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", " וייראה כך בתוצאה הסופית:\n", "

                                                                                                                                                                                                                          " ] @@ -1017,15 +1017,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                          \n", - "אפשר לראות בטקסט הזה טעימה קטנה מהיכולות של reStructuredText.
                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                          \n", + "אפשר לראות בטקסט הזה טעימה קטנה מהיכולות של reStructuredText.
                                                                                                                                                                                                                          \n", "חלק מהאפשרויות הפחות מתוחכמות שלו כוללות:\n", "

                                                                                                                                                                                                                          \n", - "\n", - "
                                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                                          • הדגשה, מלל מוטה וקו תחתון.
                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                          • רשימות.
                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                          • סימון של קוד, כמו print(\"Hello World\").
                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                            • הדגשה, מלל מוטה וקו תחתון.
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            • רשימות.
                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                            • סימון של קוד, כמו print(\"Hello World\").
                                                                                                                                                                                                                            • \n", "
                                                                                                                                                                                                                            " ] }, @@ -1033,17 +1032,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מנוע ליצירת קובצי תיעוד" + "### מנוע ליצירת קובצי תיעוד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                            \n", - " בשנת 2008 פותח בקהילת הפייתון כלי בשם Sphinx.
                                                                                                                                                                                                                            \n", - " מטרתו לסרוק את התיעוד של פרויקט הקוד שלכם, וליצור ממנו מסמך תיעוד שנעים לקרוא ב־PDF או ב־HTML.
                                                                                                                                                                                                                            \n", - " Sphinx, כמובן, תומך במסמכים שנכתבו ב־reStructuredText, והוא הפך במהרה לפופולרי מאוד.
                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                            \n", + " בשנת 2008 פותח בקהילת הפייתון כלי בשם Sphinx.
                                                                                                                                                                                                                            \n", + " מטרתו לסרוק את התיעוד של פרויקט הקוד שלכם, וליצור ממנו מסמך תיעוד שנעים לקרוא ב־PDF או ב־HTML.
                                                                                                                                                                                                                            \n", + " Sphinx, כמובן, תומך במסמכים שנכתבו ב־reStructuredText, והוא הפך במהרה לפופולרי מאוד.
                                                                                                                                                                                                                            \n", " אתר התיעוד הנוכחי של פייתון נוצר באמצעותו.\n", "

                                                                                                                                                                                                                            " ] @@ -1052,8 +1051,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                            \n", - " בהמשך הקורס נכתוב פרויקטים, ובהם נוכל להשתמש ב־Sphinx ליצירת מסמכים שיעזרו למשתמשים בפרויקט להתמצא בו.
                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                            \n", + " בהמשך הקורס נכתוב פרויקטים, ובהם נוכל להשתמש ב־Sphinx ליצירת מסמכים שיעזרו למשתמשים בפרויקט להתמצא בו.
                                                                                                                                                                                                                            \n", " משתמשים בולטים ב־Sphinx כוללים, בין השאר, את:\n", "

                                                                                                                                                                                                                            " ] @@ -1062,10 +1061,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                            • אתר התיעוד הרשמי של פייתון.
                                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                                            • המודול הפופולרי לניהול ולניתוח מידע pandas.
                                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                                            • המודול הפופולרי לעיבוד דפי אינטרנט BeautifulSoup.
                                                                                                                                                                                                                            • \n", + "" ] }, @@ -1073,15 +1072,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אתר לאחסון קובצי תיעוד" + "### אתר לאחסון קובצי תיעוד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                              \n", - " בשנת 2010 פותח אתר בשם Read the Docs, שמטרתו לרכז תיעוד לפרויקטים שנכתבו בפייתון.
                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                              \n", + " בשנת 2010 פותח אתר בשם Read the Docs, שמטרתו לרכז תיעוד לפרויקטים שנכתבו בפייתון.
                                                                                                                                                                                                                              \n", " האתר מאפשר להעלות לרשת בקלות תיעודים שנוצרו בעזרת Sphinx ולהנגיש אותם לקהל הרחב.\n", "

                                                                                                                                                                                                                              " ] @@ -1090,7 +1089,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                              \n", " משתמשים בולטים ב־Read the Docs כוללים, בין השאר, את:\n", "

                                                                                                                                                                                                                              " ] @@ -1099,11 +1098,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                              • המודול הפופולרי לעיבוד ולשליחה של בקשות אינטרנט requests.
                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                              • מנהל החבילות של פייתון pip.
                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                              • פלטפורמת המחברות Jupyter Notebooks.
                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                              • המודול הנפוץ ביותר לעבודה עם כלים מתמטיים NumPy.
                                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                • המודול הפופולרי לעיבוד ולשליחה של בקשות אינטרנט requests.
                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                • מנהל החבילות של פייתון pip.
                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                • פלטפורמת המחברות Jupyter Notebooks.
                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                • המודול הנפוץ ביותר לעבודה עם כלים מתמטיים NumPy.
                                                                                                                                                                                                                                • \n", "
                                                                                                                                                                                                                                " ] }, @@ -1111,16 +1110,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## סגנונות תיעוד" + "## סגנונות תיעוד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                \n", - " במשך שנים חיפשו מפתחי פייתון דרך אחידה יותר לכתוב מחרוזות תיעוד.
                                                                                                                                                                                                                                \n", - " בכלל, מתכנתים אוהבים שלדברים יש צורה מוסכמת ומוגדרת מראש.
                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                \n", + " במשך שנים חיפשו מפתחי פייתון דרך אחידה יותר לכתוב מחרוזות תיעוד.
                                                                                                                                                                                                                                \n", + " בכלל, מתכנתים אוהבים שלדברים יש צורה מוסכמת ומוגדרת מראש.
                                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                                " ] }, @@ -1128,8 +1127,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                                                                " ] @@ -1138,10 +1137,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                • אפשר לבנות מנוע חיפוש עבור תיעודי מודולים.
                                                                                                                                                                                                                                • \n", - "
                                                                                                                                                                                                                                • אפשר להפעיל כלים כמו Sphinx, שיסרקו את המודול ויצרו מהתיעוד שיש בו אתר תיעוד – באופן אוטומטי!
                                                                                                                                                                                                                                • \n", - "
                                                                                                                                                                                                                                • אפשר להפסיק לבזבז זמן מיותר בוויכוחים אינטרנטיים על איך יפה יותר לכתוב 😜
                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                  • אפשר לבנות מנוע חיפוש עבור תיעודי מודולים.
                                                                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                                                                  • אפשר להפעיל כלים כמו Sphinx, שיסרקו את המודול ויצרו מהתיעוד שיש בו אתר תיעוד – באופן אוטומטי!
                                                                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                                                                  • אפשר להפסיק לבזבז זמן מיותר בוויכוחים אינטרנטיים על איך יפה יותר לכתוב 😜
                                                                                                                                                                                                                                  • \n", "
                                                                                                                                                                                                                                  " ] }, @@ -1149,8 +1148,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                  \n", - " מובן שכמפתחים לא באמת הצלחנו לוותר על הוויכוחים האינטרנטיים, ולכן הנקודה האחרונה לא תקפה.
                                                                                                                                                                                                                                  \n", + "

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

                                                                                                                                                                                                                                  " ] @@ -1159,10 +1158,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                  \n", - " נבחן את ההבדלים בין הסגנונות, ונשאיר לכם לבחור באיזה סגנון תעדיפו להשתמש.
                                                                                                                                                                                                                                  \n", - " לפניכם קוד נחמד וקצרצר שאנחנו הולכים לתעד בשארית המחברת, בכל אחד מהסגנונות הללו.
                                                                                                                                                                                                                                  \n", - " בקוד נגדיר מחלקה של סניף דואר, שתאפשר למשתמשים בה לשלוח הודעות זה לזה.
                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                  \n", + " נבחן את ההבדלים בין הסגנונות, ונשאיר לכם לבחור באיזה סגנון תעדיפו להשתמש.
                                                                                                                                                                                                                                  \n", + " לפניכם קוד נחמד וקצרצר שאנחנו הולכים לתעד בשארית המחברת, בכל אחד מהסגנונות הללו.
                                                                                                                                                                                                                                  \n", + " בקוד נגדיר מחלקה של סניף דואר, שתאפשר למשתמשים בה לשלוח הודעות זה לזה.
                                                                                                                                                                                                                                  \n", " ללא תיעוד כלל, המחלקה תיראה כך:\n", "

                                                                                                                                                                                                                                  " ] @@ -1197,7 +1196,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                  \n", " וכך תיראה דוגמה לפונקציה מתועדת שמדגימה כיצד המחלקה עובדת:\n", "

                                                                                                                                                                                                                                  " ] @@ -1228,8 +1227,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                  \n", - " מבולבלים? איזה מזל שאנחנו הולכים לתעד את המחלקה הזו.
                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                  \n", + " מבולבלים? איזה מזל שאנחנו הולכים לתעד את המחלקה הזו.
                                                                                                                                                                                                                                  \n", " קדימה, לעבודה.\n", "

                                                                                                                                                                                                                                  " ] @@ -1238,15 +1237,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Google Docstrings" + "### Google Docstrings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                  \n", - " גוגל מתחזקים זה שנים רבות מסמך מוסכמות ארוך משלהם שמפרט את סגנון הכתיבה הפנימי הרצוי בפייתון בחברה.
                                                                                                                                                                                                                                  \n", + "

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

                                                                                                                                                                                                                                  " ] @@ -1255,8 +1254,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                  \n", - " תוכלו לראות דוגמה לאופן שבו אמורות להיראות מחרוזות התיעוד של Google כאן.
                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                  \n", + " תוכלו לראות דוגמה לאופן שבו אמורות להיראות מחרוזות התיעוד של Google כאן.
                                                                                                                                                                                                                                  \n", " נראה דוגמה לתיעוד המחלקה PostOffice ופעולותיה בשיטה של גוגל, ומייד אחר כך ננתח מה ראינו.\n", "

                                                                                                                                                                                                                                  " ] @@ -1328,7 +1327,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                  \n", " לפי מסמך הסגנון של גוגל, לפעולה צריכים להיות 3 חלקי תיעוד:\n", "

                                                                                                                                                                                                                                  " ] @@ -1337,11 +1336,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                  • Args: – רשימת הארגומנטים שהיא הולכת לקבל, סוגם והסבר קצר על כל אחד מהם.
                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                  • Returns: – הערך שהפונקציה מחזירה והסוג שלו. במקרה של generator החלק יקרא Yields : במקום.
                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                  • Raises: – השגיאות שהפונקציה עלולה לזרוק ובאילו מקרים זה עלול לקרות.
                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                  • אפשר להוסיף גם חלקים משלנו, כמו Examples: שיראה כיצד הפונקציה פועלת. מומלץ לא להגזים עם זה.
                                                                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                    • Args: – רשימת הארגומנטים שהיא הולכת לקבל, סוגם והסבר קצר על כל אחד מהם.
                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                    • Returns: – הערך שהפונקציה מחזירה והסוג שלו. במקרה של generator החלק יקרא Yields : במקום.
                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                    • Raises: – השגיאות שהפונקציה עלולה לזרוק ובאילו מקרים זה עלול לקרות.
                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                    • אפשר להוסיף גם חלקים משלנו, כמו Examples: שיראה כיצד הפונקציה פועלת. מומלץ לא להגזים עם זה.
                                                                                                                                                                                                                                    • \n", "
                                                                                                                                                                                                                                    " ] }, @@ -1349,7 +1348,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                    \n", " יש לתעד גם מחלקות כמובן:\n", "

                                                                                                                                                                                                                                    " ] @@ -1358,9 +1357,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                    • Attributes: – התכונות של המופעים שייווצרו על ידי המחלקה.
                                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                                    • כל חלקי התיעוד ששייכים לפעולה רגילה, בהתייחס לפעולת ה־__init__ של המחלקה.
                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                      • Attributes: – התכונות של המופעים שייווצרו על ידי המחלקה.
                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                      • כל חלקי התיעוד ששייכים לפעולה רגילה, בהתייחס לפעולת ה־__init__ של המחלקה.
                                                                                                                                                                                                                                      • \n", "
                                                                                                                                                                                                                                      " ] }, @@ -1368,16 +1367,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### NumPy Docstrings" + "### NumPy Docstrings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                      \n", - " NumPy היא המודול המוביל בפייתון בכל הקשור לכלים מתמטיים.
                                                                                                                                                                                                                                      \n", - " שיטת התיעוד שלו די דומה לזו של גוגל, ומתועדת כאן.
                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                      \n", + " NumPy היא המודול המוביל בפייתון בכל הקשור לכלים מתמטיים.
                                                                                                                                                                                                                                      \n", + " שיטת התיעוד שלו די דומה לזו של גוגל, ומתועדת כאן.
                                                                                                                                                                                                                                      \n", " היא מעט קריאה יותר לעין אנושית, אך משתמשת ביותר שטח לאורך הדף:\n", "

                                                                                                                                                                                                                                      " ] @@ -1464,17 +1463,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Sphinx" + "### Sphinx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                      \n", - " מעבר להיותו כלי ליצירת מסמכי תיעוד, ב־Sphinx קיימת גם הגדרה לצורה שבה לדעתם מחרוזות תיעוד אמורות להיראות.
                                                                                                                                                                                                                                      \n", - " בלי לחץ – Sphinx ידע להמיר את התיעוד שלכם למסמך גם אם תשתמשו ב־Google Docstrings או ב־NumPy Docstrings.
                                                                                                                                                                                                                                      \n", - " סגנון זה תופס את השטח המזערי ביותר לאורך הדף, אך הוא מעט קשה יותר לקריאה.
                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                      \n", + " מעבר להיותו כלי ליצירת מסמכי תיעוד, ב־Sphinx קיימת גם הגדרה לצורה שבה לדעתם מחרוזות תיעוד אמורות להיראות.
                                                                                                                                                                                                                                      \n", + " בלי לחץ – Sphinx ידע להמיר את התיעוד שלכם למסמך גם אם תשתמשו ב־Google Docstrings או ב־NumPy Docstrings.
                                                                                                                                                                                                                                      \n", + " סגנון זה תופס את השטח המזערי ביותר לאורך הדף, אך הוא מעט קשה יותר לקריאה.
                                                                                                                                                                                                                                      \n", " מחרוזות התיעוד ש־Sphinx מגדירים נראות כך:\n", "

                                                                                                                                                                                                                                      " ] @@ -1528,16 +1527,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## לסיכום" + "## לסיכום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                                                                      " ] @@ -1546,53 +1545,53 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      הערה (Comment)
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      \n", - " קטע מילולי המשובץ בקוד ומתייחס אליו, ומטרתו להסביר, לבאר או להפנות את תשומת הלב של מתכנתים אחרים לנקודה מסוימת.
                                                                                                                                                                                                                                      \n", - " ההערה יכולה להופיע בסוף שורת קוד, בשורה עצמאית או כרצף של כמה שורות זו אחרי זו.
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      הערה (Comment)
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      \n", + " קטע מילולי המשובץ בקוד ומתייחס אליו, ומטרתו להסביר, לבאר או להפנות את תשומת הלב של מתכנתים אחרים לנקודה מסוימת.
                                                                                                                                                                                                                                      \n", + " ההערה יכולה להופיע בסוף שורת קוד, בשורה עצמאית או כרצף של כמה שורות זו אחרי זו.
                                                                                                                                                                                                                                      \n", " כתיבת הערות הסבר עבור קוד לא מובן נחשבת בעיני רבים לרעיון רע, ולכן במקרה כזה עדיף פשוט לשפר את הקוד.\n", "
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      תיעוד (Documentation)
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      \n", - " אוסף הנחיות עבור משתמשי הקוד.
                                                                                                                                                                                                                                      \n", - " התיעוד יעזור למשתמש חיצוני להבין כיצד מתנהגת כל ישות בקוד, מה היא מצפה לקבל ומה היא עשויה להחזיר.
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      תיעוד (Documentation)
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      \n", + " אוסף הנחיות עבור משתמשי הקוד.
                                                                                                                                                                                                                                      \n", + " התיעוד יעזור למשתמש חיצוני להבין כיצד מתנהגת כל ישות בקוד, מה היא מצפה לקבל ומה היא עשויה להחזיר.
                                                                                                                                                                                                                                      \n", " ראוי שכל ישות בקוד תהיה מתועדת היטב.\n", "
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      מחרוזת תיעוד (Docstring)
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      \n", - " מחרוזת המוצבת בשורה הראשונה של פונקציה, פעולה, מחלקה או מודול ומטרתה לתאר את התפקיד של אותה ישות.
                                                                                                                                                                                                                                      \n", - " היא יכולה להיכתב בשורה אחת או בשורות רבות, והיא מתארת את תכלית הקוד ואת דרכי השימוש בו.
                                                                                                                                                                                                                                      \n", - " בניגוד להערה רגילה, מחרוזות תיעוד מתארות ממש מה הפונקציה עושה, ולא למה.
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      מחרוזת תיעוד (Docstring)
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      \n", + " מחרוזת המוצבת בשורה הראשונה של פונקציה, פעולה, מחלקה או מודול ומטרתה לתאר את התפקיד של אותה ישות.
                                                                                                                                                                                                                                      \n", + " היא יכולה להיכתב בשורה אחת או בשורות רבות, והיא מתארת את תכלית הקוד ואת דרכי השימוש בו.
                                                                                                                                                                                                                                      \n", + " בניגוד להערה רגילה, מחרוזות תיעוד מתארות ממש מה הפונקציה עושה, ולא למה.
                                                                                                                                                                                                                                      \n", " לעיתים מחרוזות התיעוד יכללו דוגמאות של ממש לשימוש בקוד.\n", "
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      reStructuredText
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      \n", - " שפת סימון שנוצרה ב־2002 במטרה להקל על כותבי תיעוד ומסמכים טכניים.
                                                                                                                                                                                                                                      \n", - " מטרת השפה היא לייצר תסדיר שנוח לקרוא בעין אנושית, ושיהיה אפשר ליצור ממנו אוטומטית מסמכים מסוגננים.
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      reStructuredText
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      \n", + " שפת סימון שנוצרה ב־2002 במטרה להקל על כותבי תיעוד ומסמכים טכניים.
                                                                                                                                                                                                                                      \n", + " מטרת השפה היא לייצר תסדיר שנוח לקרוא בעין אנושית, ושיהיה אפשר ליצור ממנו אוטומטית מסמכים מסוגננים.
                                                                                                                                                                                                                                      \n", " שפת הסימון הזו תוקננה כשפת הסימון הרשמית שבה כותבים מסמכי תיעוד בפייתון.\n", "
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      Sphinx
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      \n", - " כלי שמטרתו לעזור לייצר מסמכי דוקומנטציה.
                                                                                                                                                                                                                                      \n", - " כיום הוא הכלי הפופולרי ביותר לצורך הזה בעולם הפייתון, בפער ניכר מכלים דומים.
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      Sphinx
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      \n", + " כלי שמטרתו לעזור לייצר מסמכי דוקומנטציה.
                                                                                                                                                                                                                                      \n", + " כיום הוא הכלי הפופולרי ביותר לצורך הזה בעולם הפייתון, בפער ניכר מכלים דומים.
                                                                                                                                                                                                                                      \n", " Sphinx גם יצרו סגנון תיעוד פופולרי (ע\"ע \"סגנון תיעוד\").\n", "
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      Read the Docs
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      \n", - " אתר המאפשר למשתמשים להעלות אליו מסמכי תיעוד.
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      סגנון תיעוד
                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                      \n", - " ידוע בשמות: Documentation Style, Documentation Format, Docstring Format, Docstring Style.
                                                                                                                                                                                                                                      \n", - " צורה מקובלת לכתיבת תיעוד ולפירוט התכונות של פונקציה, פעולה, מחלקה או מודול.
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      Read the Docs
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      \n", + " אתר המאפשר למשתמשים להעלות אליו מסמכי תיעוד.
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      סגנון תיעוד
                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                      \n", + " ידוע בשמות: Documentation Style, Documentation Format, Docstring Format, Docstring Style.
                                                                                                                                                                                                                                      \n", + " צורה מקובלת לכתיבת תיעוד ולפירוט התכונות של פונקציה, פעולה, מחלקה או מודול.
                                                                                                                                                                                                                                      \n", " שלושת הסגנונות הנפוצים ביותר הם של Sphinx, של Google ושל NumPy.\n", "
                                                                                                                                                                                                                                      \n", "
                                                                                                                                                                                                                                      " @@ -1602,21 +1601,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### צָב שָׁלוּחַ" + "### צָב שָׁלוּחַ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                      \n", " ממשו שתי פעולות נוספות למחלקת PostOffice:\n", "

                                                                                                                                                                                                                                      " ] @@ -1625,15 +1624,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                                                      • הפעולה read_inbox תקבל כפרמטרים את שם המשתמש ואת מספר ההודעות שהוא מעוניין לקרוא (נקרא לה $N$).
                                                                                                                                                                                                                                        \n", - " היא תחזיר את $N$ ההודעות הראשונות בתיבת הדואר הנכנס של המשתמש.
                                                                                                                                                                                                                                        \n", - " אם לא הועבר מספר הודעות, החזירו את כל ההודעות בתיבת הדואר הנכנס של המשתמש.
                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                        • הפעולה read_inbox תקבל כפרמטרים את שם המשתמש ואת מספר ההודעות שהוא מעוניין לקרוא (נקרא לה $N$).
                                                                                                                                                                                                                                          \n", + " היא תחזיר את $N$ ההודעות הראשונות בתיבת הדואר הנכנס של המשתמש.
                                                                                                                                                                                                                                          \n", + " אם לא הועבר מספר הודעות, החזירו את כל ההודעות בתיבת הדואר הנכנס של המשתמש.
                                                                                                                                                                                                                                          \n", " ההודעות יסומנו כנקראו ולא יוחזרו למשתמש בקריאה הבאה.\n", "
                                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                                        • הפעולה search_inbox תקבל כפרמטרים שם משתמש ומחרוזת.
                                                                                                                                                                                                                                          \n", - " היא תחזיר כרשימה את כל ההודעות שמכילות את המחרוזת, בכותרת שלהן או בגופן.
                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                                                        • הפעולה search_inbox תקבל כפרמטרים שם משתמש ומחרוזת.
                                                                                                                                                                                                                                          \n", + " היא תחזיר כרשימה את כל ההודעות שמכילות את המחרוזת, בכותרת שלהן או בגופן.
                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                        • \n", "
                                                                                                                                                                                                                                        " ] }, @@ -1641,9 +1640,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                        \n", - " חלק ממטרת התרגיל היא תרגול היכולת שלכם להיכנס לקוד קיים.
                                                                                                                                                                                                                                        \n", - " נסו לשנות את הקוד הקיים במידה, והסבירו את השינויים שלכם אם לדעתכם עולה צורך כזה.
                                                                                                                                                                                                                                        \n", + "

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

                                                                                                                                                                                                                                        " ] @@ -1652,15 +1651,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אורטל קומבט – חלק 1" + "### אורטל קומבט – חלק 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                        \n", - " ממשו מחלקה בשם Player שיודעת לקבל שם שחקן, וליצור שחקן חדש.
                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                        \n", + " ממשו מחלקה בשם Player שיודעת לקבל שם שחקן, וליצור שחקן חדש.
                                                                                                                                                                                                                                        \n", " לכל שחקן יש לפחות את התכונות הבאות:\n", "

                                                                                                                                                                                                                                        " ] @@ -1669,17 +1668,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                        • name – שם השחקן.
                                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                                        • hp – חיים (ערך מספרי שלם) שמאותחלים לערך המספרי 100.
                                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                                        • exp – נקודות ניסיון (ערך מספרי שלם) שמאותחלות לערך המספרי 0.
                                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                                        • level – רמת השחקן (ערך מספרי שלם) שמאותחלת לערך המספרי 1. לצורך תרגיל זה רמת השחקן תהיה תמיד 1.
                                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                                        • nemeses – רשימת אויבים.
                                                                                                                                                                                                                                        • \n", - "
                                                                                                                                                                                                                                        • פעולת \"attack\" – שמקבלת מופע של שחקן, ומורידה לו בין $L \\cdot 5$ ל־$L \\cdot 20$ חיים (הגרילו), כאשר $L$ מייצגת את רמת השחקן המתקיף.
                                                                                                                                                                                                                                          \n", - " אם הפעולה לא קיבלה מופע של שחקן אחר, היא מתקיפה את האויב האחרון שנוסף לרשימת nemeses של השחקן.
                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                                          • name – שם השחקן.
                                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                                          • hp – חיים (ערך מספרי שלם) שמאותחלים לערך המספרי 100.
                                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                                          • exp – נקודות ניסיון (ערך מספרי שלם) שמאותחלות לערך המספרי 0.
                                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                                          • level – רמת השחקן (ערך מספרי שלם) שמאותחלת לערך המספרי 1. לצורך תרגיל זה רמת השחקן תהיה תמיד 1.
                                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                                          • nemeses – רשימת אויבים.
                                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                                          • פעולת \"attack\" – שמקבלת מופע של שחקן, ומורידה לו בין $L \\cdot 5$ ל־$L \\cdot 20$ חיים (הגרילו), כאשר $L$ מייצגת את רמת השחקן המתקיף.
                                                                                                                                                                                                                                            \n", + " אם הפעולה לא קיבלה מופע של שחקן אחר, היא מתקיפה את האויב האחרון שנוסף לרשימת nemeses של השחקן.
                                                                                                                                                                                                                                            \n", " אם הפעולה לא קיבלה מופע של שחקן אחר ואין לשחקן אויבים, הפעולה תקפיץ IndexError.\n", "
                                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                                          • פעולת \"revive\" – מחזירה לשחקן את החיים לערך המרבי שלהם.
                                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                                          • פעולת \"revive\" – מחזירה לשחקן את החיים לערך המרבי שלהם.
                                                                                                                                                                                                                                          • \n", "
                                                                                                                                                                                                                                          " ] }, @@ -1687,8 +1686,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                          \n", - " אם בעקבות פעולת התקפה שחקן מסוים הגיע ל־0 חיים או פחות מכך, הוא נחשב למת ברובו.
                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                          \n", + " אם בעקבות פעולת התקפה שחקן מסוים הגיע ל־0 חיים או פחות מכך, הוא נחשב למת ברובו.
                                                                                                                                                                                                                                          \n", " דאגו שהשחקן יעבור החייאה וצרפו את מי שהתקיף אותו לרשימת ה־nemeses של השחקן.\n", "

                                                                                                                                                                                                                                          " ] @@ -1697,7 +1696,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                          \n", " תעדו את התוכנית שלכם היטב.\n", "

                                                                                                                                                                                                                                          " ] diff --git a/week7/3_Classes_Part_2.ipynb b/week7/3_Classes_Part_2.ipynb index 0f12784..964d4d8 100644 --- a/week7/3_Classes_Part_2.ipynb +++ b/week7/3_Classes_Part_2.ipynb @@ -4,29 +4,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# מחלקות – חלק 2" + "# מחלקות – חלק 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## רענון" + "## רענון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                          \n", - " בשיעור הקודם בנושא מחלקות למדנו שמחלקה היא תבנית (\"שבלונה\") המאגדת תכונות ופעולות של ישות כלשהי.
                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                          \n", + " בשיעור הקודם בנושא מחלקות למדנו שמחלקה היא תבנית (\"שבלונה\") המאגדת תכונות ופעולות של ישות כלשהי.
                                                                                                                                                                                                                                          \n", " למדנו גם מה הוא מופע – התוצר של השימוש באותה שבלונה, באותה מחלקה, כדי ליצור פריט לפי השבלונה הזו.\n", "

                                                                                                                                                                                                                                          " ] @@ -35,13 +35,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                          \n", " לדוגמה, מחלקת \"קבוצת ווטסאפ\" יכולה להיות מוגדרת כך:\n", "

                                                                                                                                                                                                                                          \n", - "\n", - "
                                                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                                                          • תכונות: כותרת, משתמשים ורשימת הודעות.
                                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                                          • פעולות: שליחת הודעה, הצטרפות לקבוצה או יציאה מהקבוצה.
                                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                            • תכונות: כותרת, משתמשים ורשימת הודעות.
                                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                                            • פעולות: שליחת הודעה, הצטרפות לקבוצה או יציאה מהקבוצה.
                                                                                                                                                                                                                                            • \n", "
                                                                                                                                                                                                                                            " ] }, @@ -49,8 +48,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                            \n", - " קריאה למחלקת \"קבוצת ווטסאפ\" תיצור מופע חדש של קבוצת ווטסאפ, שבו יש את התכונות והפעולות שהוגדרו במחלקה.
                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                            \n", + " קריאה למחלקת \"קבוצת ווטסאפ\" תיצור מופע חדש של קבוצת ווטסאפ, שבו יש את התכונות והפעולות שהוגדרו במחלקה.
                                                                                                                                                                                                                                            \n", " קריאה למחלקה 5 פעמים תיצור 5 קבוצות ווטסאפ שונות, שלכל אחת מהן התכונות והפעולות שהוגדרו במחלקה.\n", "

                                                                                                                                                                                                                                            " ] @@ -59,15 +58,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## משתני מחלקה" + "## משתני מחלקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                            \n", - " במסעדת \"זלוברי\" ליד כל רכיב בתפריט רשומים ערכיו התזונתיים ל־100 גרם.
                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                            \n", + " במסעדת \"זלוברי\" ליד כל רכיב בתפריט רשומים ערכיו התזונתיים ל־100 גרם.
                                                                                                                                                                                                                                            \n", " מנהלת המסעדה קיפף אוסין שכרה את שירותינו וביקשה מאיתנו לכתוב מחלקה המייצגת רכיב במנה.\n", "

                                                                                                                                                                                                                                            " ] @@ -76,13 +75,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                            \n", " לכל רכיב יש:\n", "

                                                                                                                                                                                                                                            \n", - "\n", - "
                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                            • תכונות: שם, משקל פחמימות, משקל חלבונים ומשקל שומנים (בגרמים).
                                                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                                                            • פעולות: חישוב מספר הקלוריות ברכיב.
                                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                              • תכונות: שם, משקל פחמימות, משקל חלבונים ומשקל שומנים (בגרמים).
                                                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                                                              • פעולות: חישוב מספר הקלוריות ברכיב.
                                                                                                                                                                                                                                              • \n", "
                                                                                                                                                                                                                                              " ] }, @@ -90,7 +88,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                              \n", " להזכירכם, דרך להערכה מהירה של מספר הקלוריות שיש ברכיב, היא זו:\n", "

                                                                                                                                                                                                                                              " ] @@ -99,11 +97,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                              1. מצאו את משקל הפחמימות ברכיב והכפילו ב־4.
                                                                                                                                                                                                                                              2. \n", - "
                                                                                                                                                                                                                                              3. מצאו את משקל השומן ברכיב והכפילו ב־9.
                                                                                                                                                                                                                                              4. \n", - "
                                                                                                                                                                                                                                              5. מצאו את משקל החלבון ברכיב והכפילו ב־4.
                                                                                                                                                                                                                                              6. \n", - "
                                                                                                                                                                                                                                              7. מספר הקלוריות ברכיב היא חיבור הערכים שקיבלתם בשלבים 1–3.
                                                                                                                                                                                                                                              8. \n", + "
                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                1. מצאו את משקל הפחמימות ברכיב והכפילו ב־4.
                                                                                                                                                                                                                                                2. \n", + "
                                                                                                                                                                                                                                                3. מצאו את משקל השומן ברכיב והכפילו ב־9.
                                                                                                                                                                                                                                                4. \n", + "
                                                                                                                                                                                                                                                5. מצאו את משקל החלבון ברכיב והכפילו ב־4.
                                                                                                                                                                                                                                                6. \n", + "
                                                                                                                                                                                                                                                7. מספר הקלוריות ברכיב היא חיבור הערכים שקיבלתם בשלבים 1–3.
                                                                                                                                                                                                                                                8. \n", "
                                                                                                                                                                                                                                                " ] }, @@ -111,21 +109,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                \n", - "

                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", " נסו לממש בעצמכם את מחלקת Ingredient לפי התכונות והפעולות שתוארו למעלה.\n", "

                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                \n", - "

                                                                                                                                                                                                                                                \n", - " חשוב!
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + "חשוב!
                                                                                                                                                                                                                                                \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                \n", "
                                                                                                                                                                                                                                                " ] }, @@ -133,7 +131,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", " מימוש של המחלקה ייראה כך:\n", "

                                                                                                                                                                                                                                                " ] @@ -163,7 +161,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", " ושימוש בה ייראה כך:\n", "

                                                                                                                                                                                                                                                " ] @@ -182,8 +180,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " אוסין מגדירה רכיב כ\"בריא\" אם מספר הקלוריות שבו קטן מ־100 עבור 100 גרם.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " אוסין מגדירה רכיב כ\"בריא\" אם מספר הקלוריות שבו קטן מ־100 עבור 100 גרם.
                                                                                                                                                                                                                                                \n", " נממש את הפעולה is_healthy שמחזירה True או False:\n", "

                                                                                                                                                                                                                                                " ] @@ -216,9 +214,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " שימוש במספרים קבועים בקוד שלנו נחשב לרוב ללא מנומס, ותמיד נעדיף לתת להם שם.
                                                                                                                                                                                                                                                \n", - " במקרה הזה, יש סיכוי שמסעדת \"זלוברי\" תשנה את הגדרתה עבור רכיבים דיאטטיים בעתיד, ועדיף שהמספר \"100\" לא יפוזר לאורך הקוד.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " שימוש במספרים קבועים בקוד שלנו נחשב לרוב ללא מנומס, ותמיד נעדיף לתת להם שם.
                                                                                                                                                                                                                                                \n", + " במקרה הזה, יש סיכוי שמסעדת \"זלוברי\" תשנה את הגדרתה עבור רכיבים דיאטטיים בעתיד, ועדיף שהמספר \"100\" לא יפוזר לאורך הקוד.
                                                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                                                " ] }, @@ -226,8 +224,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " פתרון אפשרי הוא להגדיר משתנה בראש הקוד, שייצג את מספר הקלוריות המרבי למאכל דיאטטי.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " פתרון אפשרי הוא להגדיר משתנה בראש הקוד, שייצג את מספר הקלוריות המרבי למאכל דיאטטי.
                                                                                                                                                                                                                                                \n", " שימו לב שנהוג לכתוב את שמם של משתנים קבועים, אלו שערכיהם ישארו קבועים לכל אורך התוכנית, באותיות גדולות:\n", "

                                                                                                                                                                                                                                                " ] @@ -263,8 +261,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " הפתרון הזה עובד, אך מפספס עיקרון חשוב שהצגנו במחברת הקודמת שעסקה במחלקות.
                                                                                                                                                                                                                                                \n", + "

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

                                                                                                                                                                                                                                                " ] @@ -273,7 +271,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", " אפשרות נוספת היא להגדיר את הערך כתכונה של כל מופע חדש שניצור:\n", "

                                                                                                                                                                                                                                                " ] @@ -307,8 +305,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " מדובר בבחירה מעט בזבזנית, כיוון שאם יהיו לנו מיליון רכיבים נצטרך ליצור במיליון מופעים את HEALTHY_CALORIES_UPPER_BOUND.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " מדובר בבחירה מעט בזבזנית, כיוון שאם יהיו לנו מיליון רכיבים נצטרך ליצור במיליון מופעים את HEALTHY_CALORIES_UPPER_BOUND.
                                                                                                                                                                                                                                                \n", " יתרה מכך, אם נחליט לשנות את HEALTHY_CALORIES_UPPER_BOUND נצטרך לפנות לכל מיליון המופעים הקיימים ולשנות בהם את הערך.\n", "

                                                                                                                                                                                                                                                " ] @@ -317,7 +315,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", " אפשרות טובה יותר, שבה טרם נתקלנו, היא להגדיר את המשתנה ברמת המחלקה עצמה:\n", "

                                                                                                                                                                                                                                                " ] @@ -352,10 +350,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " מה קרה בקוד שלמעלה?
                                                                                                                                                                                                                                                \n", - " הגדרנו את HEALTHY_CALORIES_UPPER_BOUND באותה רמה היררכית של הגדרת הפעולות במחלקה.
                                                                                                                                                                                                                                                \n", - " הגדרה של משתנה ברמת המחלקה גורמת לו להיות משותף לכל המופעים שייווצרו מאותה מחלקה.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " מה קרה בקוד שלמעלה?
                                                                                                                                                                                                                                                \n", + " הגדרנו את HEALTHY_CALORIES_UPPER_BOUND באותה רמה היררכית של הגדרת הפעולות במחלקה.
                                                                                                                                                                                                                                                \n", + " הגדרה של משתנה ברמת המחלקה גורמת לו להיות משותף לכל המופעים שייווצרו מאותה מחלקה.
                                                                                                                                                                                                                                                \n", " בשלב זה כל מופע יכול לגשת לערך HEALTHY_CALORIES_UPPER_BOUND כאילו הוא חלק מתכונות המופע.\n", "

                                                                                                                                                                                                                                                " ] @@ -377,8 +375,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " בתא האחרון יצרנו שני מופעים חדשים של רכיבים – הראשון של בננה והשני של מלון.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " בתא האחרון יצרנו שני מופעים חדשים של רכיבים – הראשון של בננה והשני של מלון.
                                                                                                                                                                                                                                                \n", " הצלחנו לגשת למשתנה המחלקה HEALTHY_CALORIES_UPPER_BOUND שמשותף לשניהם דרך המופע שלהם.\n", "

                                                                                                                                                                                                                                                " ] @@ -387,8 +385,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " קריאה ל־banana.is_healthy() תעביר את המופע banana לפרמטר self של הפעולה is_healthy.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " קריאה ל־banana.is_healthy() תעביר את המופע banana לפרמטר self של הפעולה is_healthy.
                                                                                                                                                                                                                                                \n", " הביטוי self.HEALTHY_CALORIES_UPPER_BOUND יאפשר לנו להשיג את משתנה המחלקה, כיוון שאל self הועבר המופע עצמו:\n", "

                                                                                                                                                                                                                                                " ] @@ -407,7 +405,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", " הטריק הזה נקרא \"משתני מחלקה\" והוא מועיל ונפוץ, בעיקר עבור הגדרת ערכים קבועים המשותפים לכל המופעים שייווצרו מהמחלקה.\n", "

                                                                                                                                                                                                                                                " ] @@ -416,15 +414,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: חללר" + "### תרגיל ביניים: חללר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " בעקבות הצלחתכם בחברת צ'יקצ'וק, פנה אליכם היזם המוכר אלון מסכה וביקש מכם להצטרף לחברתו \"חללר\".
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " בעקבות הצלחתכם בחברת צ'יקצ'וק, פנה אליכם היזם המוכר אלון מסכה וביקש מכם להצטרף לחברתו \"חללר\".
                                                                                                                                                                                                                                                \n", " אלון מעוניין לבנות גשושית שיכולה לנוע במהירות האור, והוא מעוניין בעזרתכם בבניית סימולציה של גשושית שכזו.\n", "

                                                                                                                                                                                                                                                " ] @@ -433,9 +431,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " תכונות הגשושית (SpaceProbe) יהיו זמן השיגור שלה ומהירות הטיסה הממוצעת של הגשושית בקמ\"ש.
                                                                                                                                                                                                                                                \n", - " לכל מופע של גשושית תהיה גם הפעולה get_distance שתחשב מה המרחק שהחללית עברה מנקודת השיגור שלה.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " תכונות הגשושית (SpaceProbe) יהיו זמן השיגור שלה ומהירות הטיסה הממוצעת של הגשושית בקמ\"ש.
                                                                                                                                                                                                                                                \n", + " לכל מופע של גשושית תהיה גם הפעולה get_distance שתחשב מה המרחק שהחללית עברה מנקודת השיגור שלה.
                                                                                                                                                                                                                                                \n", " אפשר לחשב זאת על ידי מציאת מספר השעות שעברו מרגע השיגור, והכפלתו במהירות הממוצעת של החללית.\n", "

                                                                                                                                                                                                                                                " ] @@ -444,8 +442,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " כדי שהסימולציה תדמה מצב מציאותי, ביקש אלון להגביל את מהירות הגשושית.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " כדי שהסימולציה תדמה מצב מציאותי, ביקש אלון להגביל את מהירות הגשושית.
                                                                                                                                                                                                                                                \n", " אם המהירות הממוצעת שהוגדרה לגשושית קטנה מ־0 – הגדירו אותה כ־0. אם היא גדולה ממהירות האור – הגדירו אותה כמהירות האור.\n", "

                                                                                                                                                                                                                                                " ] @@ -454,15 +452,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מחלקות הן אזרחיות ממדרגה ראשונה" + "### מחלקות הן אזרחיות ממדרגה ראשונה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " כדי להבין טוב יותר איך פייתון מתנהגת, חשוב להבין שהמחלקה Ingredient גם היא ערך לכל דבר.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " כדי להבין טוב יותר איך פייתון מתנהגת, חשוב להבין שהמחלקה Ingredient גם היא ערך לכל דבר.
                                                                                                                                                                                                                                                \n", " בדיוק כמו פונקציות (או כל ערך אחר), אפשר לבצע השמה שלה למשתנה:\n", "

                                                                                                                                                                                                                                                " ] @@ -482,9 +480,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " בדוגמה האחרונה ביצענו השמה, וגרמנו למשתנה SomethingINeedForMyRecipe להצביע על המחלקה Ingredient.
                                                                                                                                                                                                                                                \n", - " שימו לב שלא הפעלנו את ה־__init__ של Ingredient, אלא השתמשנו בה כערך – ציינו את שמה ללא הסוגריים.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " בדוגמה האחרונה ביצענו השמה, וגרמנו למשתנה SomethingINeedForMyRecipe להצביע על המחלקה Ingredient.
                                                                                                                                                                                                                                                \n", + " שימו לב שלא הפעלנו את ה־__init__ של Ingredient, אלא השתמשנו בה כערך – ציינו את שמה ללא הסוגריים.
                                                                                                                                                                                                                                                \n", " בשלב הזה SomethingINeedForMyRecipe ו־Ingredient הצביעו לאותו מקום, ולכן אפשר היה ליצור רכיבים בעזרת SomethingINeedForMyRecipe.\n", "

                                                                                                                                                                                                                                                " ] @@ -493,7 +491,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", " הדפסה של המשתנה SomethingINeedForMyRecipe תגלה לנו שמדובר במחלקה המקורית, Ingredient: \n", "

                                                                                                                                                                                                                                                " ] @@ -511,7 +509,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", " וכך גם בדיקת הסוג של המופע honey, שנוצר מהקריאה ל־SomethingINeedForMyRecipe:\n", "

                                                                                                                                                                                                                                                " ] @@ -529,8 +527,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", - " אפשר לקחת את האמירה שמחלקות הן כמו כל ערך אחר צעד אחד קדימה.
                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", + " אפשר לקחת את האמירה שמחלקות הן כמו כל ערך אחר צעד אחד קדימה.
                                                                                                                                                                                                                                                \n", " ניצור שתי מחלקות, ונכניס את המחלקות עצמן לתוך רשימה:\n", "

                                                                                                                                                                                                                                                " ] @@ -571,16 +569,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                \n", " מה התרחש בקוד שלמעלה?\n", "

                                                                                                                                                                                                                                                \n", - "\n", - "
                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                1. יצרנו שתי מחלקות, User ו־Superstar.
                                                                                                                                                                                                                                                2. \n", - "
                                                                                                                                                                                                                                                3. יצרנו רשימה שאיבריה הם המחלקות User ו־Superstar, וגרמנו למשתנה בשם classes להצביע על הרשימה בעזרת השמה.
                                                                                                                                                                                                                                                4. \n", - "
                                                                                                                                                                                                                                                5. עברנו על התוכן של classes בעזרת לולאת for.
                                                                                                                                                                                                                                                6. \n", - "
                                                                                                                                                                                                                                                7. בכל איטרציה לקחנו מחלקה אחת (שעליה הצביע המשתנה class_object), ובנינו בעזרתה מופע של קיפיק.
                                                                                                                                                                                                                                                8. \n", - "
                                                                                                                                                                                                                                                9. הדפסנו את המופע בכל מחלקה שהגענו אליה – הראשון מופע שנוצר מהמחלקה User, והשני מופע שנוצר מהמחלקה Superstar.
                                                                                                                                                                                                                                                10. \n", + "
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                  1. יצרנו שתי מחלקות, User ו־Superstar.
                                                                                                                                                                                                                                                  2. \n", + "
                                                                                                                                                                                                                                                  3. יצרנו רשימה שאיבריה הם המחלקות User ו־Superstar, וגרמנו למשתנה בשם classes להצביע על הרשימה בעזרת השמה.
                                                                                                                                                                                                                                                  4. \n", + "
                                                                                                                                                                                                                                                  5. עברנו על התוכן של classes בעזרת לולאת for.
                                                                                                                                                                                                                                                  6. \n", + "
                                                                                                                                                                                                                                                  7. בכל איטרציה לקחנו מחלקה אחת (שעליה הצביע המשתנה class_object), ובנינו בעזרתה מופע של קיפיק.
                                                                                                                                                                                                                                                  8. \n", + "
                                                                                                                                                                                                                                                  9. הדפסנו את המופע בכל מחלקה שהגענו אליה – הראשון מופע שנוצר מהמחלקה User, והשני מופע שנוצר מהמחלקה Superstar.
                                                                                                                                                                                                                                                  10. \n", "
                                                                                                                                                                                                                                                  " ] }, @@ -588,9 +585,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " בשיעור על פונקציות בשבוע שעבר למדנו שפונקציות הן אזרחיות ממדרגה ראשונה – כלומר, הן ערכים לכל דבר.
                                                                                                                                                                                                                                                  \n", - " מהדוגמה האחרונה אפשר לראות שגם מחלקות בפייתון, בדומה לפונקציות, הן אזרחיות ממדרגה ראשונה.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " בשיעור על פונקציות בשבוע שעבר למדנו שפונקציות הן אזרחיות ממדרגה ראשונה – כלומר, הן ערכים לכל דבר.
                                                                                                                                                                                                                                                  \n", + " מהדוגמה האחרונה אפשר לראות שגם מחלקות בפייתון, בדומה לפונקציות, הן אזרחיות ממדרגה ראשונה.
                                                                                                                                                                                                                                                  \n", " המשמעות היא שהן ערך לכל דבר, כמו מספרים ומחרוזות: אפשר להכניס אותן לרשימה, להעביר אותן כפרמטר ולאחסן אותן במשתנים.\n", "

                                                                                                                                                                                                                                                  " ] @@ -599,16 +596,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שימוש ישיר בערך המחלקה" + "### שימוש ישיר בערך המחלקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                  \n", + " נחדד פעם נוספת את ההבדלים בין מופע למחלקה.
                                                                                                                                                                                                                                                  \n", + " נביט במחלקה Ingredient שמייצגת רכיב במסעדה.
                                                                                                                                                                                                                                                  \n", " בעזרת קריאה למחלקה (השבלונה, התבנית) Ingredient נוכל ליצור מופעים חדשים של רכיבים.\n", "

                                                                                                                                                                                                                                                  " ] @@ -617,7 +614,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", " כך ניצור מחלקה:\n", "

                                                                                                                                                                                                                                                  " ] @@ -652,7 +649,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", " וכך ניצור מופע:\n", "

                                                                                                                                                                                                                                                  " ] @@ -670,8 +667,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " כפי שראינו לפני כן, מחלקה היא ערך לכל דבר.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " כפי שראינו לפני כן, מחלקה היא ערך לכל דבר.
                                                                                                                                                                                                                                                  \n", " מעבר לכך, ראינו שאפשר להגדיר משתנים השייכים למחלקה.\n", "

                                                                                                                                                                                                                                                  " ] @@ -680,8 +677,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " אפשר לגשת לאותם משתנים שלא דרך מופע מסוים, בעזרת שימוש בשם המחלקה.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " אפשר לגשת לאותם משתנים שלא דרך מופע מסוים, בעזרת שימוש בשם המחלקה.
                                                                                                                                                                                                                                                  \n", " נוכל, לדוגמה, להשיג את הערך שנמצא ב־HEALTHY_CALORIES_UPPER_BOUND כך:\n", "

                                                                                                                                                                                                                                                  " ] @@ -699,8 +696,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " בשורה למעלה ציינו את שם המחלקה עצמה, כתבנו נקודה, ומייד אחריה התייחסנו לאחד המשתנים המוגדרים בה.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " בשורה למעלה ציינו את שם המחלקה עצמה, כתבנו נקודה, ומייד אחריה התייחסנו לאחד המשתנים המוגדרים בה.
                                                                                                                                                                                                                                                  \n", " הגדרת קבועים במחלקה והתייחסות אליהם מבחוץ הוא רעיון די נפוץ שנהוג להשתמש בו לא מעט בתכנות.\n", "

                                                                                                                                                                                                                                                  " ] @@ -709,7 +706,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", " אם נרצה, נוכל גם לבצע השמה למשתנה המחלקה מבחוץ, ולשנות אותו עבור כל המופעים שמתייחסים אליו:\n", "

                                                                                                                                                                                                                                                  " ] @@ -729,8 +726,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " בניגוד לגישה למשתנה המחלקה בצורה שהוצגה למעלה, לא נוכל לגשת באותו אופן לתכונה Ingredient.name.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " בניגוד לגישה למשתנה המחלקה בצורה שהוצגה למעלה, לא נוכל לגשת באותו אופן לתכונה Ingredient.name.
                                                                                                                                                                                                                                                  \n", " הרי אין בכך היגיון – התכונה name היא תכונה שמוגדרת עבור כל מופע, ולא עבור המחלקה כולה:\n", "

                                                                                                                                                                                                                                                  " ] @@ -748,7 +745,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", " ומה יקרה אם ננסה לפנות דרך המחלקה עצמה לפעולה שהוגדרה ברמת המחלקה?\n", "

                                                                                                                                                                                                                                                  " ] @@ -766,8 +763,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " כמובן!
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " כמובן!
                                                                                                                                                                                                                                                  \n", " הפעולה is_healthy מצפה ל־self, מופע כלשהו של המחלקה, שבדרך כלל מועבר לה כשאנחנו קוראים לה בעזרת המופע:\n", "

                                                                                                                                                                                                                                                  " ] @@ -785,12 +782,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " בתא למעלה, כפי שלמדנו בפרק הקודם על מחלקות, cinnamon נשלח לפעולה is_healthy בתור הארגומנט self.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " בתא למעלה, כפי שלמדנו בפרק הקודם על מחלקות, cinnamon נשלח לפעולה is_healthy בתור הארגומנט self.
                                                                                                                                                                                                                                                  \n", "

                                                                                                                                                                                                                                                  \n", - "\n", - "

                                                                                                                                                                                                                                                  \n", - " כדי לחקות את אותה ההתנהגות עבור הקריאה Ingredient.is_healthy() שמצפה לקבל self כפרמטר,
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " כדי לחקות את אותה ההתנהגות עבור הקריאה Ingredient.is_healthy() שמצפה לקבל self כפרמטר,
                                                                                                                                                                                                                                                  \n", " נעביר את cinnamon כארגומנט לפעולה, וזה יגרום לה להיכנס לפרמטר self:\n", "

                                                                                                                                                                                                                                                  " ] @@ -808,8 +804,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " שימוש בפעולות בצורה הזו כרגע הוא יותר בבחינת ידע כללי שאמור לעזור לכם להבין איך המחלקה מתנהגת מאחורי הקלעים.
                                                                                                                                                                                                                                                  \n", + "

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

                                                                                                                                                                                                                                                  " ] @@ -818,16 +814,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הכלה" + "## הכלה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " לאור ההצלחה המסחררת של מחלקת \"רכיב\", ביקשה מאיתנו מנהלת המסעדה קיפף אוסין לתכנת מחלקה בשם Dish שתייצג מנה במסעדה.
                                                                                                                                                                                                                                                  \n", - " לכל מנה יש שם (name), סימון אם היא צמחונית (is_vegetarian) ורשימת רכיבים (ingredients).
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " לאור ההצלחה המסחררת של מחלקת \"רכיב\", ביקשה מאיתנו מנהלת המסעדה קיפף אוסין לתכנת מחלקה בשם Dish שתייצג מנה במסעדה.
                                                                                                                                                                                                                                                  \n", + " לכל מנה יש שם (name), סימון אם היא צמחונית (is_vegetarian) ורשימת רכיבים (ingredients).
                                                                                                                                                                                                                                                  \n", " הפעולה get_total_calories תחזיר את סכום הקלוריות של רכיבי המנה.\n", "

                                                                                                                                                                                                                                                  " ] @@ -836,22 +832,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", - "

                                                                                                                                                                                                                                                  \n", - " ממשו בעצמכם את מחלקת Dish.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                  \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " ממשו בעצמכם את מחלקת Dish.
                                                                                                                                                                                                                                                  \n", " לעת עתה, התעלמו מהכמות של כל רכיב במנה.\n", "

                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", - "

                                                                                                                                                                                                                                                  \n", - " חשוב!
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + "חשוב!
                                                                                                                                                                                                                                                  \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                  \n", "
                                                                                                                                                                                                                                                  " ] }, @@ -859,8 +855,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " חלק מהכיף האמיתי בתכנות מחלקות מסתתר בכתיבת האינטרקציה ביניהן.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " חלק מהכיף האמיתי בתכנות מחלקות מסתתר בכתיבת האינטרקציה ביניהן.
                                                                                                                                                                                                                                                  \n", " לכן התרגיל למעלה הוא מעניין – הוא משלב את המחלקה הקודמת שבנינו, Ingredient, עם המחלקה Dish.\n", "

                                                                                                                                                                                                                                                  " ] @@ -869,9 +865,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " כדי לייצג את הרכיבים בכל מנה נשתמש במופעי המחלקה Ingredient.
                                                                                                                                                                                                                                                  \n", - " נוכל לשמור רשימה של רכיבים כתכונה של מחלקת \"מנה\".
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " כדי לייצג את הרכיבים בכל מנה נשתמש במופעי המחלקה Ingredient.
                                                                                                                                                                                                                                                  \n", + " נוכל לשמור רשימה של רכיבים כתכונה של מחלקת \"מנה\".
                                                                                                                                                                                                                                                  \n", " במילים אחרות: לכל מנה יש רשימת רכיבים.\n", "

                                                                                                                                                                                                                                                  " ] @@ -880,7 +876,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", " נממש:\n", "

                                                                                                                                                                                                                                                  " ] @@ -927,8 +923,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " בקוד שלמעלה הגדרנו פעולת __init__ שתקבל את שם המנה, משתנה בוליאני שקובע אם היא צמחונית או לא ורשימת רכיבים.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " בקוד שלמעלה הגדרנו פעולת __init__ שתקבל את שם המנה, משתנה בוליאני שקובע אם היא צמחונית או לא ורשימת רכיבים.
                                                                                                                                                                                                                                                  \n", " הפעולה get_total_calories תעבור על הרכיבים ותסכום את מספרי הקלוריות של כל אחד מהם.\n", "

                                                                                                                                                                                                                                                  " ] @@ -937,8 +933,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " נבדוק שהמחלקה עובדת.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " נבדוק שהמחלקה עובדת.
                                                                                                                                                                                                                                                  \n", " ניצור רשימת רכיבים ונעביר אותה ל־Dish כדי לייצר מופע של מנה:\n", "

                                                                                                                                                                                                                                                  " ] @@ -962,8 +958,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " העיקרון של שימוש במופעי מחלקה אחת בתוך מחלקה אחרת נקרא הכלה (Containment).
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " העיקרון של שימוש במופעי מחלקה אחת בתוך מחלקה אחרת נקרא הכלה (Containment).
                                                                                                                                                                                                                                                  \n", " זוהי טכניקה שימושית ונפוצה מאוד בתכנות מחלקות, ותשמש אותנו רבות ביום־יום כמתכנתים.\n", "

                                                                                                                                                                                                                                                  " ] @@ -972,15 +968,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: צָב שָׁלוּחַ 2" + "### תרגיל ביניים: צָב שָׁלוּחַ 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " מנהל הדואר הידוע והאהוב קיפיק הצב אהב את מחלקת PostOffice שבניתם.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " מנהל הדואר הידוע והאהוב קיפיק הצב אהב את מחלקת PostOffice שבניתם.
                                                                                                                                                                                                                                                  \n", " מרוב התלהבות, הוא מעוניין שגם ההודעות עצמן ייוצגו בעזרת מחלקה.\n", "

                                                                                                                                                                                                                                                  " ] @@ -989,9 +985,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " צרו את מחלקת Message והחליטו אילו תכונות כדאי שיהיו לה.
                                                                                                                                                                                                                                                  \n", - " ממשו פעולת __str__ שתציג את ההודעה בצורה נאה.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " צרו את מחלקת Message והחליטו אילו תכונות כדאי שיהיו לה.
                                                                                                                                                                                                                                                  \n", + " ממשו פעולת __str__ שתציג את ההודעה בצורה נאה.
                                                                                                                                                                                                                                                  \n", " הרצת הפונקציה len על מופע של הודעה יחזיר את אורך ההודעה (ללא הכותרת).\n", "

                                                                                                                                                                                                                                                  " ] @@ -1000,8 +996,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " ודאו שהתאמתם את פעולות מחלקת PostOffice כך שיפעלו גם על Message.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " ודאו שהתאמתם את פעולות מחלקת PostOffice כך שיפעלו גם על Message.
                                                                                                                                                                                                                                                  \n", " אם עולה הצורך, קראו באינטרנט על פעולות קסם.\n", "

                                                                                                                                                                                                                                                  " ] @@ -1010,15 +1006,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## כימוס, הגנה ופרטיות" + "## כימוס, הגנה ופרטיות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " מחלקת Dish שכתבנו שינתה את עולם המסעדנות כולו, ואין מתכנת מסעדן שלא משתמש בה.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " מחלקת Dish שכתבנו שינתה את עולם המסעדנות כולו, ואין מתכנת מסעדן שלא משתמש בה.
                                                                                                                                                                                                                                                  \n", " הגברת קיפף אוסין משתמשת בה במסעדת הדגל שלה \"מסון קייפי\" ומעוניינת להשתמש בה במסעדה החדשה שלה, \"7 טעמים\".\n", "

                                                                                                                                                                                                                                                  " ] @@ -1027,7 +1023,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", " במסעדת 7 טעמים אין אף מנה שמורכבת מיותר מ־7 רכיבים, והגברת אוסין מבקשת מאיתנו לעזור לה לאכוף זאת במחלקה.\n", "

                                                                                                                                                                                                                                                  " ] @@ -1036,22 +1032,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", - "

                                                                                                                                                                                                                                                  \n", - " נסו לחשוב בעצמכם איך אתם הייתם פותרים את הבעיה.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                  \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " נסו לחשוב בעצמכם איך אתם הייתם פותרים את הבעיה.
                                                                                                                                                                                                                                                  \n", " כיצד תשפרו את מחלקת Dish כך שתגביל את המשתמשים בה לעד 7 רכיבים?\n", "

                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", - "

                                                                                                                                                                                                                                                  \n", - " חשוב!
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + "חשוב!
                                                                                                                                                                                                                                                  \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                  \n", "
                                                                                                                                                                                                                                                  " ] }, @@ -1059,8 +1055,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " ישנם הרבה פתרונות יצירתיים ומעניינים שיכולים לשמש אותנו במקרה שסופקו יותר מ־7 רכיבים.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " ישנם הרבה פתרונות יצירתיים ומעניינים שיכולים לשמש אותנו במקרה שסופקו יותר מ־7 רכיבים.
                                                                                                                                                                                                                                                  \n", " אפשר, לדוגמה, לקחת רק את 7 הרכיבים הראשונים שאנחנו מקבלים, או להשאיר את רשימת הרכיבים ריקה.\n", "

                                                                                                                                                                                                                                                  " ] @@ -1069,10 +1065,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " אחת הבחירות האפשריות היא לא לקבל מלכתחילה בפעולת האתחול __init__ את רשימת הרכיבים.
                                                                                                                                                                                                                                                  \n", - " במקרה כזה נצטרך לספק למשתמש דרך נוחה להוסיף רכיבים לתכונה ingredients ולהוריד רכיבים ממנה.
                                                                                                                                                                                                                                                  \n", - " נאתחל את התכונה לרשימה ריקה, ונוסיף ל־Dish את הפעולות add_ingredient ו־remove_ingredient.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " אחת הבחירות האפשריות היא לא לקבל מלכתחילה בפעולת האתחול __init__ את רשימת הרכיבים.
                                                                                                                                                                                                                                                  \n", + " במקרה כזה נצטרך לספק למשתמש דרך נוחה להוסיף רכיבים לתכונה ingredients ולהוריד רכיבים ממנה.
                                                                                                                                                                                                                                                  \n", + " נאתחל את התכונה לרשימה ריקה, ונוסיף ל־Dish את הפעולות add_ingredient ו־remove_ingredient.
                                                                                                                                                                                                                                                  \n", " ברגע שהמשתמש במחלקה יקרא ל־add_ingredient כשיש במנה כבר 7 רכיבים, נכשיל את הוספת הרכיב העודף:\n", "

                                                                                                                                                                                                                                                  " ] @@ -1152,8 +1148,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " נבדוק שהמחלקה עובדת.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " נבדוק שהמחלקה עובדת.
                                                                                                                                                                                                                                                  \n", " לנוחיותכם, פירטנו מעל כל חלק מה יעשה הקוד.\n", "

                                                                                                                                                                                                                                                  " ] @@ -1200,7 +1196,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", " אם ננסה להוציא את הסוכר, נגלה שהוא אכן לא ברשימת הרכיבים:\n", "

                                                                                                                                                                                                                                                  " ] @@ -1218,8 +1214,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " מזל טוב! הכל עובד וקיפף מרוצה, בינתיים.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " מזל טוב! הכל עובד וקיפף מרוצה, בינתיים.
                                                                                                                                                                                                                                                  \n", " הכנתם לכולם Black Magic Julep כדי לחגוג את המאורע, לגמתם בשקיקה שני שלוקים ו...\n", "

                                                                                                                                                                                                                                                  " ] @@ -1228,9 +1224,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " \"יש בעיה חמורה במחלקה!\", מזדעק הסו־שף מפינת החדר. נראה שהוא טרם לגם מהמשקה שלו. הסו־שף מוסיף:
                                                                                                                                                                                                                                                  \n", - " \"משתמש שלא מכיר את המחלקה, יכול בטעות לערוך ישירות את התכונה ingredient השייכת למופע של המאכל שיצרנו.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " \"יש בעיה חמורה במחלקה!\", מזדעק הסו־שף מפינת החדר. נראה שהוא טרם לגם מהמשקה שלו. הסו־שף מוסיף:
                                                                                                                                                                                                                                                  \n", + " \"משתמש שלא מכיר את המחלקה, יכול בטעות לערוך ישירות את התכונה ingredient השייכת למופע של המאכל שיצרנו.
                                                                                                                                                                                                                                                  \n", " בכך הוא יעקוף את המגבלה שהצבנו בפעולה add_ingredient:\n", "

                                                                                                                                                                                                                                                  " ] @@ -1249,8 +1245,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " זה אולי נשמע מקרה קצה זניח, אבל אחת ההנחות שלנו כמתכנתים היא שמותר לשנות מאפייני מחלקה ללא חשש.
                                                                                                                                                                                                                                                  \n", + "

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

                                                                                                                                                                                                                                                  " ] @@ -1259,8 +1255,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " היסטריה המונית פורצת בחדר. עלי נענע ומטריות קוקטיילים מתעופפים לכל עבר.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " היסטריה המונית פורצת בחדר. עלי נענע ומטריות קוקטיילים מתעופפים לכל עבר.
                                                                                                                                                                                                                                                  \n", " בתוך שניות ספורות אתם משתלטים על המצב, ואחרי דקה אתם כבר שקועים עמוק בקריאת מאמר שמדבר על תכנות מחלקות.\n", "

                                                                                                                                                                                                                                                  " ] @@ -1269,10 +1265,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " מתברר שאם מוסיפים את התו _ לפני שם התכונה, היא הופכת להיות תכונה \"מוגנת\" (protected).
                                                                                                                                                                                                                                                  \n", - " מצב כזה מסמן למתכנתים אחרים שהתכונה מיועדת לשימוש פנימי של המחלקה, ושאסור לגשת אליה מבחוץ.
                                                                                                                                                                                                                                                  \n", - " \"אין לפנות לתכונה כזו בקוד שכתוב מחוץ למחלקה\", נכתב במאמר. \"לא למטרות קריאה ולא למטרות כתיבה\".
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + "מתברר שאם מוסיפים את התו _ לפני שם התכונה, היא הופכת להיות תכונה \"מוגנת\" (protected).
                                                                                                                                                                                                                                                  \n", + " מצב כזה מסמן למתכנתים אחרים שהתכונה מיועדת לשימוש פנימי של המחלקה, ושאסור לגשת אליה מבחוץ.
                                                                                                                                                                                                                                                  \n", + " \"אין לפנות לתכונה כזו בקוד שכתוב מחוץ למחלקה\", נכתב במאמר. \"לא למטרות קריאה ולא למטרות כתיבה\".
                                                                                                                                                                                                                                                  \n", "

                                                                                                                                                                                                                                                  " ] }, @@ -1280,8 +1276,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " שיניתם את המחלקה. אף על פי שהשימוש בה נראה בדיוק אותו דבר, התכונה ingredients קיבלה קו תחתון לפני שמה.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " שיניתם את המחלקה. אף על פי שהשימוש בה נראה בדיוק אותו דבר, התכונה ingredients קיבלה קו תחתון לפני שמה.
                                                                                                                                                                                                                                                  \n", " המחלקה המתוקנת שיצרתם נראית עכשיו כך:\n", "

                                                                                                                                                                                                                                                  " ] @@ -1361,9 +1357,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " לפעמים ניתקל במקרה שבו נרצה למנוע גישה ישירה לתכונות מסוימות של מחלקה מצד גורמים לא מורשים.
                                                                                                                                                                                                                                                  \n", - " פתיחת שם התכונה בתו _ וסימונה כמוגנת, או במילים אחרות מתאימה לשימוש רק בתוך המחלקה, יכולות לשרת אותנו להשגת המטרה הזו.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " לפעמים ניתקל במקרה שבו נרצה למנוע גישה ישירה לתכונות מסוימות של מחלקה מצד גורמים לא מורשים.
                                                                                                                                                                                                                                                  \n", + " פתיחת שם התכונה בתו _ וסימונה כמוגנת, או במילים אחרות מתאימה לשימוש רק בתוך המחלקה, יכולות לשרת אותנו להשגת המטרה הזו.
                                                                                                                                                                                                                                                  \n", " זו מוסכמה חזקה מאוד בקרב מתכנתי פייתון: עשו מה שאפשר כדי לא לגשת לתכונות ששמן מתחיל בקו תחתון מתוך קוד שנמצא מחוץ למחלקה.\n", "

                                                                                                                                                                                                                                                  " ] @@ -1372,9 +1368,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " אם המשתמש במחלקה ירצה להשיג את ערכו של מופע או לשנות אותו, הוא יוכל לקרוא לפעולה שזו מטרתה.
                                                                                                                                                                                                                                                  \n", - " במקרה שלנו, הפעולות הללו הן add_ingredient או remove_ingredient.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " אם המשתמש במחלקה ירצה להשיג את ערכו של מופע או לשנות אותו, הוא יוכל לקרוא לפעולה שזו מטרתה.
                                                                                                                                                                                                                                                  \n", + " במקרה שלנו, הפעולות הללו הן add_ingredient או remove_ingredient.
                                                                                                                                                                                                                                                  \n", " נוכל (וכדאי) שנממש פעולה לצפייה בתכונה, כמו get_ingredients.\n", "

                                                                                                                                                                                                                                                  " ] @@ -1383,9 +1379,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                  \n", - " הגישה של החבאת נתונים מאחורי פעולות היא רעיון פופולרי מאוד בתכנות מונחה עצמים.
                                                                                                                                                                                                                                                  \n", - " לפי רעיון שנקרא \"כימוס\" (Encapsulation), על מחלקה לאגד תכונות ופעולות, ולהסתיר מידע עודף מאלו שמשתמשים במחלקה.
                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                  \n", + " הגישה של החבאת נתונים מאחורי פעולות היא רעיון פופולרי מאוד בתכנות מונחה עצמים.
                                                                                                                                                                                                                                                  \n", + " לפי רעיון שנקרא \"כימוס\" (Encapsulation), על מחלקה לאגד תכונות ופעולות, ולהסתיר מידע עודף מאלו שמשתמשים במחלקה.
                                                                                                                                                                                                                                                  \n", " הסתרת המידע משרתת שתי מטרות:\n", "

                                                                                                                                                                                                                                                  " ] @@ -1394,9 +1390,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                  • פישוט והפחתת מורכבות: נעדיף לחשוף למשתמש במחלקה רק תכונות ופעולות שחשובות עבורו, ולא פרטי מימוש.
                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                  • שמירה על תקינות המופע: נמנע מהמשתמש במחלקה לערוך מופעים בצורה לא מבוקרת, ובכך לגרום למופע להכיל מידע לא תקין.
                                                                                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                    • פישוט והפחתת מורכבות: נעדיף לחשוף למשתמש במחלקה רק תכונות ופעולות שחשובות עבורו, ולא פרטי מימוש.
                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                    • שמירה על תקינות המופע: נמנע מהמשתמש במחלקה לערוך מופעים בצורה לא מבוקרת, ובכך לגרום למופע להכיל מידע לא תקין.
                                                                                                                                                                                                                                                    • \n", "
                                                                                                                                                                                                                                                    " ] }, @@ -1404,9 +1400,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", - " ברוב שפות התכנות שאינן פייתון, שפת התכנות ממש מונעת גישה לתכונות מוגנות מתוך קוד שנמצא מחוץ למחלקה.
                                                                                                                                                                                                                                                    \n", - " בפייתון נהוג להגיד שכולנו מבוגרים בעלי שיקול דעת, ולכן פייתון לא מונעת גישה לתכונות מוגנות.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " ברוב שפות התכנות שאינן פייתון, שפת התכנות ממש מונעת גישה לתכונות מוגנות מתוך קוד שנמצא מחוץ למחלקה.
                                                                                                                                                                                                                                                    \n", + " בפייתון נהוג להגיד שכולנו מבוגרים בעלי שיקול דעת, ולכן פייתון לא מונעת גישה לתכונות מוגנות.
                                                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                                                    " ] }, @@ -1414,10 +1410,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", - " למרות זאת, בהקשר הזה יש לפייתון טריק מלוכלך בשרוול.
                                                                                                                                                                                                                                                    \n", - " אפשר להגדיר תכונות כפרטיות (private) בעזרת הקידומת __ (פעמיים קו תחתון).
                                                                                                                                                                                                                                                    \n", - " במקרה הזה, פייתון כן תתערב, וכן תנסה למנוע גישה לתכונה.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " למרות זאת, בהקשר הזה יש לפייתון טריק מלוכלך בשרוול.
                                                                                                                                                                                                                                                    \n", + " אפשר להגדיר תכונות כפרטיות (private) בעזרת הקידומת __ (פעמיים קו תחתון).
                                                                                                                                                                                                                                                    \n", + " במקרה הזה, פייתון כן תתערב, וכן תנסה למנוע גישה לתכונה.
                                                                                                                                                                                                                                                    \n", " נדגים בעזרת מחלקה פשוטה של משתמש:\n", "

                                                                                                                                                                                                                                                    " ] @@ -1445,7 +1441,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", " ניצור דמות שנקראת פרנקלין:\n", "

                                                                                                                                                                                                                                                    " ] @@ -1464,7 +1460,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", " וננסה לשנות לה את התכונות:\n", "

                                                                                                                                                                                                                                                    " ] @@ -1484,7 +1480,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", " אבל כשננסה להדפיס את Cookie Monster, נגלה שכל תכונות הדמות השתנו חוץ מהעובדה שהיא עדיין אוהבת לשרוך נעליים!\n", "

                                                                                                                                                                                                                                                    " ] @@ -1502,9 +1498,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", - " הסיבה לכך היא שכשפייתון רואה את התחילית __ היא מבינה שממש חשוב לכם שאף גורם חיצוני למחלקה לא ייגש לתכונה.
                                                                                                                                                                                                                                                    \n", - " אף על פי שניסיון פשוט לגשת לתכונה __hobbies מחוץ למחלקה לא יישא פרי, אם נחטט טוב נגלה שעדיין ישנה דרך לעשות זאת.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " הסיבה לכך היא שכשפייתון רואה את התחילית __ היא מבינה שממש חשוב לכם שאף גורם חיצוני למחלקה לא ייגש לתכונה.
                                                                                                                                                                                                                                                    \n", + " אף על פי שניסיון פשוט לגשת לתכונה __hobbies מחוץ למחלקה לא יישא פרי, אם נחטט טוב נגלה שעדיין ישנה דרך לעשות זאת.
                                                                                                                                                                                                                                                    \n", " מתברר שפייתון רק משנה את שם התכונה למשהו מעט מסובך יותר כדי \"להחביא\" אותה טוב יותר:\n", "

                                                                                                                                                                                                                                                    " ] @@ -1523,10 +1519,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", - " תכונה שמתחילה בתחילית __ בפייתון נקראת, כאמור, \"תכונה פרטית\" (private).
                                                                                                                                                                                                                                                    \n", - " גם בה מותר להשתמש רק בתוך המחלקה, רק שהפעם פייתון עושה טריק מלוכלך כדי למנוע מכם להשתמש בתכונה בכל זאת.
                                                                                                                                                                                                                                                    \n", - " פייתון משנה את שם התכונה לקו תחתון, שם המחלקה, שני קווים תחתונים ואז שם התכונה.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " תכונה שמתחילה בתחילית __ בפייתון נקראת, כאמור, \"תכונה פרטית\" (private).
                                                                                                                                                                                                                                                    \n", + " גם בה מותר להשתמש רק בתוך המחלקה, רק שהפעם פייתון עושה טריק מלוכלך כדי למנוע מכם להשתמש בתכונה בכל זאת.
                                                                                                                                                                                                                                                    \n", + " פייתון משנה את שם התכונה לקו תחתון, שם המחלקה, שני קווים תחתונים ואז שם התכונה.
                                                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                                                    " ] }, @@ -1534,9 +1530,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", - " השם המקצועי לשינוי שם משתנה כדי לפתור בעיית ארכיטקטורה הוא name mangling, והקיום שלו בפייתון הוא נושא טעון בקרב קהילת המפתחים בשפה.
                                                                                                                                                                                                                                                    \n", - " עקב כך, הקידומת __ היא אחת מהיכולות היותר שנויות במחלוקת בשפה ועדיף לא להשתמש בה, אלא אם כן ממש חייבים.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " השם המקצועי לשינוי שם משתנה כדי לפתור בעיית ארכיטקטורה הוא name mangling, והקיום שלו בפייתון הוא נושא טעון בקרב קהילת המפתחים בשפה.
                                                                                                                                                                                                                                                    \n", + " עקב כך, הקידומת __ היא אחת מהיכולות היותר שנויות במחלוקת בשפה ועדיף לא להשתמש בה, אלא אם כן ממש חייבים.
                                                                                                                                                                                                                                                    \n", " כל עוד המקרה הוא לא קיצוני מאוד, העדיפו להגן על משתנה בעזרת קידומת של קו תחתון אחד.\n", "

                                                                                                                                                                                                                                                    " ] @@ -1545,22 +1541,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - "

                                                                                                                                                                                                                                                    \n", - " אפשר להגדיר גם פעולות כמוגנות או כפרטיות אם נוסיף להן את התחילית _ או __, בהתאמה.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " אפשר להגדיר גם פעולות כמוגנות או כפרטיות אם נוסיף להן את התחילית _ או __, בהתאמה.
                                                                                                                                                                                                                                                    \n", " כיוון ש־can_add_ingredient מיועדת לשימוש פנימי, שנו את הפעולה כך שתוגדר כמוגנת.\n", "

                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - "

                                                                                                                                                                                                                                                    \n", - " חשוב!
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + "חשוב!
                                                                                                                                                                                                                                                    \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", "
                                                                                                                                                                                                                                                    " ] }, @@ -1568,18 +1564,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - " \"העמקה\" \n", - "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - "

                                                                                                                                                                                                                                                    \n", - " ישנם מקרים מיוחדים שטרם למדנו, שבהם אפשר לגשת לתכונות ולפעולות מוגנות ממחלקות אחרות.
                                                                                                                                                                                                                                                    \n", - " לעומתן, תכונות או פעולות שמוגדרות כפרטיות נגישות רק מתוך המחלקה שיצרה אותן.
                                                                                                                                                                                                                                                    \n", - " ההפרדה בין שני הרעיונות נפוצה בעיקר בשפות אחרות, ובפייתון נהוג להשתמש בתחילית _ (משתנה מוגן) בשני המקרים.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + "\"העמקה\"\n", + "
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " ישנם מקרים מיוחדים שטרם למדנו, שבהם אפשר לגשת לתכונות ולפעולות מוגנות ממחלקות אחרות.
                                                                                                                                                                                                                                                    \n", + " לעומתן, תכונות או פעולות שמוגדרות כפרטיות נגישות רק מתוך המחלקה שיצרה אותן.
                                                                                                                                                                                                                                                    \n", + " ההפרדה בין שני הרעיונות נפוצה בעיקר בשפות אחרות, ובפייתון נהוג להשתמש בתחילית _ (משתנה מוגן) בשני המקרים.
                                                                                                                                                                                                                                                    \n", " מהסיבה הזו אנשים רבים יקראו לתכונה או לפעולה עם קידומת _ בפייתון \"תכונה פרטית\" או \"פעולה פרטית\".\n", "

                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", "
                                                                                                                                                                                                                                                    " ] }, @@ -1587,16 +1583,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פעולות גישה ושינוי" + "### פעולות גישה ושינוי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", - " כמו שראינו השבוע, פייתון מתירה כברירת מחדל גישה נוחה לתכונות של מופעים בעזרת קוד שנכתב מחוץ למחלקה.
                                                                                                                                                                                                                                                    \n", - " בניגוד לפייתון, בשפות אחרות לא נהוג לאפשר גישה ישירה לתכונות המחלקה.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " כמו שראינו השבוע, פייתון מתירה כברירת מחדל גישה נוחה לתכונות של מופעים בעזרת קוד שנכתב מחוץ למחלקה.
                                                                                                                                                                                                                                                    \n", + " בניגוד לפייתון, בשפות אחרות לא נהוג לאפשר גישה ישירה לתכונות המחלקה.
                                                                                                                                                                                                                                                    \n", " מתוך הרגל, מתכנתים שמגיעים משפות אחרות משתמשים לעיתים תכופות בהחבאת נתונים בצורה לא מידתית:\n", "

                                                                                                                                                                                                                                                    " ] @@ -1650,9 +1646,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", - " הרעיון בקוד שהוצג למעלה נקרא \"פעולות גישה ושינוי\" (accessor and mutator methods), או getters and setters.
                                                                                                                                                                                                                                                    \n", - " אלו פעולות שמטרתן עריכת תכונות מסוימות או אחזור של הערך הנוכחי שלהן, תוך כדי ניסיון למנוע מהמשתמש במחלקה לגשת ישירות לערך התכונה.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " הרעיון בקוד שהוצג למעלה נקרא \"פעולות גישה ושינוי\" (accessor and mutator methods), או getters and setters.
                                                                                                                                                                                                                                                    \n", + " אלו פעולות שמטרתן עריכת תכונות מסוימות או אחזור של הערך הנוכחי שלהן, תוך כדי ניסיון למנוע מהמשתמש במחלקה לגשת ישירות לערך התכונה.
                                                                                                                                                                                                                                                    \n", " המטרה של מתכנת שנוהג כך היא לדאוג שהוא תמיד יוכל לשלוט על ערכי התכונות, לוודא את תקינותם ולמנוע מופע שמכיל נתונים שאינם תקינים.\n", "

                                                                                                                                                                                                                                                    " ] @@ -1661,9 +1657,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", - " שימוש שכזה בפעולות גישה ושינוי הוא נדיר יחסית בפייתון.
                                                                                                                                                                                                                                                    \n", - " בזכות היכולת לגשת לתכונות של מופע ישירות מחוץ למחלקה, כתיבת מחלקות הופכת להיות מהירה ונעימה לשימוש.
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " שימוש שכזה בפעולות גישה ושינוי הוא נדיר יחסית בפייתון.
                                                                                                                                                                                                                                                    \n", + " בזכות היכולת לגשת לתכונות של מופע ישירות מחוץ למחלקה, כתיבת מחלקות הופכת להיות מהירה ונעימה לשימוש.
                                                                                                                                                                                                                                                    \n", " כתיבת getter ו־setter לכל תכונה עשויה לגרום למחלקות בפייתון להפוך למסורבלות וארוכות, והשימוש בהן נעשה לא נוח:\n", "

                                                                                                                                                                                                                                                    " ] @@ -1687,7 +1683,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", " עקב הסרבול שבעניין, בפייתון לרוב נעדיף להשתמש בפעולות גישה ושינוי רק כשיש צורך ממשי בהגדרת תכונות כמוגנות או כפרטיות. \n", "

                                                                                                                                                                                                                                                    " ] @@ -1696,42 +1692,42 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    משתני מחלקה (Class Variables)
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - " משתנים המוגדרים ברמת המחלקה ונגישים עבור כל המופעים שנוצרו ממנה.
                                                                                                                                                                                                                                                    \n", - " בדרך כלל אלו משתנים קבועים שהמופעים משתמשים בהם לצורכי קריאה בלבד.
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    משתני מחלקה (Class Variables)
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + " משתנים המוגדרים ברמת המחלקה ונגישים עבור כל המופעים שנוצרו ממנה.
                                                                                                                                                                                                                                                    \n", + " בדרך כלל אלו משתנים קבועים שהמופעים משתמשים בהם לצורכי קריאה בלבד.
                                                                                                                                                                                                                                                    \n", " לדוגמה: משתנה בראש מחלקת \"תיבת דואר\" שמגדיר את נפח האחסון המירבי ל־5 ג'יגה בייט.\n", "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    הכלה (Containment)
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - " מצב שבו נעשה שימוש במופע שנוצר במחלקה A בתוך מופע של מחלקה B.
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    הכלה (Containment)
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + " מצב שבו נעשה שימוש במופע שנוצר במחלקה A בתוך מופע של מחלקה B.
                                                                                                                                                                                                                                                    \n", " לדוגמה: בתוך מופע של מחלקת \"הודעת דואר\", תכונת הנמען והמוען יהיו מופעים של מחלקת \"משתמש\". \n", "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    כימוס (Encapsulation)
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - " איגוד תכונות ופעולות תחת מחלקה, וצמצום הגישה של המשתמש במחלקה למצב הפנימי של המופעים שנוצרו ממנה.
                                                                                                                                                                                                                                                    \n", - " בפועל, ימומש על ידי הגבלה לגישה ולעריכה של תכונות ופעולות מסוימות, כך שיתאפשרו רק מקוד שנכתב בתוך המחלקה.
                                                                                                                                                                                                                                                    \n", - " עם זאת, החלטה על הסתרת תכונות רבות מדי עלולה ליצור קוד ארוך ומסורבל, ובפייתון נהוג להשתמש ברעיון בצמצום.
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    תכונה/פעולה מוגנת (Protected Attribute) או תכונה/פעולה פרטית (Private Attribute)
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - " תכונה שהגישה אליה יכולה להתבצע רק מתוך המחלקה.
                                                                                                                                                                                                                                                    \n", - " טכנית, פייתון תמיד מאפשרת למתכנת לשנות ערכים – אפילו אם הם מוגדרים כמוגנים או כפרטיים.
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    כימוס (Encapsulation)
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + " איגוד תכונות ופעולות תחת מחלקה, וצמצום הגישה של המשתמש במחלקה למצב הפנימי של המופעים שנוצרו ממנה.
                                                                                                                                                                                                                                                    \n", + " בפועל, ימומש על ידי הגבלה לגישה ולעריכה של תכונות ופעולות מסוימות, כך שיתאפשרו רק מקוד שנכתב בתוך המחלקה.
                                                                                                                                                                                                                                                    \n", + " עם זאת, החלטה על הסתרת תכונות רבות מדי עלולה ליצור קוד ארוך ומסורבל, ובפייתון נהוג להשתמש ברעיון בצמצום.
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    תכונה/פעולה מוגנת (Protected Attribute) או תכונה/פעולה פרטית (Private Attribute)
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + " תכונה שהגישה אליה יכולה להתבצע רק מתוך המחלקה.
                                                                                                                                                                                                                                                    \n", + " טכנית, פייתון תמיד מאפשרת למתכנת לשנות ערכים – אפילו אם הם מוגדרים כמוגנים או כפרטיים.
                                                                                                                                                                                                                                                    \n", " מעשית, עליכם להימנע בכל דרך אפשרית משינוי של משתנה שמוגדר כמוגן או פרטי, כל עוד אתם יכולים.\n", "
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    פעולת גישה ושינוי (Accessor/Mutator Method)
                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                    \n", - " פעולה שמטרתה לגשת (Accessor) או לשנות (Mutator) ערך של תכונה מסוימת, בעיקר בהקשרי תכונות מוגנות או פרטיות.
                                                                                                                                                                                                                                                    \n", - " מטרת ה־Accessor היא לאחזר את ערך התכונה המבוקשת בצורה מתאימה, לעיתים אחרי עיבוד מסוים.
                                                                                                                                                                                                                                                    \n", - " מטרת ה־Mutator היא לוודא ששינוי הערך תקין ולא מזיק למופע או משנה אותו למצב לא תקין.
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    פעולת גישה ושינוי (Accessor/Mutator Method)
                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                    \n", + " פעולה שמטרתה לגשת (Accessor) או לשנות (Mutator) ערך של תכונה מסוימת, בעיקר בהקשרי תכונות מוגנות או פרטיות.
                                                                                                                                                                                                                                                    \n", + " מטרת ה־Accessor היא לאחזר את ערך התכונה המבוקשת בצורה מתאימה, לעיתים אחרי עיבוד מסוים.
                                                                                                                                                                                                                                                    \n", + " מטרת ה־Mutator היא לוודא ששינוי הערך תקין ולא מזיק למופע או משנה אותו למצב לא תקין.
                                                                                                                                                                                                                                                    \n", " פעולות אלו נקראות גם getters ו־setters.\n", "
                                                                                                                                                                                                                                                    \n", "
                                                                                                                                                                                                                                                    " @@ -1741,15 +1737,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגיל לדוגמה" + "## תרגיל לדוגמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", - " בהמשך להצלחה המסחררת של אפליקציית צ'יקצ'וק, החלטנו להשיק את יישומון המסרים המיידיים \"מנשמעעעעעעע XPPP\".
                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", + " בהמשך להצלחה המסחררת של אפליקציית צ'יקצ'וק, החלטנו להשיק את יישומון המסרים המיידיים \"מנשמעעעעעעע XPPP\".
                                                                                                                                                                                                                                                    \n", " תחילה, ניצור מחלקה שתייצג משתמש.\n", "

                                                                                                                                                                                                                                                    " ] @@ -1758,13 +1754,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                    \n", " לכל משתמש יש:\n", "

                                                                                                                                                                                                                                                    \n", - "\n", - "
                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                    • תכונות: כינוי (nickname) תאריך אחרון שנצפה (last_seen) ואנשי קשר (contacts).
                                                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                                                    • פעולות: התחבר (connect), האם מחובר? (is_online; בודקת אם התחבר בדקה האחרונה).
                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                                      • תכונות: כינוי (nickname) תאריך אחרון שנצפה (last_seen) ואנשי קשר (contacts).
                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                      • פעולות: התחבר (connect), האם מחובר? (is_online; בודקת אם התחבר בדקה האחרונה).
                                                                                                                                                                                                                                                      • \n", "
                                                                                                                                                                                                                                                      " ] }, @@ -1772,13 +1767,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                      \n", " לכל הודעה יש:\n", "

                                                                                                                                                                                                                                                      \n", - "\n", - "
                                                                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                                                                      • תכונות: תאריך שליחה (send_date), אם נצפתה (seen), מוען (שולח; sender), נמען (מקבל; recipient) ותוכן (content).
                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                      • פעולות: סימון הודעה כנקראה (mark_as_read).
                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                        • תכונות: תאריך שליחה (send_date), אם נצפתה (seen), מוען (שולח; sender), נמען (מקבל; recipient) ותוכן (content).
                                                                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                                                                        • פעולות: סימון הודעה כנקראה (mark_as_read).
                                                                                                                                                                                                                                                        • \n", "
                                                                                                                                                                                                                                                        " ] }, @@ -1989,14 +1983,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                        \n", " למה כדאי לשים לב בפתרון?\n", "

                                                                                                                                                                                                                                                        \n", - "\n", - "
                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                        1. אנחנו משתמשים בכימוס במשורה – רק כשזה משפר את התנהגות המחלקה.
                                                                                                                                                                                                                                                        2. \n", - "
                                                                                                                                                                                                                                                        3. מחלקת User מוכלת בתוך מחלקת Message.
                                                                                                                                                                                                                                                        4. \n", - "
                                                                                                                                                                                                                                                        5. לא הרשינו למספרים להסתובב בקוד – SECONDS_UNTIL_DISCONNECTED הוא משתנה מחלקה קבוע שערכו 60.
                                                                                                                                                                                                                                                        6. \n", + "
                                                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                                                          1. אנחנו משתמשים בכימוס במשורה – רק כשזה משפר את התנהגות המחלקה.
                                                                                                                                                                                                                                                          2. \n", + "
                                                                                                                                                                                                                                                          3. מחלקת User מוכלת בתוך מחלקת Message.
                                                                                                                                                                                                                                                          4. \n", + "
                                                                                                                                                                                                                                                          5. לא הרשינו למספרים להסתובב בקוד – SECONDS_UNTIL_DISCONNECTED הוא משתנה מחלקה קבוע שערכו 60.
                                                                                                                                                                                                                                                          6. \n", "
                                                                                                                                                                                                                                                          " ] }, @@ -2004,30 +1997,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### אורטל קומבט – חלק 2" + "### אורטל קומבט – חלק 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Player" + "#### Player" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                          \n", - " במחלקת Player שבניתם, שנו את הפעולה attack.
                                                                                                                                                                                                                                                          \n", - " אם הפעולה לא מקבלת פרמטרים ואין לשחקן אויבים, היא תחזיר False במקום לזרוק IndexError.
                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                          \n", + " במחלקת Player שבניתם, שנו את הפעולה attack.
                                                                                                                                                                                                                                                          \n", + " אם הפעולה לא מקבלת פרמטרים ואין לשחקן אויבים, היא תחזיר False במקום לזרוק IndexError.
                                                                                                                                                                                                                                                          \n", " אם התקיפה הצליחה, הפעולה תחזיר True.\n", "

                                                                                                                                                                                                                                                          " ] @@ -2036,15 +2029,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Arena" + "#### Arena" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                          \n", - " ממשו מחלקת זירה בשם Arena.
                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                          \n", + " ממשו מחלקת זירה בשם Arena.
                                                                                                                                                                                                                                                          \n", " פעולת האתחול של Arena מקבלת את מספר השחקנים המרבי שאפשר להכניס לזירה.\n", "

                                                                                                                                                                                                                                                          " ] @@ -2053,7 +2046,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                          \n", " המחלקה תכיל לכל הפחות את התכונות הבאות:\n", "

                                                                                                                                                                                                                                                          " ] @@ -2062,10 +2055,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                                                                          • players – מכילה את רשימת השחקנים בזירה.
                                                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                                                          • next_player – מכילה את השחקן שתורו לשחק כעת.
                                                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                                                          • winner – מכילה את השחקן שניצח, או None אם עדיין אין אחד כזה.
                                                                                                                                                                                                                                                          • \n", + "
                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                            • players – מכילה את רשימת השחקנים בזירה.
                                                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                                                            • next_player – מכילה את השחקן שתורו לשחק כעת.
                                                                                                                                                                                                                                                            • \n", + "
                                                                                                                                                                                                                                                            • winner – מכילה את השחקן שניצח, או None אם עדיין אין אחד כזה.
                                                                                                                                                                                                                                                            • \n", "
                                                                                                                                                                                                                                                            " ] }, @@ -2073,7 +2066,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                            \n", " במחלקה ימומשו גם הפעולות הבאות:\n", "

                                                                                                                                                                                                                                                            " ] @@ -2082,13 +2075,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                            • hajime – מתחיל את הקרב. החל משלב זה אי אפשר להוסיף או להסיר שחקנים מהזירה.
                                                                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                                                                            • get_players – מחזירה את רשימת השחקנים בזירה.
                                                                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                                                                            • add_player – הוסף שחקן לזירה. אם הוא כבר בזירה או אם הקרב כבר התחיל, מחזירה False.
                                                                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                                                                            • remove_player – מקבלת שחקן ומסירה אותו מהזירה. אם הוא אינו בזירה או אם הקרב כבר התחיל, מחזירה False.
                                                                                                                                                                                                                                                            • \n", - "
                                                                                                                                                                                                                                                            • make_move – גורמת לשחקן שתורו כעת להפעיל פעולת attack ללא פרמטרים.
                                                                                                                                                                                                                                                              \n", - " אם הפעולה attack החזירה False, השחקן יבחר אויב חי אקראי מהזירה ויתקוף אותו.
                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                              • hajime – מתחיל את הקרב. החל משלב זה אי אפשר להוסיף או להסיר שחקנים מהזירה.
                                                                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                                                                              • get_players – מחזירה את רשימת השחקנים בזירה.
                                                                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                                                                              • add_player – הוסף שחקן לזירה. אם הוא כבר בזירה או אם הקרב כבר התחיל, מחזירה False.
                                                                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                                                                              • remove_player – מקבלת שחקן ומסירה אותו מהזירה. אם הוא אינו בזירה או אם הקרב כבר התחיל, מחזירה False.
                                                                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                                                                              • make_move – גורמת לשחקן שתורו כעת להפעיל פעולת attack ללא פרמטרים.
                                                                                                                                                                                                                                                                \n", + " אם הפעולה attack החזירה False, השחקן יבחר אויב חי אקראי מהזירה ויתקוף אותו.
                                                                                                                                                                                                                                                                \n", " בסוף הפעולה, התור מועבר לשחקן הבא.
                                                                                                                                                                                                                                                              • \n", "
                                                                                                                                                                                                                                                              " ] @@ -2097,9 +2090,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                              \n", - " ודאו שכל זמן שיש שחקנים בזירה, next_player מצביעה למופע של שחקן.
                                                                                                                                                                                                                                                              \n", - " אם אין שחקנים בזירה, בעת אתחול המחלקה למשל, שנו את ערכה של next_player ל־None.
                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                              \n", + " ודאו שכל זמן שיש שחקנים בזירה, next_player מצביעה למופע של שחקן.
                                                                                                                                                                                                                                                              \n", + " אם אין שחקנים בזירה, בעת אתחול המחלקה למשל, שנו את ערכה של next_player ל־None.
                                                                                                                                                                                                                                                              \n", "

                                                                                                                                                                                                                                                              " ] }, @@ -2107,14 +2100,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### רמות ונקודות ניסיון" + "#### רמות ונקודות ניסיון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                              \n", " כאשר שחקן א גורם לשחקן ב להיות מת ברובו, שחקן א יקבל מספר נקודות ניסיון לפי הנוסחה הבאה:\n", "

                                                                                                                                                                                                                                                              " ] @@ -2130,8 +2123,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                              \n", - " כאשר $L_{rival}$ היא הרמה של המת ברובו (שחקן ב), ו־$L_{player}$ היא הרמה של המנצח (שחקן א).
                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                              \n", + " כאשר $L_{rival}$ היא הרמה של המת ברובו (שחקן ב), ו־$L_{player}$ היא הרמה של המנצח (שחקן א).
                                                                                                                                                                                                                                                              \n", " אם השחקן מת לחלוטין ולא רק מת ברובו, השחקן שניצח אותו מקבל פי 2 נקודות ניסיון.\n", "

                                                                                                                                                                                                                                                              " ] @@ -2140,7 +2133,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                              \n", " מספר נקודות הניסיון שיש להשיג בסך הכול כדי להגיע לרמה $L$ הוא:\n", "

                                                                                                                                                                                                                                                              " ] @@ -2156,14 +2149,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### מתחילים לשחק" + "#### מתחילים לשחק" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                              \n", " ממשו סימולציית קרב:\n", "

                                                                                                                                                                                                                                                              " ] @@ -2172,13 +2165,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                              • צרו זירה שיכולה להכיל עד 4 משתתפים, וצרפו אליה מספר כזה של שחקנים. התחילו את הקרב.
                                                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                                                              • התורות במשחק עוברים משחקן אחד לשני, כך שבכל סיבוב כל אחד מהשחקנים החיים משחק פעם אחת.
                                                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                                                              • אם השחקן מת ברובו – הוא יעשה revive כשיגיע תורו, ויתקוף מייד אחר כך. החייאה לא עולה תור.
                                                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                                                              • כל שחקן יכול למות ברובו עד פעמיים – ובפעם השלישית שהוא מת הוא נחשב מת לחלוטין.
                                                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                                                              • אם השחקן מת לחלוטין, פעולת revive על השחקן תחזיר False, תורות לא יעברו אליו ושחקנים לא יתקיפו אותו.
                                                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                                                              • כאשר נשאר בזירה רק שחקן חי אחד – הוא מוכתר כמנצח של הזירה.
                                                                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                • צרו זירה שיכולה להכיל עד 4 משתתפים, וצרפו אליה מספר כזה של שחקנים. התחילו את הקרב.
                                                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                                                • התורות במשחק עוברים משחקן אחד לשני, כך שבכל סיבוב כל אחד מהשחקנים החיים משחק פעם אחת.
                                                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                                                • אם השחקן מת ברובו – הוא יעשה revive כשיגיע תורו, ויתקוף מייד אחר כך. החייאה לא עולה תור.
                                                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                                                • כל שחקן יכול למות ברובו עד פעמיים – ובפעם השלישית שהוא מת הוא נחשב מת לחלוטין.
                                                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                                                • אם השחקן מת לחלוטין, פעולת revive על השחקן תחזיר False, תורות לא יעברו אליו ושחקנים לא יתקיפו אותו.
                                                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                                                • כאשר נשאר בזירה רק שחקן חי אחד – הוא מוכתר כמנצח של הזירה.
                                                                                                                                                                                                                                                                • \n", "
                                                                                                                                                                                                                                                                " ] }, @@ -2186,8 +2179,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                \n", - " הרגישו נוח להוסיף רכיבים לכל אחת מהמחלקות שלכם.
                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                \n", + " הרגישו נוח להוסיף רכיבים לכל אחת מהמחלקות שלכם.
                                                                                                                                                                                                                                                                \n", " תכנון נכון של המחלקות יאפשר לכם לצלוח את התרגיל בקלות רבה יותר.\n", "

                                                                                                                                                                                                                                                                " ] diff --git a/week7/4_Summary.ipynb b/week7/4_Summary.ipynb index 9845aa1..aea16af 100644 --- a/week7/4_Summary.ipynb +++ b/week7/4_Summary.ipynb @@ -4,28 +4,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# תרגילים " + "# תרגילים " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## אין לזה צורה " + "## אין לזה צורה " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                \n", " בתרגיל זה נממש טיפוס חדש מסוג Rectangle, הבנוי משתי נקודות:\n", "

                                                                                                                                                                                                                                                                " ] @@ -34,9 +34,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                • נקודה הממוקמת בחלק השמאלי עליון של המלבן (נקודת ההתחלה start_point).
                                                                                                                                                                                                                                                                • \n", - "
                                                                                                                                                                                                                                                                • נקודה הממוקמת בחלק הימני תחתון של המלבן (נקודת הסיום end_point).
                                                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                  • נקודה הממוקמת בחלק השמאלי עליון של המלבן (נקודת ההתחלה start_point).
                                                                                                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                                                                                                  • נקודה הממוקמת בחלק הימני תחתון של המלבן (נקודת הסיום end_point).
                                                                                                                                                                                                                                                                  • \n", "
                                                                                                                                                                                                                                                                  " ] }, @@ -44,17 +44,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                  \n", " פעולות המלבן הן:\n", "

                                                                                                                                                                                                                                                                  \n", - "\n", - "
                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                  • get_surface – מחזירה את שטח המלבן.
                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                  • get_perimeter – מחזירה את היקף המלבן.
                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                  • randomize_start_point – מגרילה שני מספרים בין 1 ל־100 וקובעת אותם כ־x וכ־y של הנקודה השמאלית העליונה.
                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                  • randomize_end_point – מגרילה שני מספרים בין 1 ל־100 וקובעת אותם כ־x וכ־y של הנקודה הימנית התחתונה.
                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                  • filter_by_size – מקבלת רשימת מלבנים ושטח מינימלי של מלבן (threshold). מחזירה את רשימת כל המלבנים ששטחם הוא לפחות threshold.
                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                  • filter_by_perimeter – מקבלת רשימת מלבנים והיקף מינימלי של מלבן (threshold). מחזירה את רשימת כל המלבנים שהיקפם הוא לפחות threshold.
                                                                                                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                    • get_surface – מחזירה את שטח המלבן.
                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                    • get_perimeter – מחזירה את היקף המלבן.
                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                    • randomize_start_point – מגרילה שני מספרים בין 1 ל־100 וקובעת אותם כ־x וכ־y של הנקודה השמאלית העליונה.
                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                    • randomize_end_point – מגרילה שני מספרים בין 1 ל־100 וקובעת אותם כ־x וכ־y של הנקודה הימנית התחתונה.
                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                    • filter_by_size – מקבלת רשימת מלבנים ושטח מינימלי של מלבן (threshold). מחזירה את רשימת כל המלבנים ששטחם הוא לפחות threshold.
                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                    • filter_by_perimeter – מקבלת רשימת מלבנים והיקף מינימלי של מלבן (threshold). מחזירה את רשימת כל המלבנים שהיקפם הוא לפחות threshold.
                                                                                                                                                                                                                                                                    • \n", "
                                                                                                                                                                                                                                                                    " ] }, @@ -62,10 +61,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - " הדפסת מופע של המלבן צריכה להיראות כך:
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + " הדפסת מופע של המלבן צריכה להיראות כך:
                                                                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                                                                    \n", - "

                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", "### Rectangle ###\n", "My Width: 10\n", "My Height: 10\n", @@ -79,9 +78,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - " נוסף על הפעולות שהוזכרו מעלה, כתבו פעולה של המחלקה בשם rand_rects המגרילה מספר בין 1 ל־50.
                                                                                                                                                                                                                                                                    \n", - " צרו רשימה המכילה מספר מלבנים בהתאם למספר שהוגרל, ועבור כל מלבן הגרילו נקודות על ידי שימוש בפעולות המתאימות.
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + " נוסף על הפעולות שהוזכרו מעלה, כתבו פעולה של המחלקה בשם rand_rects המגרילה מספר בין 1 ל־50.
                                                                                                                                                                                                                                                                    \n", + " צרו רשימה המכילה מספר מלבנים בהתאם למספר שהוגרל, ועבור כל מלבן הגרילו נקודות על ידי שימוש בפעולות המתאימות.
                                                                                                                                                                                                                                                                    \n", " את כל הצורות הנ\"ל הכניסו לרשימה, והדפיסו את כל הצורות ששטחן גדול מ־900 והיקפן גדול מ־30.

                                                                                                                                                                                                                                                                    " ] }, @@ -89,29 +88,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## חנות הקומדי " + "## חנות הקומדי " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    בחנות הקומדי יש פריטים (items), ולכל פריט יש מחיר המופיע במחירון שהחנות מחזיקה.
                                                                                                                                                                                                                                                                    \n", - " החנות מחזיקה מלאי מכל מוצר, שחלקו מוצב על המדפים וחלקו במחסן.
                                                                                                                                                                                                                                                                    \n", - " לחנות יש יתרת מזומנים (balance) שמתעדכנת בהתאם לקניות של הלקוחות ובהתאם לרכש שהחנות מבצעת עבור המלאי.
                                                                                                                                                                                                                                                                    \n", - " כתבו מחלקה המייצגת את החנות ובה המתודות הבאות:
                                                                                                                                                                                                                                                                    \n", - "

                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                    • checkout – מקבלת רשימת פריטים לרכישה המיוצגים על ידי מחרוזות, ומחזירה את הסכום לתשלום.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      בחנות הקומדי יש פריטים (items), ולכל פריט יש מחיר המופיע במחירון שהחנות מחזיקה.
                                                                                                                                                                                                                                                                      \n", + " החנות מחזיקה מלאי מכל מוצר, שחלקו מוצב על המדפים וחלקו במחסן.
                                                                                                                                                                                                                                                                      \n", + " לחנות יש יתרת מזומנים (balance) שמתעדכנת בהתאם לקניות של הלקוחות ובהתאם לרכש שהחנות מבצעת עבור המלאי.
                                                                                                                                                                                                                                                                      \n", + " כתבו מחלקה המייצגת את החנות ובה המתודות הבאות:
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                                                      • checkout – מקבלת רשימת פריטים לרכישה המיוצגים על ידי מחרוזות, ומחזירה את הסכום לתשלום.
                                                                                                                                                                                                                                                                        \n", " החנות לא מאפשרת מכירה של פריטים שלא נמצאים ברשימת הפריטים בחנות.
                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                      • purchase - מקבלת רשימת פריטים לרכישה וסכום כסף מהלקוח. מבצעת את הקנייה (מעדכנת מלאים ויתרה).
                                                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                                                      • purchase - מקבלת רשימת פריטים לרכישה וסכום כסף מהלקוח. מבצעת את הקנייה (מעדכנת מלאים ויתרה).
                                                                                                                                                                                                                                                                        \n", " שימו לב שאפשר לרכוש רק אם הפריטים נמצאים במלאי על המדפים. הפעולה תחזיר עודף ללקוח במידת הצורך, ולא תבצע את הקנייה אם התשלום לא מספיק.
                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                      • refill – מעדכנת את המלאי במדפים מתוך המלאי במחסן. החנות יכולה להחזיק על המדף לכל היותר 10 פריטים מכל סוג.
                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                      • restock – מבצעת קנייה של סחורה מהספק. מחיר הרכישה של כל פריט מהספק הוא חצי מהמחיר ללקוח.
                                                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                                                      • refill – מעדכנת את המלאי במדפים מתוך המלאי במחסן. החנות יכולה להחזיק על המדף לכל היותר 10 פריטים מכל סוג.
                                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                                      • restock – מבצעת קנייה של סחורה מהספק. מחיר הרכישה של כל פריט מהספק הוא חצי מהמחיר ללקוח.
                                                                                                                                                                                                                                                                        \n", " הפעולה תעדכן את המלאי במחסן ותחסיר את סכום הכסף המתאים מיתרת המזומנים של החנות.
                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                      • end_of_day – מבצעת סגירת קופה.
                                                                                                                                                                                                                                                                        \n", - " מוודאת שהחשבון הנוכחי תואם לכל ההכנסות וההוצאות שהיו ב־12 השעות האחרונות ותואם את שווי המלאים, כדי לוודא שלא נגנבו פריטים.
                                                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                                                      • end_of_day – מבצעת סגירת קופה.
                                                                                                                                                                                                                                                                        \n", + " מוודאת שהחשבון הנוכחי תואם לכל ההכנסות וההוצאות שהיו ב־12 השעות האחרונות ותואם את שווי המלאים, כדי לוודא שלא נגנבו פריטים.
                                                                                                                                                                                                                                                                        \n", " הפעולה תדפיס דוח של כל התנועות שבוצעו לאורך התקופה – הוצאות והכנסות, הן של מלאי והן של כסף.
                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                                                                    " ] }, @@ -119,14 +118,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מגדל קוביות " + "## מגדל קוביות " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", "בתרגיל זה נממש שלוש מחלקות: מחלקה של ריבוע, מחלקה של קוביות ומחלקה של מגדל קוביות.

                                                                                                                                                                                                                                                                    " ] }, @@ -134,17 +133,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ריבוע " + "### ריבוע " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - " ממשו את מחלקת ריבוע, Square.
                                                                                                                                                                                                                                                                    \n", - " פעולת האתחול של המחלקה תקבל פרמטר של אורך, שהוא אורך הצלע של הריבוע.
                                                                                                                                                                                                                                                                    \n", - " כפי שוודאי ידוע לכם, בריבוע כל הצלעות זהות באורכן.
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + " ממשו את מחלקת ריבוע, Square.
                                                                                                                                                                                                                                                                    \n", + " פעולת האתחול של המחלקה תקבל פרמטר של אורך, שהוא אורך הצלע של הריבוע.
                                                                                                                                                                                                                                                                    \n", + " כפי שוודאי ידוע לכם, בריבוע כל הצלעות זהות באורכן.
                                                                                                                                                                                                                                                                    \n", " ממשו גם את הפעולות get_surface ו־get_perimeter של שטח והיקף כפי שעשיתם בתרגיל הקודם.\n", "

                                                                                                                                                                                                                                                                    " ] @@ -153,15 +152,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### קובייה " + "### קובייה " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - "לקובייה יש בסיס (base) שהוא ריבוע, וצבע (color) שהוא צבע הקובייה. הצבע יכול להיות שחור או לבן.
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + "לקובייה יש בסיס (base) שהוא ריבוע, וצבע (color) שהוא צבע הקובייה. הצבע יכול להיות שחור או לבן.
                                                                                                                                                                                                                                                                    \n", "ממשו את מחלקת הקובייה, ודאגו להוסיף לה פעולות לחישוב הנפח (get_volume) ושטח המעטפת (get_surface).

                                                                                                                                                                                                                                                                    " ] }, @@ -169,10 +168,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", " הדפסת הקובייה צריכה להיראות כך:\n", "

                                                                                                                                                                                                                                                                    \n", - "

                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", "Cube: base-10x10 color:black\n", "

                                                                                                                                                                                                                                                                    " ] @@ -181,15 +180,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מגדל הקוביות " + "### מגדל הקוביות " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - "מגדל הקוביות שלנו מכיל רשימת קוביות שמהן הוא מורכב. כשנאתחל את מגדל הקוביות הוא תמיד יכיל 0 קוביות.
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + "מגדל הקוביות שלנו מכיל רשימת קוביות שמהן הוא מורכב. כשנאתחל את מגדל הקוביות הוא תמיד יכיל 0 קוביות.
                                                                                                                                                                                                                                                                    \n", "קובייה יכולה להיות מעל קובייה אחרת רק אם הקובייה התחתונה היא בעלת בסיס עם צלע ארוכה יותר, ורק אם צבעה שונה.\n", "

                                                                                                                                                                                                                                                                    " ] @@ -198,18 +197,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", "הדפסה של מגדל הקוביות תיראה כך:\n", "

                                                                                                                                                                                                                                                                    \n", - "

                                                                                                                                                                                                                                                                    \n", - "2-Cube: base-10x10 color:black
                                                                                                                                                                                                                                                                    1-Cube: base-15x15 color:white
                                                                                                                                                                                                                                                                    \n" + "

                                                                                                                                                                                                                                                                    \n", + "2-Cube: base-10x10 color:black
                                                                                                                                                                                                                                                                    1-Cube: base-15x15 color:white
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", " ממשו מחלקה בשם CubeTower המייצגת את מגדל הקוביות.\n", "

                                                                                                                                                                                                                                                                    " ] @@ -218,8 +218,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - " הוסיפו למחלקה פעולה בשם add_cube שמקבלת קובייה ומניחה אותה בראש המגדל אם התנאים שהוזכרו מתקיימים, אחרת לא עושה כלום.
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + " הוסיפו למחלקה פעולה בשם add_cube שמקבלת קובייה ומניחה אותה בראש המגדל אם התנאים שהוזכרו מתקיימים, אחרת לא עושה כלום.
                                                                                                                                                                                                                                                                    \n", " אם זו הקובייה הראשונה במגדל אפשר להניח אותה ללא שום תנאי.\n", "

                                                                                                                                                                                                                                                                    " ] @@ -228,9 +228,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - " הוסיפו פעולה נוספת בשם randomize_tower שבוחרת מספר שלם בין 1 ל־100, נקרא לו $N$.
                                                                                                                                                                                                                                                                    \n", - " הפעולה תיצור $N$ קוביות שלהן צלע באורך אקראי (עליכם להגריל אורך בין 1 ל־100), שצבען הוא שחור או לבן (בחרו באקראיות).
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + " הוסיפו פעולה נוספת בשם randomize_tower שבוחרת מספר שלם בין 1 ל־100, נקרא לו $N$.
                                                                                                                                                                                                                                                                    \n", + " הפעולה תיצור $N$ קוביות שלהן צלע באורך אקראי (עליכם להגריל אורך בין 1 ל־100), שצבען הוא שחור או לבן (בחרו באקראיות).
                                                                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                                                                    " ] }, @@ -238,8 +238,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - " צרו בלולאה 1,000 מגדלים ומלאו אותם בקוביות באמצעות המתודה המגרילה.
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + " צרו בלולאה 1,000 מגדלים ומלאו אותם בקוביות באמצעות המתודה המגרילה.
                                                                                                                                                                                                                                                                    \n", " מהו המגדל הגבוה ביותר שקיבלתם?\n", "

                                                                                                                                                                                                                                                                    " ] @@ -248,22 +248,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## נקמת הסט" + "## נקמת הסט" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### חלק 1" + "### חלק 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - " ממשו משחק סט סטנדרטי.
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + " ממשו משחק סט סטנדרטי.
                                                                                                                                                                                                                                                                    \n", " המשחק יציג למשתמש 12 קלפי סט מתוך חפיסה מעורבבת של 81 קלפים, ויאפשר למשתמש לבחור אילו 3 קלפים מייצגים סט.\n", "

                                                                                                                                                                                                                                                                    " ] @@ -272,12 +272,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", - " אם בחר המשתמש סט תקין, החליפו את שלושת הקלפים שבחר בקלפים הבאים בחפיסה.
                                                                                                                                                                                                                                                                    \n", - " אם בחר סט שגוי, הדפיסו הודעת שגיאה.
                                                                                                                                                                                                                                                                    \n", - " אם אי אפשר להרכיב סט מהקלפים שנפתחו, החזירו את הקלפים לחפיסה, טרפו אותה ופתחו 12 קלפים חדשים.
                                                                                                                                                                                                                                                                    \n", - " בכל שלב, אם אין בחפיסה די קלפים לפתיחה – פתחו את הקלפים שנותרו בחפיסה.
                                                                                                                                                                                                                                                                    \n", - " השחקן ניצח כאשר אי אפשר ליצור יותר סטים מהקלפים הנמצאים בחפיסה.
                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", + " אם בחר המשתמש סט תקין, החליפו את שלושת הקלפים שבחר בקלפים הבאים בחפיסה.
                                                                                                                                                                                                                                                                    \n", + " אם בחר סט שגוי, הדפיסו הודעת שגיאה.
                                                                                                                                                                                                                                                                    \n", + " אם אי אפשר להרכיב סט מהקלפים שנפתחו, החזירו את הקלפים לחפיסה, טרפו אותה ופתחו 12 קלפים חדשים.
                                                                                                                                                                                                                                                                    \n", + " בכל שלב, אם אין בחפיסה די קלפים לפתיחה – פתחו את הקלפים שנותרו בחפיסה.
                                                                                                                                                                                                                                                                    \n", + " השחקן ניצח כאשר אי אפשר ליצור יותר סטים מהקלפים הנמצאים בחפיסה.
                                                                                                                                                                                                                                                                    \n", " שימו לב שכאשר נותרו 21 קלפים, בהכרח ישנם 3 קלפים מתוכם שמרכיבים סט.\n", "

                                                                                                                                                                                                                                                                    " ] @@ -286,7 +286,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                    \n", " השתמשו במחלקות.\n", "

                                                                                                                                                                                                                                                                    " ] @@ -295,19 +295,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### חלק 2" + "### חלק 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                    1. השתמשו בספרייה חיצונית כדי להדפיס למשתמש את הקלפים בצורה צבעונית.
                                                                                                                                                                                                                                                                    2. \n", - "
                                                                                                                                                                                                                                                                    3. ממשו מצב \"פרנזי\" שבו יש זמן מוקצב של 3 דקות למציאת כמה שיותר סטים.
                                                                                                                                                                                                                                                                      \n", - " החוקים זהים לחוקים של משחק סט רגיל, רק שהפעם בכל פעם שמוצאים סט, הוא מתווסף חזרה לחפיסה, החפיסה מתערבבת ונפתחים שלושה קלפים חדשים.
                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                                                      1. השתמשו בספרייה חיצונית כדי להדפיס למשתמש את הקלפים בצורה צבעונית.
                                                                                                                                                                                                                                                                      2. \n", + "
                                                                                                                                                                                                                                                                      3. ממשו מצב \"פרנזי\" שבו יש זמן מוקצב של 3 דקות למציאת כמה שיותר סטים.
                                                                                                                                                                                                                                                                        \n", + " החוקים זהים לחוקים של משחק סט רגיל, רק שהפעם בכל פעם שמוצאים סט, הוא מתווסף חזרה לחפיסה, החפיסה מתערבבת ונפתחים שלושה קלפים חדשים.
                                                                                                                                                                                                                                                                        \n", " מציאה של סט מוסיפה 5 שניות לשעון.
                                                                                                                                                                                                                                                                      4. \n", - "
                                                                                                                                                                                                                                                                      5. ממשו לוח ניקוד עבור מצב הפרנזי. השתמשו בקבצים כדי לשמור את שם המשתתף, הניקוד שלו והתאריך שבו הוא השיג את הניקוד.
                                                                                                                                                                                                                                                                      6. \n", + "
                                                                                                                                                                                                                                                                      7. ממשו לוח ניקוד עבור מצב הפרנזי. השתמשו בקבצים כדי לשמור את שם המשתתף, הניקוד שלו והתאריך שבו הוא השיג את הניקוד.
                                                                                                                                                                                                                                                                      8. \n", "
                                                                                                                                                                                                                                                                      " ] } diff --git a/week8/1_Inheritance.ipynb b/week8/1_Inheritance.ipynb index f3b8b19..62b3ee3 100644 --- a/week8/1_Inheritance.ipynb +++ b/week8/1_Inheritance.ipynb @@ -4,28 +4,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# ירושה" + "# ירושה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " בשבוע שעבר למדנו מה הן מחלקות, וסקרנו טכניקות שונות הנוגעות לכתיבת קוד בעזרתן.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -34,11 +34,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " למדנו כיצד ליצור מחלקה, שהיא בעצם תבנית שמתארת את התכונות ואת הפעולות השייכות לכל מופע שנוצר ממנה.
                                                                                                                                                                                                                                                                      \n", - " הסברנו מהי פעולת אתחול (__init__), שרצה מייד עם יצירתו של מופע חדש, ודיברנו על פעולות קסם נוספות.
                                                                                                                                                                                                                                                                      \n", - " ראינו כיצד מגדירים משתני מחלקה, כאלו שמשותפים לכל המופעים,
                                                                                                                                                                                                                                                                      \n", - " ודיברנו גם על תכונות ופעולות פרטיות ומוגנות, טכניקה שמאפשרת לנו להחליט אילו תכונות ופעולות אנחנו חושפים למשתמשים שלנו.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " למדנו כיצד ליצור מחלקה, שהיא בעצם תבנית שמתארת את התכונות ואת הפעולות השייכות לכל מופע שנוצר ממנה.
                                                                                                                                                                                                                                                                      \n", + " הסברנו מהי פעולת אתחול (__init__), שרצה מייד עם יצירתו של מופע חדש, ודיברנו על פעולות קסם נוספות.
                                                                                                                                                                                                                                                                      \n", + " ראינו כיצד מגדירים משתני מחלקה, כאלו שמשותפים לכל המופעים,
                                                                                                                                                                                                                                                                      \n", + " ודיברנו גם על תכונות ופעולות פרטיות ומוגנות, טכניקה שמאפשרת לנו להחליט אילו תכונות ופעולות אנחנו חושפים למשתמשים שלנו.
                                                                                                                                                                                                                                                                      \n", " לסיום, דיברנו גם על רעיון ההכלה, שמאפשר לנו להשתמש במופעי מחלקה אחת בתוך מופעים של מחלקה אחרת. \n", "

                                                                                                                                                                                                                                                                      " ] @@ -47,7 +47,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " השבוע נרחיב את ארגז הכלים שלנו, ונדבר על רעיונות נוספים שקשורים לעולם המחלקות.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -56,16 +56,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אתר השירים" + "### אתר השירים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " השבוע נתמקד ביצירת אתר השירים החדש והנוצץ \"שירומת\".
                                                                                                                                                                                                                                                                      \n", - " נתחיל בכתיבת מחלקה המייצגת שיר עבור האתר.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " השבוע נתמקד ביצירת אתר השירים החדש והנוצץ \"שירומת\".
                                                                                                                                                                                                                                                                      \n", + " נתחיל בכתיבת מחלקה המייצגת שיר עבור האתר.
                                                                                                                                                                                                                                                                      \n", "

                                                                                                                                                                                                                                                                      " ] }, @@ -73,11 +73,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " לכל שיר יש שם, מילים ורשימת יוצרים.
                                                                                                                                                                                                                                                                      \n", - " כדי לנהל את רשימת היוצרים, צרו את הפעולות add_artist ו־remove_artist שיוסיפו ויסירו אומנים בהתאמה.
                                                                                                                                                                                                                                                                      \n", - " לשיר תהיה גם פעולה שנקראת count_words שתחזיר את מספר המילים בשיר.
                                                                                                                                                                                                                                                                      \n", - " כמו כן, לכל שיר יהיה מונה שיספור כמה פעמים הוא הודפס.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " לכל שיר יש שם, מילים ורשימת יוצרים.
                                                                                                                                                                                                                                                                      \n", + " כדי לנהל את רשימת היוצרים, צרו את הפעולות add_artist ו־remove_artist שיוסיפו ויסירו אומנים בהתאמה.
                                                                                                                                                                                                                                                                      \n", + " לשיר תהיה גם פעולה שנקראת count_words שתחזיר את מספר המילים בשיר.
                                                                                                                                                                                                                                                                      \n", + " כמו כן, לכל שיר יהיה מונה שיספור כמה פעמים הוא הודפס.
                                                                                                                                                                                                                                                                      \n", "

                                                                                                                                                                                                                                                                      " ] }, @@ -85,7 +85,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " הדפסת שיר תיראה כך:\n", "

                                                                                                                                                                                                                                                                      " ] @@ -114,21 +114,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                      \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                      \n", - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                      \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " נסו לממש את מחלקת השיר בעצמכם. \n", "

                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                      \n", - "

                                                                                                                                                                                                                                                                      \n", - " חשוב!
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + "חשוב!
                                                                                                                                                                                                                                                                      \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                      \n", "
                                                                                                                                                                                                                                                                      " ] }, @@ -136,7 +136,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " נציג את הפתרון, ונסביר את המימוש מייד לאחר מכן:\n", "

                                                                                                                                                                                                                                                                      " ] @@ -244,9 +244,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " פעולת ה־__init__ של המחלקה Song מגדירה את השם ואת הליריקה של השיר.
                                                                                                                                                                                                                                                                      \n", - " היא גם מאתחלת את מספר הצפיות בשיר ל־0, ויוצרת את רשימת האומנים של השיר.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " פעולת ה־__init__ של המחלקה Song מגדירה את השם ואת הליריקה של השיר.
                                                                                                                                                                                                                                                                      \n", + " היא גם מאתחלת את מספר הצפיות בשיר ל־0, ויוצרת את רשימת האומנים של השיר.
                                                                                                                                                                                                                                                                      \n", "

                                                                                                                                                                                                                                                                      " ] }, @@ -254,9 +254,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " כדי להקל על המשתמש במחלקה, אפשרנו להעביר את שמות האומנים כרשימה, כמחרוזת מופרדת בפסיקים, או לא להכניס אומנים כלל.
                                                                                                                                                                                                                                                                      \n", - " עיבוד השמות לכדי צורה אחידה, רשימה של מחרוזות, יתבצע בפעולה _reformat_artists, שתחליט כיצד לפעול לפי סוג המשתנה:
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " כדי להקל על המשתמש במחלקה, אפשרנו להעביר את שמות האומנים כרשימה, כמחרוזת מופרדת בפסיקים, או לא להכניס אומנים כלל.
                                                                                                                                                                                                                                                                      \n", + " עיבוד השמות לכדי צורה אחידה, רשימה של מחרוזות, יתבצע בפעולה _reformat_artists, שתחליט כיצד לפעול לפי סוג המשתנה:
                                                                                                                                                                                                                                                                      \n", " אם הועברה לפרמטר האומנים מחרוזת, נשלח אותה ל־_listify_artists_from_string שתיצור מהם רשימה. אם הועבר None, נחזיר רשימה ריקה.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -265,8 +265,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " הפעולה count_words מפצלת את מילות השיר לרשימה, ומחזירה את מספר האיברים ברשימה.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " הפעולה count_words מפצלת את מילות השיר לרשימה, ומחזירה את מספר האיברים ברשימה.
                                                                                                                                                                                                                                                                      \n", "

                                                                                                                                                                                                                                                                      " ] }, @@ -274,7 +274,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " בקריאה ל־__str__ אנחנו מגדילים את ערכה של התכונה _views ב־1. כך נספור את הפעמים שביקשו להדפיס שיר. \n", "

                                                                                                                                                                                                                                                                      " ] @@ -283,15 +283,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אקרוסטיכון" + "### אקרוסטיכון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " אקרוסטיכון, כזכור לנו משבועות קודמים, הוא שיר ששרשור האות הראשונה של כל שורה בו יוצר ביטוי קריא.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " אקרוסטיכון, כזכור לנו משבועות קודמים, הוא שיר ששרשור האות הראשונה של כל שורה בו יוצר ביטוי קריא.
                                                                                                                                                                                                                                                                      \n", " כחלק מהטכנולוגיה המשוכללת של \"שירומת\", נרצה ליצור מחלקה שמייצגת אקרוסטיכון.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -300,10 +300,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " כשחושבים על זה, אקרוסטיכון הוא סוג של שיר, כך שתכונות המחלקה ופעולות המחלקה אמורות להיות זהות לאלו של Song.
                                                                                                                                                                                                                                                                      \n", - " למעשה, בבואנו לבנות את מחלקת האקרוסטיכון Acrostic נגלה במהרה שהיא העתק מדויק כמעט של מחלקת Song שכבר כתבנו.
                                                                                                                                                                                                                                                                      \n", - " חסרה לנו רק הפעולה get_acrostic, נניח, שתחזיר לנו את האקרוסטיכון שנמצא בשיר.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " כשחושבים על זה, אקרוסטיכון הוא סוג של שיר, כך שתכונות המחלקה ופעולות המחלקה אמורות להיות זהות לאלו של Song.
                                                                                                                                                                                                                                                                      \n", + " למעשה, בבואנו לבנות את מחלקת האקרוסטיכון Acrostic נגלה במהרה שהיא העתק מדויק כמעט של מחלקת Song שכבר כתבנו.
                                                                                                                                                                                                                                                                      \n", + " חסרה לנו רק הפעולה get_acrostic, נניח, שתחזיר לנו את האקרוסטיכון שנמצא בשיר.
                                                                                                                                                                                                                                                                      \n", " בהינתן המצב הזה, איך יהיה נכון לכתוב את מחלקת אקרוסטיכון?\n", "

                                                                                                                                                                                                                                                                      " ] @@ -312,11 +312,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " הפתרון הראשון שקופץ לראש הוא פשוט להוסיף למחלקה Song את הפעולה \"get_acrostic\".
                                                                                                                                                                                                                                                                      \n", - " זה, כמובן, לא מתאים כל כך.
                                                                                                                                                                                                                                                                      \n", - " ברוב השירים אין אקרוסטיכון, והפעולה הזו לא מתאימה להם ולא שייכת למחלקה הכללית יותר, Song.
                                                                                                                                                                                                                                                                      \n", - " הוספת הפעולה למחלקה Song גם תיצור עומס מיותר במחלקה – מה יקרה כשנרצה לתמוך בחמשירים? או בשירים מעגליים?
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " הפתרון הראשון שקופץ לראש הוא פשוט להוסיף למחלקה Song את הפעולה \"get_acrostic\".
                                                                                                                                                                                                                                                                      \n", + " זה, כמובן, לא מתאים כל כך.
                                                                                                                                                                                                                                                                      \n", + " ברוב השירים אין אקרוסטיכון, והפעולה הזו לא מתאימה להם ולא שייכת למחלקה הכללית יותר, Song.
                                                                                                                                                                                                                                                                      \n", + " הוספת הפעולה למחלקה Song גם תיצור עומס מיותר במחלקה – מה יקרה כשנרצה לתמוך בחמשירים? או בשירים מעגליים?
                                                                                                                                                                                                                                                                      \n", " עד מהרה כל מופע יכלול פעולות רבות שלא קשורות אליו, והשימוש במחלקה יהפוך מסורבל מאוד.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -325,11 +325,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " הפתרון השני, אם כך, הוא להעתיק את הקוד של מחלקת Song וליצור מחלקה כמעט זהה בשם Acrostic.
                                                                                                                                                                                                                                                                      \n", - " במחלקה יהיו בדיוק כל התכונות והפעולות שנמצאות תחת Song, וכן את הפעולה \"get_acrostic\".
                                                                                                                                                                                                                                                                      \n", - " במקרה הזה מדובר בשכפול קוד – כך שנראה שאף פתרון זה אינו מושלם.
                                                                                                                                                                                                                                                                      \n", - " בכל פעם שנרצה לשנות משהו במחלקה Song נצטרך לשנות את שתי המחלקות,
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " הפתרון השני, אם כך, הוא להעתיק את הקוד של מחלקת Song וליצור מחלקה כמעט זהה בשם Acrostic.
                                                                                                                                                                                                                                                                      \n", + " במחלקה יהיו בדיוק כל התכונות והפעולות שנמצאות תחת Song, וכן את הפעולה \"get_acrostic\".
                                                                                                                                                                                                                                                                      \n", + " במקרה הזה מדובר בשכפול קוד – כך שנראה שאף פתרון זה אינו מושלם.
                                                                                                                                                                                                                                                                      \n", + " בכל פעם שנרצה לשנות משהו במחלקה Song נצטרך לשנות את שתי המחלקות,
                                                                                                                                                                                                                                                                      \n", " ועד מהרה פעולת התחזוקה של הקוד הכפול תהפוך להיות מפרכת, לא נעימה ומקור לבאגים נוראיים.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -338,8 +338,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " נסכם: אנחנו מחפשים מנגנון או טכניקה שיאפשרו לנו לשכפל את התכונות והפעולות של מחלקה אחת למחלקה אחרת.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " נסכם: אנחנו מחפשים מנגנון או טכניקה שיאפשרו לנו לשכפל את התכונות והפעולות של מחלקה אחת למחלקה אחרת.
                                                                                                                                                                                                                                                                      \n", " השכפול צריך להשאיר את המחלקה המקורית עובדת ועצמאית, וליצור מחלקה חדשה עם תכונות ופעולות שזהות לאלו של המחלקה המקורית.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -348,16 +348,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הטכניקה" + "## הטכניקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " הפתרון לבעיה שתיארנו בהקדמה נקרא \"ירושה\".
                                                                                                                                                                                                                                                                      \n", - " נגדיר מחלקת Acrostic ריקה, שיורשת ממחלקת Song.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " הפתרון לבעיה שתיארנו בהקדמה נקרא \"ירושה\".
                                                                                                                                                                                                                                                                      \n", + " נגדיר מחלקת Acrostic ריקה, שיורשת ממחלקת Song.
                                                                                                                                                                                                                                                                      \n", " כשאנחנו אומרים דבר כזה, אנחנו מתכוונים שהמחלקה הריקה Acrostic תקבל את כל התכונות והפעולות שנמצאות בתוך מחלקת Song.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -366,15 +366,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### התחביר" + "### התחביר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " התחביר של ירושה הוא פשוט:
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " התחביר של ירושה הוא פשוט:
                                                                                                                                                                                                                                                                      \n", " בסוף השורה שבה אנחנו מגדירים את המחלקה וקובעים את שמה, נוסיף סוגריים שבהם נציין את שם המחלקה שממנה אנחנו רוצים לרשת.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -393,9 +393,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " וכמו קסם, בעזרת שורה אחת פשוטה שכפלנו את התכונות והפעולות של מחלקת Song.
                                                                                                                                                                                                                                                                      \n", - " ניצור מופע חדש של אקרוסטיכון בדיוק באותה הצורה שבה יצרנו מופע של שיר, רק שהפעם נשתמש במחלקת Acrostic במקום במחלקת Song.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " וכמו קסם, בעזרת שורה אחת פשוטה שכפלנו את התכונות והפעולות של מחלקת Song.
                                                                                                                                                                                                                                                                      \n", + " ניצור מופע חדש של אקרוסטיכון בדיוק באותה הצורה שבה יצרנו מופע של שיר, רק שהפעם נשתמש במחלקת Acrostic במקום במחלקת Song.
                                                                                                                                                                                                                                                                      \n", " זה אפשרי כיוון ש־Acrostic ירשה את פעולת __init__ של Song. \n", "

                                                                                                                                                                                                                                                                      " ] @@ -446,9 +446,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " בדוגמה שלמעלה ראינו כיצד יוצרים מופע חדש של שיר בעזרת המחלקה Acrostic.
                                                                                                                                                                                                                                                                      \n", - " כשמחלקה יורשת ממחלקה אחרת, אפשר להתייחס למחלקה היורשת כאילו כל התכונות של מחלקת־העל (superclass), המחלקה שממנה היא יורשת, הועתקו אליה.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " בדוגמה שלמעלה ראינו כיצד יוצרים מופע חדש של שיר בעזרת המחלקה Acrostic.
                                                                                                                                                                                                                                                                      \n", + " כשמחלקה יורשת ממחלקה אחרת, אפשר להתייחס למחלקה היורשת כאילו כל התכונות של מחלקת־העל (superclass), המחלקה שממנה היא יורשת, הועתקו אליה.
                                                                                                                                                                                                                                                                      \n", "

                                                                                                                                                                                                                                                                      " ] }, @@ -457,8 +457,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                      \n", - " \"בתמונה\n", - "
                                                                                                                                                                                                                                                                      המחלקה Acrostic יורשת מהמחלקה Song.
                                                                                                                                                                                                                                                                      פנייה לפעולה או לתכונה של המחלקה Acrostic הריקה, תפנה את הבקשה למחלקת־העל Song שממנה Acrostic יורשת.
                                                                                                                                                                                                                                                                      \n", + "\"בתמונה\n", + "
                                                                                                                                                                                                                                                                      המחלקה Acrostic יורשת מהמחלקה Song.
                                                                                                                                                                                                                                                                      פנייה לפעולה או לתכונה של המחלקה Acrostic הריקה, תפנה את הבקשה למחלקת־העל Song שממנה Acrostic יורשת.
                                                                                                                                                                                                                                                                      \n", "
                                                                                                                                                                                                                                                                      " ] }, @@ -466,8 +466,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " כיוון ש־Acrostic ירשה את כל הפעולות ממחלקת־העל שלה, Song, ובהן גם את הפעולה __init__,
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " כיוון ש־Acrostic ירשה את כל הפעולות ממחלקת־העל שלה, Song, ובהן גם את הפעולה __init__,
                                                                                                                                                                                                                                                                      \n", " יצירת מופע חדש באמצעות קריאה ל־Acrostic קוראת למעשה לפעולה Song.__init__.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -476,7 +476,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " פייתון לא מסתפקת בזה, ומעתיקה עבורנו גם את התיעוד של מחלקת־העל ושל הפעולות שבה:\n", "

                                                                                                                                                                                                                                                                      " ] @@ -494,9 +494,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " ירושה מאפשרת לנו להוסיף בקלות פעולות ל־Acrostic, מעבר לאלו שהיא ירשה ממחלקת Song.
                                                                                                                                                                                                                                                                      \n", - " כדי לעשות זאת, פשוט נגדיר את הפעולה הרלוונטית במחלקה היורשת.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " ירושה מאפשרת לנו להוסיף בקלות פעולות ל־Acrostic, מעבר לאלו שהיא ירשה ממחלקת Song.
                                                                                                                                                                                                                                                                      \n", + " כדי לעשות זאת, פשוט נגדיר את הפעולה הרלוונטית במחלקה היורשת.
                                                                                                                                                                                                                                                                      \n", " נממש את הפעולה שלשמה התחלנו את כל העניין, get_acrostic, שתשרשר את האות הראשונה מכל שורה בשיר:\n", "

                                                                                                                                                                                                                                                                      " ] @@ -518,7 +518,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " הפעולה get_acrostic אוספת את האות הראשונה מכל שורה, אם קיימת כזו, ומאחדת את כל האותיות שנאספו למחרוזת אחת:\n", "

                                                                                                                                                                                                                                                                      " ] @@ -537,7 +537,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " שימו לב - אומנם הפעולה קיימת במחלקה Acrostic, אך אין זה אומר שהיא קיימת במחלקה Song:\n", "

                                                                                                                                                                                                                                                                      " ] @@ -556,7 +556,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " נוכל לראות שפייתון מבינה שמופע שנוצר מ־Acrostic הוא גם Acrostic, אבל הוא גם Song:\n", "

                                                                                                                                                                                                                                                                      " ] @@ -576,7 +576,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " אבל לא להפך:\n", "

                                                                                                                                                                                                                                                                      " ] @@ -596,9 +596,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", - " מכאן שירושה היא חד־כיוונית: המחלקה היורשת מקבלת את כל התכונות והפעולות של מחלקת־העל, אבל לא להפך.
                                                                                                                                                                                                                                                                      \n", - " אם מחלקה א יורשת ממחלקה ב, מופע שנוצר ממחלקה א יכול להשתמש בתכונות ובפעולות שמוגדרות במחלקה ב.
                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", + " מכאן שירושה היא חד־כיוונית: המחלקה היורשת מקבלת את כל התכונות והפעולות של מחלקת־העל, אבל לא להפך.
                                                                                                                                                                                                                                                                      \n", + " אם מחלקה א יורשת ממחלקה ב, מופע שנוצר ממחלקה א יכול להשתמש בתכונות ובפעולות שמוגדרות במחלקה ב.
                                                                                                                                                                                                                                                                      \n", " למרות זאת, במקרה שכזה, מופע שנוצר ממחלקה ב לא יוכל להשתמש בתכונות ובפעולות שמוגדרות במחלקה א.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -607,7 +607,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", " כשמשתמשים בירושה, נהוג שתת־המחלקה היורשת יכולה לגשת ולשנות גם תכונות פרטיות של מחלקת־העל שאותה היא יורשת.\n", "

                                                                                                                                                                                                                                                                      " ] @@ -616,14 +616,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: ססטי... מה?" + "### תרגיל ביניים: ססטי... מה?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                      \n", "לפי ויקיפדיה, ססטינה הוא שיר בעל מבנה נוקשה שמציית לכללים הבאים:\n", "

                                                                                                                                                                                                                                                                      " ] @@ -632,10 +632,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                                                                                      • בססטינה יש 39 שורות: שישה בתים של שש שורות כל אחד, ולבסוף בית של שלוש שורות.
                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                      • המילה האחרונה בכל שורה בבית הראשון, מופיעה גם כמילה האחרונה בכל אחת מהשורות מהבתים הבאים אחריה. אם נסמן את שש המילים האחרונות בשש השורות של הבית הראשון באותיות אבגדהו, הרי הסדר שבו יופיעו מילים אלה בבתים הבאים הוא ואהבדג, גודאבה, הגבואד, דהאגוב, בדוהגא.
                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                      • שש מילים אלה מופיעות גם בבית האחרון, שבו שלוש שורות. בשורה הראשונה יופיעו המילים בה, בשורה השנייה – דג, ובשורה השלישית – או.
                                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                        • בססטינה יש 39 שורות: שישה בתים של שש שורות כל אחד, ולבסוף בית של שלוש שורות.
                                                                                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                                                                                        • המילה האחרונה בכל שורה בבית הראשון, מופיעה גם כמילה האחרונה בכל אחת מהשורות מהבתים הבאים אחריה. אם נסמן את שש המילים האחרונות בשש השורות של הבית הראשון באותיות אבגדהו, הרי הסדר שבו יופיעו מילים אלה בבתים הבאים הוא ואהבדג, גודאבה, הגבואד, דהאגוב, בדוהגא.
                                                                                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                                                                                        • שש מילים אלה מופיעות גם בבית האחרון, שבו שלוש שורות. בשורה הראשונה יופיעו המילים בה, בשורה השנייה – דג, ובשורה השלישית – או.
                                                                                                                                                                                                                                                                        • \n", "
                                                                                                                                                                                                                                                                        " ] }, @@ -643,11 +643,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " ממשו את המחלקה Sestina.
                                                                                                                                                                                                                                                                        \n", - " המחלקה תכיל את כל התכונות והפעולות של שיר רגיל, נוסף על הפעולה is_valid שתבדוק אם הסטטינה תקינה.
                                                                                                                                                                                                                                                                        \n", - " בבדיקתכם, התעלמו מהחוקים הנוגעים לבית האחרון.
                                                                                                                                                                                                                                                                        \n", - " הפעולה תחזיר True אם כן ו־False אם לא.
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " ממשו את המחלקה Sestina.
                                                                                                                                                                                                                                                                        \n", + " המחלקה תכיל את כל התכונות והפעולות של שיר רגיל, נוסף על הפעולה is_valid שתבדוק אם הסטטינה תקינה.
                                                                                                                                                                                                                                                                        \n", + " בבדיקתכם, התעלמו מהחוקים הנוגעים לבית האחרון.
                                                                                                                                                                                                                                                                        \n", + " הפעולה תחזיר True אם כן ו־False אם לא.
                                                                                                                                                                                                                                                                        \n", " בדקו את הפעולה שלכם על \"ססטינת ערפד\" של ניל גיימן.\n", "

                                                                                                                                                                                                                                                                        " ] @@ -656,15 +656,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## דריסה" + "## דריסה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " לפעמים נרצה לרשת ממחלקה מסוימת, אבל חלק מהפעולות או מהתכונות במחלקת־העל לא יתאימו לצרכים שלנו.
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " לפעמים נרצה לרשת ממחלקה מסוימת, אבל חלק מהפעולות או מהתכונות במחלקת־העל לא יתאימו לצרכים שלנו.
                                                                                                                                                                                                                                                                        \n", " במקרים אלו כן נרצה לרשת ממחלקת־העל את תכונותיה ופעולותיה, אבל נגדיר מחדש תכונות ופעולות שאנחנו רוצים לשנות. \n", "

                                                                                                                                                                                                                                                                        " ] @@ -673,9 +673,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " ניקח כדוגמה את מחלקת Instrumental.
                                                                                                                                                                                                                                                                        \n", - " קטע כלי (או שיר אינסטרומנטלי) הוא קטע מוזיקלי ללא שירה.
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " ניקח כדוגמה את מחלקת Instrumental.
                                                                                                                                                                                                                                                                        \n", + "קטע כלי (או שיר אינסטרומנטלי) הוא קטע מוזיקלי ללא שירה.
                                                                                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                                                                                        " ] }, @@ -693,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", " ניצור מתוך המחלקה מופע עבור הקטע של Yiruma, יצירתו המהממת River Flows in You:\n", "

                                                                                                                                                                                                                                                                        " ] @@ -712,9 +712,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " בשלב הזה נגלה שפעולת ה־__str__ עושה פחות חסד עם קטעים כליים.
                                                                                                                                                                                                                                                                        \n", - " תעלול נחמד בירושה הוא היכולת לדרוס את הפעולה של מחלקת־העל בתת־מחלקה שיורשת ממנה.
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " בשלב הזה נגלה שפעולת ה־__str__ עושה פחות חסד עם קטעים כליים.
                                                                                                                                                                                                                                                                        \n", + " תעלול נחמד בירושה הוא היכולת לדרוס את הפעולה של מחלקת־העל בתת־מחלקה שיורשת ממנה.
                                                                                                                                                                                                                                                                        \n", " בדריסה, אנחנו \"מבטלים\" את הפעולה של מחלקת־העל (היא לא תרוץ), ומחליפים אותה בפעולה חדשה שניצור עבור תת־המחלקה.\n", "

                                                                                                                                                                                                                                                                        " ] @@ -723,7 +723,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", " נדרוס את הפעולה __str__ ונממש צורת תצוגה שמתאימה יותר לקטעים כליים:\n", "

                                                                                                                                                                                                                                                                        " ] @@ -757,8 +757,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " בתא שלמעלה הגדרנו מחדש את הפעולה __str__ שבמחלקה Instrumental.
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " בתא שלמעלה הגדרנו מחדש את הפעולה __str__ שבמחלקה Instrumental.
                                                                                                                                                                                                                                                                        \n", " ויתרנו על הצגת מילות השיר (כי אין כאלו) ועל הקווים המפרידים הסמוכים להם.\n", "

                                                                                                                                                                                                                                                                        " ] @@ -767,8 +767,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " כמה נחמד!
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " כמה נחמד!
                                                                                                                                                                                                                                                                        \n", " עכשיו כשנדפיס את המופע, מי שתיקרא כדי להמיר את המופע למחרוזת היא הפעולה Instrumental.__str__ ולא Song.__str__.\n", "

                                                                                                                                                                                                                                                                        " ] @@ -777,10 +777,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " איך פייתון מחליטה לאיזו פעולה לקרוא?
                                                                                                                                                                                                                                                                        \n", - " השיטה היא תמיד לחפש תחילה במחלקה שממנה נוצר המופע.
                                                                                                                                                                                                                                                                        \n", - " אם לא מצאנו את הפעולה שם, נעבור לחפש אותה במחלקת־העל.
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " איך פייתון מחליטה לאיזו פעולה לקרוא?
                                                                                                                                                                                                                                                                        \n", + " השיטה היא תמיד לחפש תחילה במחלקה שממנה נוצר המופע.
                                                                                                                                                                                                                                                                        \n", + " אם לא מצאנו את הפעולה שם, נעבור לחפש אותה במחלקת־העל.
                                                                                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                                                                                        " ] }, @@ -788,8 +788,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " סדר המחלקות שבו נחפש את הפעולה קיבל את השם \"סדר בחירת פעולות\" (Method Resolution Order; או MRO).
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " סדר המחלקות שבו נחפש את הפעולה קיבל את השם \"סדר בחירת פעולות\" (Method Resolution Order; או MRO).
                                                                                                                                                                                                                                                                        \n", " אפשר לראות את סדר בחירת הפעולות של song אם נקרא ל־Instrumental.mro():\n", "

                                                                                                                                                                                                                                                                        " ] @@ -807,7 +807,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", " זה אומר שכשאנחנו יוצרים מופע מהמחלקה Instrumental, פייתון תחפש פעולות ותכונות קודם כול אצלה, ורק אז במחלקה Song, הרי היא מחלקת־העל.\n", "

                                                                                                                                                                                                                                                                        " ] @@ -816,11 +816,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " נשים לב שבראש השרשרת עומדת המחלקה object.
                                                                                                                                                                                                                                                                        \n", - " כשאנחנו מגדירים מחלקה \"רגילה\", ללא ירושה, פייתון אוטומטית מניחה שהיא יורשת ממחלקת object.
                                                                                                                                                                                                                                                                        \n", - " מחלקה זו מגדירה התנהגויות בסיסיות עבור המחלקה שיצרנו.
                                                                                                                                                                                                                                                                        \n", - " לדוגמה: הפעולה __init__ שמוגדרת ב־object מאפשרת לנו לאתחל מופעים חדשים מבלי שנגדיר __init__ במחלקה שלנו:
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " נשים לב שבראש השרשרת עומדת המחלקה object.
                                                                                                                                                                                                                                                                        \n", + " כשאנחנו מגדירים מחלקה \"רגילה\", ללא ירושה, פייתון אוטומטית מניחה שהיא יורשת ממחלקת object.
                                                                                                                                                                                                                                                                        \n", + " מחלקה זו מגדירה התנהגויות בסיסיות עבור המחלקה שיצרנו.
                                                                                                                                                                                                                                                                        \n", + " לדוגמה: הפעולה __init__ שמוגדרת ב־object מאפשרת לנו לאתחל מופעים חדשים מבלי שנגדיר __init__ במחלקה שלנו:
                                                                                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                                                                                        " ] }, @@ -847,8 +847,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " הפעולה __str__ שמוגדרת ב־object מאפשרת לנו לראות את הייצוג המכוער של אובייקט כשאנחנו מדפיסים אותו,
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " הפעולה __str__ שמוגדרת ב־object מאפשרת לנו לראות את הייצוג המכוער של אובייקט כשאנחנו מדפיסים אותו,
                                                                                                                                                                                                                                                                        \n", " גם בלי לממש את __str__ במחלקה שלנו:\n", "

                                                                                                                                                                                                                                                                        " ] @@ -866,15 +866,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## super" + "## super" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " מקום נוסף לשיפור במחלקה Instrumental הוא פעולת ה־__init__.
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " מקום נוסף לשיפור במחלקה Instrumental הוא פעולת ה־__init__.
                                                                                                                                                                                                                                                                        \n", " כיוון שלקטעים כליים אין מילים, הפרמטר השני שאנחנו מעבירים לפעולת האתחול (lyrics) הוא מיותר לחלוטין.\n", "

                                                                                                                                                                                                                                                                        " ] @@ -893,9 +893,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " היה עדיף לו __init__ של המחלקה Instrumental היה קצת שונה מה־__init__ של המחלקה Song.
                                                                                                                                                                                                                                                                        \n", - " מה עושים? את הפעולה שהורשה דורסים!
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " היה עדיף לו __init__ של המחלקה Instrumental היה קצת שונה מה־__init__ של המחלקה Song.
                                                                                                                                                                                                                                                                        \n", + " מה עושים? את הפעולה שהורשה דורסים!
                                                                                                                                                                                                                                                                        \n", " נגדיר __init__ חדש ללא הפרמטר lyrics:\n", "

                                                                                                                                                                                                                                                                        " ] @@ -925,9 +925,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " בקוד שלמעלה דרסנו את הפעולה __init__.
                                                                                                                                                                                                                                                                        \n", - " חדי העין מביניכם זיהו שהיא כמעט זהה לפעולת ה־__init__ של Song.
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " בקוד שלמעלה דרסנו את הפעולה __init__.
                                                                                                                                                                                                                                                                        \n", + " חדי העין מביניכם זיהו שהיא כמעט זהה לפעולת ה־__init__ של Song.
                                                                                                                                                                                                                                                                        \n", " ההבדלים הם שלא מוגדר בה הפרמטר lyrics, ושתכונת המופע lyrics מוגדרת תמיד למחרוזת ריקה. \n", "

                                                                                                                                                                                                                                                                        " ] @@ -936,9 +936,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " מצד אחד – השגנו את מה שרצינו. מצד שני – מטרת העל של ירושה הייתה מלכתחילה למנוע שכפול קוד.
                                                                                                                                                                                                                                                                        \n", - " נצמצם את כפילות הקוד בין Instrumental.__init__ לבין Song.__init__
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " מצד אחד – השגנו את מה שרצינו. מצד שני – מטרת העל של ירושה הייתה מלכתחילה למנוע שכפול קוד.
                                                                                                                                                                                                                                                                        \n", + " נצמצם את כפילות הקוד בין Instrumental.__init__ לבין Song.__init__
                                                                                                                                                                                                                                                                        \n", " במקום להעתיק את השורות שכתובות ב־Song.__init__, נקרא לפעולת האתחול הזו מתוך Instrumental.__init__:\n", "

                                                                                                                                                                                                                                                                        " ] @@ -965,8 +965,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                        \n", - " מה יקרה כעת בעת יצירת מופע חדש של Instrumental?
                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                        \n", + " מה יקרה כעת בעת יצירת מופע חדש של Instrumental?
                                                                                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                                                                                        " ] }, @@ -974,10 +974,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                        1. הפעולה Instrumental.__init__ תרוץ.
                                                                                                                                                                                                                                                                        2. \n", - "
                                                                                                                                                                                                                                                                        3. בשורה הראשונה של הפעולה, תיקרא הפעולה Song.__init__ כאשר מועבר לה הפרמטר self באופן מפורש.
                                                                                                                                                                                                                                                                        4. \n", - "
                                                                                                                                                                                                                                                                        5. כשהפעולה Song.__init__ תרוץ, השורה self.name = name שנמצאת בתוך הפעולה תתייחס למופע שיצרנו ממחלקת Instrumental.
                                                                                                                                                                                                                                                                          הפעולה מתנהגת כך כיוון שהעברנו לפרמטר self של הפעולה Song.__init__ את המופע שיצרנו במחלקת Instrumental.
                                                                                                                                                                                                                                                                        6. \n", + "
                                                                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                                                                          1. הפעולה Instrumental.__init__ תרוץ.
                                                                                                                                                                                                                                                                          2. \n", + "
                                                                                                                                                                                                                                                                          3. בשורה הראשונה של הפעולה, תיקרא הפעולה Song.__init__ כאשר מועבר לה הפרמטר self באופן מפורש.
                                                                                                                                                                                                                                                                          4. \n", + "
                                                                                                                                                                                                                                                                          5. כשהפעולה Song.__init__ תרוץ, השורה self.name = name שנמצאת בתוך הפעולה תתייחס למופע שיצרנו ממחלקת Instrumental.
                                                                                                                                                                                                                                                                            הפעולה מתנהגת כך כיוון שהעברנו לפרמטר self של הפעולה Song.__init__ את המופע שיצרנו במחלקת Instrumental.
                                                                                                                                                                                                                                                                          6. \n", "
                                                                                                                                                                                                                                                                          " ] }, @@ -985,8 +985,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " עשינו פה טריק מוזר ואולי קצת מלוכלך.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " עשינו פה טריק מוזר ואולי קצת מלוכלך.
                                                                                                                                                                                                                                                                          \n", " פנינו ישירות לפעולת הקסם Song.__init__, ו\"השתלנו\" בה את ה־self שמייצג את המופע הנוכחי.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -995,11 +995,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " למה עשינו זאת?
                                                                                                                                                                                                                                                                          \n", - " אם נקרא ל־Song(), ייווצר אוטומטית מופע חדש של שיר \"רגיל\", והוא יהיה זה שייכנס לפרמטר self של Song.__init__.
                                                                                                                                                                                                                                                                          \n", - " לעומת זאת, אם נקרא ישירות ל־Song.__init__(), נוכל להעביר את הפרמטר self באופן מפורש, בעצמנו.
                                                                                                                                                                                                                                                                          \n", - " הטריק הזה מאפשר לנו להעביר לתוך הפרמטר self של Song.__init__ מופע שיצרנו בעזרת מחלקת Instrumental,
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " למה עשינו זאת?
                                                                                                                                                                                                                                                                          \n", + " אם נקרא ל־Song(), ייווצר אוטומטית מופע חדש של שיר \"רגיל\", והוא יהיה זה שייכנס לפרמטר self של Song.__init__.
                                                                                                                                                                                                                                                                          \n", + " לעומת זאת, אם נקרא ישירות ל־Song.__init__(), נוכל להעביר את הפרמטר self באופן מפורש, בעצמנו.
                                                                                                                                                                                                                                                                          \n", + " הטריק הזה מאפשר לנו להעביר לתוך הפרמטר self של Song.__init__ מופע שיצרנו בעזרת מחלקת Instrumental,
                                                                                                                                                                                                                                                                          \n", " או במילים אחרות – הטריק הזה מאפשר לנו להפעיל את פעולת האתחול של Song עבור המופע שנוצר מ־Instrumental.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1008,8 +1008,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " למה זה שימושי?
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " למה זה שימושי?
                                                                                                                                                                                                                                                                          \n", " כיוון שאז אנחנו מנצלים את פעולת האתחול של Song שנראית כך:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1031,10 +1031,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " באמצעות שורת הקוד שהוספנו ל־Instrumental שקוראת לפעולה הזאת, פעולת האתחול של Song,
                                                                                                                                                                                                                                                                          \n", - " אנחנו חוסכים את שכפול הקוד בתת־המחלקה וגורמים לכך שהפעולה של מחלקת־העל תפעל ותגדיר עבורנו את תכונות המחלקה.
                                                                                                                                                                                                                                                                          \n", - " זו דרך נוחה להגיד לפייתון \"אמנם דרסנו את הפעולה של מחלקת־העל, אבל עדיין נרצה לבצע גם את מה שמחלקת־העל עושה\".
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " באמצעות שורת הקוד שהוספנו ל־Instrumental שקוראת לפעולה הזאת, פעולת האתחול של Song,
                                                                                                                                                                                                                                                                          \n", + " אנחנו חוסכים את שכפול הקוד בתת־המחלקה וגורמים לכך שהפעולה של מחלקת־העל תפעל ותגדיר עבורנו את תכונות המחלקה.
                                                                                                                                                                                                                                                                          \n", + " זו דרך נוחה להגיד לפייתון \"אמנם דרסנו את הפעולה של מחלקת־העל, אבל עדיין נרצה לבצע גם את מה שמחלקת־העל עושה\".
                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                          " ] }, @@ -1042,8 +1042,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " זה עובד כיוון שהעברנו את self, המופע שלנו, לפעולה Song.__init__,
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " זה עובד כיוון שהעברנו את self, המופע שלנו, לפעולה Song.__init__,
                                                                                                                                                                                                                                                                          \n", " מה שיגרור את הגדרתן של self.name, self.lyrics, self._views ו־self._artists עבור המופע שנוצר מ־Instrumental.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1052,9 +1052,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " קריאה לפעולה שדרסנו במחלקת־העל היא טריק נפוץ ושימושי מאוד.
                                                                                                                                                                                                                                                                          \n", - " למעשה, נהוג להשתמש בו הרבה גם על פעולות שהן לא __init__.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " קריאה לפעולה שדרסנו במחלקת־העל היא טריק נפוץ ושימושי מאוד.
                                                                                                                                                                                                                                                                          \n", + " למעשה, נהוג להשתמש בו הרבה גם על פעולות שהן לא __init__.
                                                                                                                                                                                                                                                                          \n", " נוכל להחיל את אותו הטריק גם על __str__, לדוגמה, ולחסוך את ההעלאה של self._views ב־1:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1063,22 +1063,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", - "

                                                                                                                                                                                                                                                                          \n", - " ממשו בעצמכם את אותו תעלול עבור __str__.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " ממשו בעצמכם את אותו תעלול עבור __str__.
                                                                                                                                                                                                                                                                          \n", " הפתרון מופיע בתא שלהלן.\n", "

                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", - "

                                                                                                                                                                                                                                                                          \n", - " חשוב!
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + "חשוב!
                                                                                                                                                                                                                                                                          \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", "
                                                                                                                                                                                                                                                                          " ] }, @@ -1104,8 +1104,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " בתא שלמעלה אנחנו רואים איך משתמשים בפעולה של מחלקת־העל,
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " בתא שלמעלה אנחנו רואים איך משתמשים בפעולה של מחלקת־העל,
                                                                                                                                                                                                                                                                          \n", " אבל עדיין מגדירים גם התנהגות עצמאית משל עצמנו.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1114,9 +1114,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " כיוון שהטריק הזה נפוץ יחסית, פייתון נותנת בידינו דרך נוחה להתייחס למחלקת־העל, כשהפרמטר הראשון שנעביר לפעולה שבה הוא self.
                                                                                                                                                                                                                                                                          \n", - " במקום לכתוב בכל פעם את הביטוי המתיש Song.__init__(self), נוכל לכתוב super().__init__().
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " כיוון שהטריק הזה נפוץ יחסית, פייתון נותנת בידינו דרך נוחה להתייחס למחלקת־העל, כשהפרמטר הראשון שנעביר לפעולה שבה הוא self.
                                                                                                                                                                                                                                                                          \n", + " במקום לכתוב בכל פעם את הביטוי המתיש Song.__init__(self), נוכל לכתוב super().__init__().
                                                                                                                                                                                                                                                                          \n", " הפונקציה super מאפשרת לנו להעביר את המופע שיצרנו בתת־המחלקה, לתוך פעולה הנמצאת במחלקת־העל.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1154,9 +1154,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " חשוב להבין היטב את הרעיון של קריאה לפעולה במחלקת־העל מתוך הפעולה הדורסת בתת־מחלקה.
                                                                                                                                                                                                                                                                          \n", - " הטכניקה הזו מאפשרת לנו למנוע שכפול קוד, ואם בעתיד תשתנה מעט הפעולה במחלקת־העל, תת־המחלקה \"תזכה\" אוטומטית בשינויים האלו.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " חשוב להבין היטב את הרעיון של קריאה לפעולה במחלקת־העל מתוך הפעולה הדורסת בתת־מחלקה.
                                                                                                                                                                                                                                                                          \n", + " הטכניקה הזו מאפשרת לנו למנוע שכפול קוד, ואם בעתיד תשתנה מעט הפעולה במחלקת־העל, תת־המחלקה \"תזכה\" אוטומטית בשינויים האלו.
                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                          " ] }, @@ -1164,15 +1164,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: דרדסים" + "### תרגיל ביניים: דרדסים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " כידוע לכם בכפר הדרדסים יש הרבה דרדסים \"רגילים\", אבל יש גם כמה דרדסים מפורסמים, כמו דרדסבא, דרדסית ודרדשף.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " כידוע לכם בכפר הדרדסים יש הרבה דרדסים \"רגילים\", אבל יש גם כמה דרדסים מפורסמים, כמו דרדסבא, דרדסית ודרדשף.
                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                          " ] }, @@ -1180,10 +1180,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " לכל דרדס (Smurf) יש את התכונה name שמכילה את שמו, ואת הפעולות eat ו־sleep.
                                                                                                                                                                                                                                                                          \n", - " לדרדס המיוחד \"דרדסאבא\" (PapaSmurf) יש גם את הפעולה give_order, שמקבלת פעולה של דרדס רגיל ומפעילה אותו עליו.
                                                                                                                                                                                                                                                                          \n", - " ל\"דרדסית\" (Smurfette) יש את הפעולה kill_gargamel, שמקבלת כפרמטר מופע שנוצר ממחלקת Gargamel ומשנה את התכונה is_alive שבו ל־False.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " לכל דרדס (Smurf) יש את התכונה name שמכילה את שמו, ואת הפעולות eat ו־sleep.
                                                                                                                                                                                                                                                                          \n", + " לדרדס המיוחד \"דרדסאבא\" (PapaSmurf) יש גם את הפעולה give_order, שמקבלת פעולה של דרדס רגיל ומפעילה אותו עליו.
                                                                                                                                                                                                                                                                          \n", + " ל\"דרדסית\" (Smurfette) יש את הפעולה kill_gargamel, שמקבלת כפרמטר מופע שנוצר ממחלקת Gargamel ומשנה את התכונה is_alive שבו ל־False.
                                                                                                                                                                                                                                                                          \n", " ל\"דרדשף\" (ChefSmurf) יש את הפעולה create_food, שמקבלת את שם המנה שהוא מכין וכמה \"חתיכות\" (slices) הוא יצר ממנה. \n", "

                                                                                                                                                                                                                                                                          " ] @@ -1192,9 +1192,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " דרדסים ישנים 8 שעות בדיוק. דרדס שישן לא יכול לבצע פעולות אחרות אלא אם הוא דרדסבא, שהוא חזק ומהיר והוא דרדס והוא גם חזק.
                                                                                                                                                                                                                                                                          \n", - " דרדס יכול לאכול מזון רק אם ChefSmurf הכין אותו באמצעות הפעולה create_food, ורק אם נשארו עוד \"חתיכות\" מאותה מנה.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " דרדסים ישנים 8 שעות בדיוק. דרדס שישן לא יכול לבצע פעולות אחרות אלא אם הוא דרדסבא, שהוא חזק ומהיר והוא דרדס והוא גם חזק.
                                                                                                                                                                                                                                                                          \n", + " דרדס יכול לאכול מזון רק אם ChefSmurf הכין אותו באמצעות הפעולה create_food, ורק אם נשארו עוד \"חתיכות\" מאותה מנה.
                                                                                                                                                                                                                                                                          \n", " הפעולה eat של כל דרדס תקבל רשימה של מנות ותאכל מכולן. הרשימה יכולה להכיל כל מספר איברים שהוא.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1203,15 +1203,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ביקורת על ירושה" + "## ביקורת על ירושה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " בשנות ה־90 העליזות החלה להישמע ביקורת הולכת וגוברת על רעיון הירושה.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " בשנות ה־90 העליזות החלה להישמע ביקורת הולכת וגוברת על רעיון הירושה.
                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                          " ] }, @@ -1219,10 +1219,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - "הביקורת העיקרית היא על כך שירושה יוצרת תלות בין מחלקת־העל לתתי־המחלקות שיורשות ממנה.
                                                                                                                                                                                                                                                                          \n", - "כאשר מחלקה יורשת ממחלקה אחרת, כל הפעולות והתכונות של מחלקת־העל נחשפות לתת־המחלקה.
                                                                                                                                                                                                                                                                          \n", - "נהוג שבתת־המחלקה אף מותר לשנות תכונות מוגנות של מחלקת־העל.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + "הביקורת העיקרית היא על כך שירושה יוצרת תלות בין מחלקת־העל לתתי־המחלקות שיורשות ממנה.
                                                                                                                                                                                                                                                                          \n", + "כאשר מחלקה יורשת ממחלקה אחרת, כל הפעולות והתכונות של מחלקת־העל נחשפות לתת־המחלקה.
                                                                                                                                                                                                                                                                          \n", + "נהוג שבתת־המחלקה אף מותר לשנות תכונות מוגנות של מחלקת־העל.
                                                                                                                                                                                                                                                                          \n", "התנהגות זו מובילה לצימוד גבוה מאוד בין מחלקות־העל לתתי־המחלקות, ופוגעת ברעיון הסתרת הנתונים שנמצא בליבת הרעיון של תכנות מונחה עצמים.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1231,9 +1231,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " סוג נוסף של ביקורת שמועברת תדיר על ירושה נוגעת לתסמונת בשם \"מחלקת־העל השברירית\".
                                                                                                                                                                                                                                                                          \n", - " תסמונת זו מדברת על כך שלאחר הירושה, שינוי במחלקת־העל עלול ליצור תקלים בקוד של תתי־המחלקות שיורשות ממנה.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " סוג נוסף של ביקורת שמועברת תדיר על ירושה נוגעת לתסמונת בשם \"מחלקת־העל השברירית\".
                                                                                                                                                                                                                                                                          \n", + " תסמונת זו מדברת על כך שלאחר הירושה, שינוי במחלקת־העל עלול ליצור תקלים בקוד של תתי־המחלקות שיורשות ממנה.
                                                                                                                                                                                                                                                                          \n", " נדון בבעיה זו בהרחבה בהמשך הפרק.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1242,9 +1242,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " שימוש רב במחלקות ויצירת היררכיית ירושה מורכבת ועמוסה עלולים גם לגרום ל\"בעיית היו־יו\" –
                                                                                                                                                                                                                                                                          \n", - " מתכנת שצריך לעבור על מחלקות בתוכנית רצוא ושוב כדי להבין את המטרה של חלק קטן בקוד.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " שימוש רב במחלקות ויצירת היררכיית ירושה מורכבת ועמוסה עלולים גם לגרום ל\"בעיית היו־יו\" –
                                                                                                                                                                                                                                                                          \n", + " מתכנת שצריך לעבור על מחלקות בתוכנית רצוא ושוב כדי להבין את המטרה של חלק קטן בקוד.
                                                                                                                                                                                                                                                                          \n", " היררכיה עמוסה שכזו גם מקשה על תחזוקת התוכנית וגורמת לניפוי שגיאות להיות קשה יותר במידה ניכרת.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1253,8 +1253,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " בספר האלמותי של כנופיית הארבעה, \"תבניות עיצוב\" (Design Patterns), הכותבים מותחים ביקורת נוקבת על הבעיות שירושה עלולה להכניס לקוד.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " בספר האלמותי של כנופיית הארבעה, \"תבניות עיצוב\" (Design Patterns), הכותבים מותחים ביקורת נוקבת על הבעיות שירושה עלולה להכניס לקוד.
                                                                                                                                                                                                                                                                          \n", " הם מציעים לבחור בהכלה במקום בירושה כשהדבר אפשרי.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1263,16 +1263,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מחלקת העל השברירית" + "### מחלקת העל השברירית" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " ירושה גורמת לקוד להיות חשוף לתסמונת \"מחלקת־העל השברירית\".
                                                                                                                                                                                                                                                                          \n", - " התסמונת מתארת בעיה נפוצה בירושה:
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " ירושה גורמת לקוד להיות חשוף לתסמונת \"מחלקת־העל השברירית\".
                                                                                                                                                                                                                                                                          \n", + " התסמונת מתארת בעיה נפוצה בירושה:
                                                                                                                                                                                                                                                                          \n", " שינויים במחלקת־העל עלולים לגרור תוצאות בלתי צפויות בתתי־המחלקות שיורשות ממנה, אפילו אם מחלקת העל עובדת באופן מושלם.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1281,8 +1281,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " כדי לקבל מושג איך נראית התסמונת בעולם האמיתי, נראה דוגמה למימוש של אתר הקניות \"מוצרי לכון ובניו\".
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " כדי לקבל מושג איך נראית התסמונת בעולם האמיתי, נראה דוגמה למימוש של אתר הקניות \"מוצרי לכון ובניו\".
                                                                                                                                                                                                                                                                          \n", " נגדיר מחלקה פשוטה בשם Clickable שמתארת עצם לחיץ. המחלקה תאפשר לנו לספור כמה פעמים לחצו על מופע מסוים:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1308,9 +1308,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " באתר הקניות המדובר ישנו מופע של כפתור שנוצר מהמחלקה CrazyButton.
                                                                                                                                                                                                                                                                          \n", - " המחלקה CrazyButton יורשת מהמחלקה Clickable.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " באתר הקניות המדובר ישנו מופע של כפתור שנוצר מהמחלקה CrazyButton.
                                                                                                                                                                                                                                                                          \n", + " המחלקה CrazyButton יורשת מהמחלקה Clickable.
                                                                                                                                                                                                                                                                          \n", " המיוחד במחלקת CrazyButton הוא שכל לחיצה נחשבת כלחיצה כפולה:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1341,9 +1341,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " יום אחד, הסתכל אחיתופל המתכנת על הקוד. \"רגע! יש פה קוד כפול!\" הוא נזעק,
                                                                                                                                                                                                                                                                          \n", - " \"הפעולה double_click במחלקה Clickcable עושה כמעט את מה שעושה הפעולה click\".
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " יום אחד, הסתכל אחיתופל המתכנת על הקוד. \"רגע! יש פה קוד כפול!\" הוא נזעק,
                                                                                                                                                                                                                                                                          \n", + " \"הפעולה double_click במחלקה Clickcable עושה כמעט את מה שעושה הפעולה click\".
                                                                                                                                                                                                                                                                          \n", " אחיתופל ניגש בחופזה לתקן את הקוד, ולהשתמש ב־click פעמיים במקום בערך המפורש 2:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1375,7 +1375,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " ואכן, המחלקה Clickable עודנה עובדת מצוין: \n", "

                                                                                                                                                                                                                                                                          " ] @@ -1396,7 +1396,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " אך מה יקרה אם נרצה להשתמש ב־CrazyButton?\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1415,9 +1415,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " אחיתופל אומנם תיקן את הקוד של המחלקה Clickable, שנראית עכשיו תקינה לחלוטין.
                                                                                                                                                                                                                                                                          \n", - " הבעיה היא שבתת־המחלקה CrazyButton הפעולה click מסתמכת על המימוש של הפעולה double_click שבמחלקת־העל שלה.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " אחיתופל אומנם תיקן את הקוד של המחלקה Clickable, שנראית עכשיו תקינה לחלוטין.
                                                                                                                                                                                                                                                                          \n", + " הבעיה היא שבתת־המחלקה CrazyButton הפעולה click מסתמכת על המימוש של הפעולה double_click שבמחלקת־העל שלה.
                                                                                                                                                                                                                                                                          \n", " כך נוצרת שרשרת קריאות אין־סופית: בעת קריאה ל־click ב־CrazyButton, נקראת הפעולה double_click, שקוראת בחזרה לפעולה click, וחוזר חלילה.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1426,17 +1426,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אז מתי כן ומתי לא?" + "### אז מתי כן ומתי לא?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " בספר Code Complete מוצג כלל אצבע שזכה לאהדה בקרב מתכנתים רבים:
                                                                                                                                                                                                                                                                          \n", - " כשמתארים קשר בין שתי מחלקות בעזרת המילים \"סוג של\" (is a), הקשר התכנותי ביניהן יהיה לרוב ירושה.
                                                                                                                                                                                                                                                                          \n", - " כשמתארים קשר בין שתי מחלקות בעזרת המילה \"יש...\" (has a), הקשר התכנותי ביניהן יהיה לרוב הכלה.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " בספר Code Complete מוצג כלל אצבע שזכה לאהדה בקרב מתכנתים רבים:
                                                                                                                                                                                                                                                                          \n", + " כשמתארים קשר בין שתי מחלקות בעזרת המילים \"סוג של\" (is a), הקשר התכנותי ביניהן יהיה לרוב ירושה.
                                                                                                                                                                                                                                                                          \n", + " כשמתארים קשר בין שתי מחלקות בעזרת המילה \"יש...\" (has a), הקשר התכנותי ביניהן יהיה לרוב הכלה.
                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                          " ] }, @@ -1444,9 +1444,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " אם אנחנו יכולים להגיד \"א הוא סוג של ב\", כאשר מדובר בשמות של מחלקות, ייתכן שנכון להשתמש בירושה.
                                                                                                                                                                                                                                                                          \n", - " לדוגמה: כלב הוא סוג של חיה, ולכן ייתכן שמחלקת Dog תירש ממחלקת Animal.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " אם אנחנו יכולים להגיד \"א הוא סוג של ב\", כאשר מדובר בשמות של מחלקות, ייתכן שנכון להשתמש בירושה.
                                                                                                                                                                                                                                                                          \n", + " לדוגמה: כלב הוא סוג של חיה, ולכן ייתכן שמחלקת Dog תירש ממחלקת Animal.
                                                                                                                                                                                                                                                                          \n", " מכונית היא סוג של רכב, ולכן הגיוני שמחלקת Car תירש ממחלקת Vehicle.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1455,9 +1455,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " אם אנחנו יכולים להגיד \"אצל א יש ב\", כאשר מדובר בשמות של מחלקות, ייתכן שנכון להשתמש בהכלה.
                                                                                                                                                                                                                                                                          \n", - " לדוגמה: למכונית יש מנוע, ולכן הגיוני שבמחלקה Car תופיע התכונה engine, שהיא מופע שנוצר מהמחלקה Engine.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " אם אנחנו יכולים להגיד \"אצל א יש ב\", כאשר מדובר בשמות של מחלקות, ייתכן שנכון להשתמש בהכלה.
                                                                                                                                                                                                                                                                          \n", + " לדוגמה: למכונית יש מנוע, ולכן הגיוני שבמחלקה Car תופיע התכונה engine, שהיא מופע שנוצר מהמחלקה Engine.
                                                                                                                                                                                                                                                                          \n", " זה עובד על תכונות באופן כללי, ולא רק על קשר של הכלה. לכפתור באתר יש כמה לחיצות, ולכן הגיוני ש־clicks תהיה תכונה של המחלקה Button.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1466,16 +1466,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### עקרון ההחלפה של ליסקוב" + "#### עקרון ההחלפה של ליסקוב" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " ברברה ליסקוב היא אחת מנשות מדעי המחשב המשפיעות בהיסטוריה, ואחת משלוש הנשים היחידות שזכו בפרס טיורינג.
                                                                                                                                                                                                                                                                          \n", - " תרומתה הנודעת ביותר נקראת \"עקרון ההחלפה של ליסקוב\" שנוסח פורמלית בשנת 1987.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " ברברה ליסקוב היא אחת מנשות מדעי המחשב המשפיעות בהיסטוריה, ואחת משלוש הנשים היחידות שזכו בפרס טיורינג.
                                                                                                                                                                                                                                                                          \n", + " תרומתה הנודעת ביותר נקראת \"עקרון ההחלפה של ליסקוב\" שנוסח פורמלית בשנת 1987.
                                                                                                                                                                                                                                                                          \n", " בפשטות, העיקרון גורס כך:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1485,7 +1485,7 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                          \n", - "

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

                                                                                                                                                                                                                                                                          \n", + "

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

                                                                                                                                                                                                                                                                          \n", "
                                                                                                                                                                                                                                                                          \n" ] }, @@ -1493,8 +1493,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " נדמיין שיש לנו מחלקה של שיר ומחלקה של אקרוסטיכון שיורשת ממנה.
                                                                                                                                                                                                                                                                          \n", + "

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

                                                                                                                                                                                                                                                                          " ] @@ -1503,8 +1503,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " דוגמה פופולרית שנותן רוברט מרטין (הידוע בשם העט Uncle Bob) היא שכל ריבוע הוא גם מלבן.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " דוגמה פופולרית שנותן רוברט מרטין (הידוע בשם העט Uncle Bob) היא שכל ריבוע הוא גם מלבן.
                                                                                                                                                                                                                                                                          \n", " חלקנו נמהר להשתמש בהורשה כדי לייצג את הרעיון הזה:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1537,10 +1537,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " בקוד שלמעלה מימשנו מחלקת מלבן Rectangle, שבה התכונות \"גובה\" (height) ו\"רוחב\" (width), ואת הפעולה \"חישוב שטח\" (get_area).
                                                                                                                                                                                                                                                                          \n", - " בקוד ישנה מחלקה נוספת בשם ריבוע (Square) שפעולת האתחול שלה מקבלת רק אורך של צלע אחת, שכן כל צלעותיו של ריבוע זהות.
                                                                                                                                                                                                                                                                          \n", - " מחלקת הריבוע יורשת ממחלקת המלבן שבנינו.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " בקוד שלמעלה מימשנו מחלקת מלבן Rectangle, שבה התכונות \"גובה\" (height) ו\"רוחב\" (width), ואת הפעולה \"חישוב שטח\" (get_area).
                                                                                                                                                                                                                                                                          \n", + " בקוד ישנה מחלקה נוספת בשם ריבוע (Square) שפעולת האתחול שלה מקבלת רק אורך של צלע אחת, שכן כל צלעותיו של ריבוע זהות.
                                                                                                                                                                                                                                                                          \n", + " מחלקת הריבוע יורשת ממחלקת המלבן שבנינו.
                                                                                                                                                                                                                                                                          \n", " הרעיון יעבוד נהדר:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1559,10 +1559,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " אבל שימו לב שאנחנו מפרים את עקרון ההחלפה של ליסקוב.
                                                                                                                                                                                                                                                                          \n", - " על פי העיקרון, כל שימוש במחלקה יוכל להיות מוחלף בתת־מחלקה שיורשת ממנה.
                                                                                                                                                                                                                                                                          \n", - " לפי אותו עיקרון, אנחנו אמורים להיות מסוגלים להחליף את הקריאה למחלקת מלבן בקריאה למחלקת ריבוע.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " אבל שימו לב שאנחנו מפרים את עקרון ההחלפה של ליסקוב.
                                                                                                                                                                                                                                                                          \n", + " על פי העיקרון, כל שימוש במחלקה יוכל להיות מוחלף בתת־מחלקה שיורשת ממנה.
                                                                                                                                                                                                                                                                          \n", + " לפי אותו עיקרון, אנחנו אמורים להיות מסוגלים להחליף את הקריאה למחלקת מלבן בקריאה למחלקת ריבוע.
                                                                                                                                                                                                                                                                          \n", " משמע, עבור:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1580,7 +1580,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " אמור להתאפשר:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1598,7 +1598,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " לְמַאי נַפְקָא מִנַּהּ? (יענו, ככה החלטתי לתכנת, למה מה תעשה לי?)\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1607,8 +1607,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " אז כמו שראינו – יצירת ריבוע שיגרתית כן תעבוד כמצופה.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " אז כמו שראינו – יצירת ריבוע שיגרתית כן תעבוד כמצופה.
                                                                                                                                                                                                                                                                          \n", " עד שלפתע, אחד המתכנתים ירצה לשנות את רוחבו של הריבוע:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1628,9 +1628,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " לאחר עריכת רוחב הריבוע ציפינו ששטח הריבוע יהיה 25, אך ארכיטקטורת הקוד שלנו כשלה בטיפול במקרה הזה.
                                                                                                                                                                                                                                                                          \n", - " הקוד שלנו שינה רק את הרוחב של הריבוע ולא את אורכו, בזמן שבריבוע דבר כזה לא אמור להתאפשר.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " לאחר עריכת רוחב הריבוע ציפינו ששטח הריבוע יהיה 25, אך ארכיטקטורת הקוד שלנו כשלה בטיפול במקרה הזה.
                                                                                                                                                                                                                                                                          \n", + " הקוד שלנו שינה רק את הרוחב של הריבוע ולא את אורכו, בזמן שבריבוע דבר כזה לא אמור להתאפשר.
                                                                                                                                                                                                                                                                          \n", " בשורה התחתונה – הקוד שלנו נשבר כיוון שלא עקבנו אחרי עקרון ההחלפה.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1639,9 +1639,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " נוכל לתקן את הבאג בקלות יחסית אם נהפוך את width ואת height למשתנים פרטיים ב־Rectangle,
                                                                                                                                                                                                                                                                          \n", - " אבל כדאי לשים לב שבדרך כלל אם אנחנו פונים לתקן את מחלקת־העל כדי שדברים יעבדו – סימן שמשהו בעייתי בבסיס הארכיטקטורה שלנו.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " נוכל לתקן את הבאג בקלות יחסית אם נהפוך את width ואת height למשתנים פרטיים ב־Rectangle,
                                                                                                                                                                                                                                                                          \n", + " אבל כדאי לשים לב שבדרך כלל אם אנחנו פונים לתקן את מחלקת־העל כדי שדברים יעבדו – סימן שמשהו בעייתי בבסיס הארכיטקטורה שלנו.
                                                                                                                                                                                                                                                                          \n", " ננסה בכל זאת:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1694,7 +1694,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " הדבר הראשון שקופץ לעין זה שיצרנו פה מפלצת. הקוד שלנו הפך מסורבל בניסיון לטפל בכל מקרי הקצה.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1703,7 +1703,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " הבעיה הבאה תצוץ כשנבנה פונקציה שאמורה לעבוד על מקרה כללי של מלבן או ריבוע:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1728,8 +1728,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " המטרה הברורה של הפונקציה הייתה למצוא את השטח של הצורה לאחר שערכנו את גודלו ל־3 על 2.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " המטרה הברורה של הפונקציה הייתה למצוא את השטח של הצורה לאחר שערכנו את גודלו ל־3 על 2.
                                                                                                                                                                                                                                                                          \n", " מובן שהפונקציה לא החזירה את המצופה ממנה כשהעברנו לה ריבוע, כיוון שאי אפשר לשנות רק את רוחבו או רק את אורכו של הריבוע.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1738,7 +1738,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " בשלב הזה נפסיק לנסות לשכנע את הריבוע שהוא גם מלבן, ופשוט נממש את שתי המחלקות בנפרד: \n", "

                                                                                                                                                                                                                                                                          " ] @@ -1778,7 +1778,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " נזכה בקוד קצר, נוח לתחזוקה, שמאפשר למי שישתמש במחלקות שלנו לקבל בדיוק את מה שהוא רוצה בלי החשש שיטעה.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1787,16 +1787,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### העדיפו הכלה על ירושה כשאפשר" + "### העדיפו הכלה על ירושה כשאפשר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " נממש תוכנה לקבלת דואר אלקטרוני, שיודעת לתמוך בקבלה ובשליחה של דואר מ־Gmail ומ־Walla – ספקי דואר אלקטרוני פופולריים.
                                                                                                                                                                                                                                                                          \n", - " נתחיל במימוש מחלקה כללית עבור התוכנה שלנו.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " נממש תוכנה לקבלת דואר אלקטרוני, שיודעת לתמוך בקבלה ובשליחה של דואר מ־Gmail ומ־Walla – ספקי דואר אלקטרוני פופולריים.
                                                                                                                                                                                                                                                                          \n", + " נתחיל במימוש מחלקה כללית עבור התוכנה שלנו.
                                                                                                                                                                                                                                                                          \n", " ההדפסות בפעולות הן לצורך ההמחשה. בדרך כלל נמליץ שלא לכלול הדפסות בתוך פעולות מחלקה או בתוך פונקציות.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1819,8 +1819,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " כעת נממש את המחלקות של ספקי שירות הדואר האלקטרוני.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " כעת נממש את המחלקות של ספקי שירות הדואר האלקטרוני.
                                                                                                                                                                                                                                                                          \n", " פתרון שעושה שימוש בירושה עשוי להיראות כך:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1851,7 +1851,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " נדגים שימוש במחלקה:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1870,7 +1870,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " נשים לב שאם נרצה לעבור שירות דוא\"ל, נהיה חייבים ליצור מופע חדש לחלוטין של תוכנת דוא\"ל:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1889,8 +1889,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " מה יקרה אם נשתמש בהכלה במקום בירושה?
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " מה יקרה אם נשתמש בהכלה במקום בירושה?
                                                                                                                                                                                                                                                                          \n", " נתחיל בהתאמת המחלקה EmailClient:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1917,9 +1917,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " בקוד שלמעלה הוספנו את התכונה provider ל־EmailClient.
                                                                                                                                                                                                                                                                          \n", - " תכונה זו תכיל מופע של ספק הדוא\"ל.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " בקוד שלמעלה הוספנו את התכונה provider ל־EmailClient.
                                                                                                                                                                                                                                                                          \n", + " תכונה זו תכיל מופע של ספק הדוא\"ל.
                                                                                                                                                                                                                                                                          \n", " המחלקות של שירותי הדוא\"ל יישארו כפי שהן, אך לא יירשו מ־EmailClient:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1950,7 +1950,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " נראה דוגמה לשימוש:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1974,8 +1974,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                                          \n", + " בניגוד לדוגמה שהשתמשה בירושה, אם נרצה להחליף ספק דוא\"ל לא נצטרך ליצור מופע חדש של תוכנת דואר אלקטרוני.
                                                                                                                                                                                                                                                                          \n", " פשוט נחליף את הספק:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -1994,14 +1994,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## סיכום" + "## סיכום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " במחברת זו סקרנו את הרעיון של ירושה בתכנות מונחה עצמים.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2010,10 +2010,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " למדנו מהי ירושה ואיך משתמשים בה בפייתון,
                                                                                                                                                                                                                                                                          \n", - " ראינו איך דורסים פעולות ותכונות בתת־המחלקה, ואיך משתמשים ב־super כדי להתייחס למחלקת־העל.
                                                                                                                                                                                                                                                                          \n", - " סקרנו גם את הבעיות שמתעוררות כשמשתמשים בירושה, ולמדנו שיש לנהוג משנה זהירות לפני שבוחרים לממש משהו בעזרת מחלקות.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " למדנו מהי ירושה ואיך משתמשים בה בפייתון,
                                                                                                                                                                                                                                                                          \n", + " ראינו איך דורסים פעולות ותכונות בתת־המחלקה, ואיך משתמשים ב־super כדי להתייחס למחלקת־העל.
                                                                                                                                                                                                                                                                          \n", + " סקרנו גם את הבעיות שמתעוררות כשמשתמשים בירושה, ולמדנו שיש לנהוג משנה זהירות לפני שבוחרים לממש משהו בעזרת מחלקות.
                                                                                                                                                                                                                                                                          \n", " דיברנו על רעיונות תיאורטיים, כמו העדפת הכלה על ירושה, על סינדרום מחלקת־העל השברירית ועל עקרון ההחלפה של ליסקוב.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2022,8 +2022,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " מתכנתים טובים משתמשים בירושה במשורה, רק אחרי שווידאו שבחירה בפתרון הזה לא תוסיף סיבוכיות מיותרת לקוד.
                                                                                                                                                                                                                                                                          \n", + "

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

                                                                                                                                                                                                                                                                          " ] @@ -2032,43 +2032,43 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          ירושה (Inheritance)
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          ירושה (Inheritance)
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", " מנגנון של שפת התכנות שמאפשר ביסוס של מחלקה א על תכונותיה ופעולותיה של מחלקה ב.\n", "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          מחלקת־על (Superclass)
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", - " המחלקה שממנה מתבצעת הירושה. זו המחלקה שממנה ייגזרו הפעולות והתכונות, ו\"יועתקו\" למחלקה היורשת.
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          מחלקת־על (Superclass)
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", + " המחלקה שממנה מתבצעת הירושה. זו המחלקה שממנה ייגזרו הפעולות והתכונות, ו\"יועתקו\" למחלקה היורשת.
                                                                                                                                                                                                                                                                          \n", " נקראת גם מחלקת בסיס (base class), מחלקת האם או מחלקת האב (parent class).\n", "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          תת־מחלקה (Subclass)
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", - " המחלקה שמעתיקה את תכונותיה של מחלקה אחרת. זו המחלקה שאליה ייגזרו הפעולות והתכונות של המחלקה שממנה מתבצעת הירושה.
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          תת־מחלקה (Subclass)
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", + " המחלקה שמעתיקה את תכונותיה של מחלקה אחרת. זו המחלקה שאליה ייגזרו הפעולות והתכונות של המחלקה שממנה מתבצעת הירושה.
                                                                                                                                                                                                                                                                          \n", " נקראת גם המחלקה הנגזרת (derived class) או מחלקת הבת (child class).\n", "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          דריסה (Override)
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          דריסה (Override)
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", " החלפת תכונה או פעולה של מחלקת־העל בתת־מחלקה על ידי הגדרתה מחדש בתת־המחלקה.\n", "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          מחלקת־העל השברירית (Fragile base class)
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          מחלקת־העל השברירית (Fragile base class)
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", " תסמונת המתארת כיצד שינוי במחלקת־העל באופן שמסתמן כתקין עבור מחלקת־העל, עלול לשבור את תתי־המחלקות שיורשות ממנה.\n", "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          עקרון ההחלפה של ליסקוב (Liskov Substitution Principle)
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", - " עיקרון שמציע שעבור כל קוד שעושה שימוש במחלקת־על, יהיה אפשר להחליף את ההתייחסות למחלקת־העל בתת־המחלקות היורשות ממנה.
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          עקרון ההחלפה של ליסקוב (Liskov Substitution Principle)
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", + " עיקרון שמציע שעבור כל קוד שעושה שימוש במחלקת־על, יהיה אפשר להחליף את ההתייחסות למחלקת־העל בתת־המחלקות היורשות ממנה.
                                                                                                                                                                                                                                                                          \n", " לפי העיקרון, אם ההחלפה אינה אפשרית, יש לשקול מחדש את קשרי הירושה בקוד.\n", "
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          הכלה במקום ירושה (Composition over inheritance)
                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          הכלה במקום ירושה (Composition over inheritance)
                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                          \n", " רעיון תכנותי תיאורטי שמציע לשקול שימוש בהכלה במקום בירושה כשהדבר אפשרי.\n", "
                                                                                                                                                                                                                                                                          \n", "
                                                                                                                                                                                                                                                                          " @@ -2078,15 +2078,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## קוד לדוגמה" + "## קוד לדוגמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " לאדון פסו בגז' יש חנות גדולה לממכר ספרים.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " לאדון פסו בגז' יש חנות גדולה לממכר ספרים.
                                                                                                                                                                                                                                                                          \n", " ניצור מחלקה בסיסית שמייצגת מוצר בחנות של פסו:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2111,8 +2111,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                                                                                                          " ] @@ -2173,7 +2173,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " דמיינו שכעת עליכם לממש את המחלקות שאחראיות להזמנות מהסניפים ומהמרשתת.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2182,8 +2182,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " עד מהרה נגלה שהקוד במחלקות הללו דומה מאוד לקוד שיצרנו במחלקת PhoneOrder.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " עד מהרה נגלה שהקוד במחלקות הללו דומה מאוד לקוד שיצרנו במחלקת PhoneOrder.
                                                                                                                                                                                                                                                                          \n", " אם כך, נשמע שהדבר הנכון הוא ליצור מחלקה ששלוש המחלקות יורשות ממנה:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2282,21 +2282,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### היררכיה" + "### היררכיה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " כתבו תוכנה שמדמה מערכת קבצים.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2305,9 +2305,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " כל קובץ הוא מסוג מסוים – טקסטואלי, בינארי או תיקייה.
                                                                                                                                                                                                                                                                          \n", - " תיקייה היא קובץ שמכיל בתוכו רשימת קבצים, שיכולים להיות טקסטואליים, בינאריים או תיקיות.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " כל קובץ הוא מסוג מסוים – טקסטואלי, בינארי או תיקייה.
                                                                                                                                                                                                                                                                          \n", + " תיקייה היא קובץ שמכיל בתוכו רשימת קבצים, שיכולים להיות טקסטואליים, בינאריים או תיקיות.
                                                                                                                                                                                                                                                                          \n", " נדמיין, לדוגמה, את היררכיית התיקיות הבאה:\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2333,9 +2333,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " בדוגמה שלמעלה יש 5 קבצים תחת תיקיית week8: שניים מהם תיקיות (images, resources) ו־3 מהם מחברות.
                                                                                                                                                                                                                                                                          \n", - " התיקייה resources ריקה, ובתיקייה images יש את הקבצים הטקסטואליים exercise.svg ו־recall.svg ואת הקובץ הבינארי logo.jpg.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " בדוגמה שלמעלה יש 5 קבצים תחת תיקיית week8: שניים מהם תיקיות (images, resources) ו־3 מהם מחברות.
                                                                                                                                                                                                                                                                          \n", + " התיקייה resources ריקה, ובתיקייה images יש את הקבצים הטקסטואליים exercise.svg ו־recall.svg ואת הקובץ הבינארי logo.jpg.
                                                                                                                                                                                                                                                                          \n", " במערכת שלנו, הנתיב לתיקיית week8 הוא /week8, והנתיב לקובץ logo.jpg הוא /week8/images/logo.jpg.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2344,9 +2344,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " צרו בתוכנה שלכם מערכת לניהול משתמשים. לכל משתמש יש שם משתמש וסיסמה.
                                                                                                                                                                                                                                                                          \n", - " משתמש יכול להיות מסוג \"מנהל מערכת\" או \"משתמש רגיל\".
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " צרו בתוכנה שלכם מערכת לניהול משתמשים. לכל משתמש יש שם משתמש וסיסמה.
                                                                                                                                                                                                                                                                          \n", + " משתמש יכול להיות מסוג \"מנהל מערכת\" או \"משתמש רגיל\".
                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                          " ] }, @@ -2354,9 +2354,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " לקובץ בינארי או טקסטואלי יש משקל המיוצג בקילובייטים, תוכן, ומשתמש שיצר אותו.
                                                                                                                                                                                                                                                                          \n", - " על קובץ טקסטואלי ניתן להפעיל את הפעולה count, שמקבלת מחרוזת לחיפוש ומחזירה כמה פעמים המחרוזת הופיעה בקובץ.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " לקובץ בינארי או טקסטואלי יש משקל המיוצג בקילובייטים, תוכן, ומשתמש שיצר אותו.
                                                                                                                                                                                                                                                                          \n", + " על קובץ טקסטואלי ניתן להפעיל את הפעולה count, שמקבלת מחרוזת לחיפוש ומחזירה כמה פעמים המחרוזת הופיעה בקובץ.
                                                                                                                                                                                                                                                                          \n", " אם הקובץ הבינארי הוא מסוג תמונה, צרו עבורו את הפעולה get_dimensions שמחזירה את אורך התמונה ואת רוחבה. אין צורך לממש את תוכן הפעולה עצמה.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2365,8 +2365,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " לכל קובץ שאינו תיקייה צריכה להיות הפעולה .read(), שאליה מעבירים כפרמטר משתמש.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " לכל קובץ שאינו תיקייה צריכה להיות הפעולה .read(), שאליה מעבירים כפרמטר משתמש.
                                                                                                                                                                                                                                                                          \n", " אם המשתמש הוא זה שיצר את הקובץ או שהוא מנהל המערכת, מהפעולה יוחזר תוכן הקובץ. אחרת יוחזר None.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2375,14 +2375,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מאפיה" + "### מאפיה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", " ממשו את משחק המאפיה.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2391,11 +2391,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " המחלקה Game תחזיק את הנתונים על המשחק.
                                                                                                                                                                                                                                                                          \n", - " היא תאפשר למשתמש חדש להצטרף למשחק בעזרת הפעולה add_player, כשהפרמטר שמועבר לה הוא שם השחקן.
                                                                                                                                                                                                                                                                          \n", - " כשהפעולה start תיקרא, יחולק תפקיד לכל אחד מהשחקנים: אזרח, שוטר או איש מאפיה. רק השחקן יודע מה תפקידו במשחק.
                                                                                                                                                                                                                                                                          \n", - " בגרסת המשחק שלנו, יהיה רק איש מאפיה אחד ואיש משטרה אחד.
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " המחלקה Game תחזיק את הנתונים על המשחק.
                                                                                                                                                                                                                                                                          \n", + " היא תאפשר למשתמש חדש להצטרף למשחק בעזרת הפעולה add_player, כשהפרמטר שמועבר לה הוא שם השחקן.
                                                                                                                                                                                                                                                                          \n", + " כשהפעולה start תיקרא, יחולק תפקיד לכל אחד מהשחקנים: אזרח, שוטר או איש מאפיה. רק השחקן יודע מה תפקידו במשחק.
                                                                                                                                                                                                                                                                          \n", + " בגרסת המשחק שלנו, יהיה רק איש מאפיה אחד ואיש משטרה אחד.
                                                                                                                                                                                                                                                                          \n", " אם הפעולה start נקראה אך אין די משתתפים כך שיהיה לפחות אזרח אחד, החזירו מהפעולה False ואל תתחילו את המשחק.\n", "

                                                                                                                                                                                                                                                                          " ] @@ -2404,9 +2404,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                          \n", - " בכל סיבוב 3 חלקים – רצח על ידי המאפיה, עיכוב על ידי השוטר והצבעת האזרחים.
                                                                                                                                                                                                                                                                          \n", - " כשהפעולה start_round נקראת, מתרחשות לפי הסדר הפעולות האלה:
                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                          \n", + " בכל סיבוב 3 חלקים – רצח על ידי המאפיה, עיכוב על ידי השוטר והצבעת האזרחים.
                                                                                                                                                                                                                                                                          \n", + " כשהפעולה start_round נקראת, מתרחשות לפי הסדר הפעולות האלה:
                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                          " ] }, @@ -2414,10 +2414,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                                                                                          1. איש המאפיה יתבקש לרצוח שחקן באמצעות הפעולה kill הממומשת אצל איש המאפיה. השחקן הנרצח יוצא מהמשחק.
                                                                                                                                                                                                                                                                          2. \n", - "
                                                                                                                                                                                                                                                                          3. השוטר יתבקש לעכב את השחקן שלדעתו הוא איש מאפיה בעזרת הפעולה detain הממומשת אצל השוטר.
                                                                                                                                                                                                                                                                          4. \n", - "
                                                                                                                                                                                                                                                                          5. כל אחד מהמשתתפים יצביע מי לדעתו הוא איש המאפיה באמצעות הפעולה vote.
                                                                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                            1. איש המאפיה יתבקש לרצוח שחקן באמצעות הפעולה kill הממומשת אצל איש המאפיה. השחקן הנרצח יוצא מהמשחק.
                                                                                                                                                                                                                                                                            2. \n", + "
                                                                                                                                                                                                                                                                            3. השוטר יתבקש לעכב את השחקן שלדעתו הוא איש מאפיה בעזרת הפעולה detain הממומשת אצל השוטר.
                                                                                                                                                                                                                                                                            4. \n", + "
                                                                                                                                                                                                                                                                            5. כל אחד מהמשתתפים יצביע מי לדעתו הוא איש המאפיה באמצעות הפעולה vote.
                                                                                                                                                                                                                                                                              \n", " מי שקיבל הכי הרבה קולות בהצבעה מוצא להורג ויוצא מהמשחק. אם יש תיקו – כל השחקנים נשארים במשחק.
                                                                                                                                                                                                                                                                            6. \n", "
                                                                                                                                                                                                                                                                            " ] @@ -2426,8 +2426,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " המשחק מסתיים בניצחון למאפיה כאשר נשארים רק שני משתתפים במשחק, שאחד מהם הוא איש המאפיה.
                                                                                                                                                                                                                                                                            \n", + "

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

                                                                                                                                                                                                                                                                            " ] @@ -2436,8 +2436,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " בונוס: ממשו את השאלה כבוט לטלגרם.\n", + "

                                                                                                                                                                                                                                                                            \n", + "בונוס: ממשו את השאלה כבוט לטלגרם.\n", "

                                                                                                                                                                                                                                                                            " ] } diff --git a/week8/2_Inheritance_Part_2.ipynb b/week8/2_Inheritance_Part_2.ipynb index 92ef5a1..e8efd6a 100644 --- a/week8/2_Inheritance_Part_2.ipynb +++ b/week8/2_Inheritance_Part_2.ipynb @@ -4,29 +4,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# ירושה – חלק 2" + "# ירושה – חלק 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " בשיעור הקודם למדנו על ירושה – מנגנון תכנותי שמאפשר יצירת מחלקה על בסיס תכונותיה ופעולותיה של מחלקה אחרת.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " בשיעור הקודם למדנו על ירושה – מנגנון תכנותי שמאפשר יצירת מחלקה על בסיס תכונותיה ופעולותיה של מחלקה אחרת.
                                                                                                                                                                                                                                                                            \n", " סקרנו באילו מקרים נכון לבצע ירושה, ודיברנו על חילוקי הדעות ועל הסיבוכים האפשריים שירושה עלולה לגרום. \n", "

                                                                                                                                                                                                                                                                            " ] @@ -35,8 +35,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " חקרנו את היכולת של תת־מחלקה להגדיר מחדש פעולות של מחלקת־העל וקראנו לכך \"דריסה\" של פעולה.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " חקרנו את היכולת של תת־מחלקה להגדיר מחדש פעולות של מחלקת־העל וקראנו לכך \"דריסה\" של פעולה.
                                                                                                                                                                                                                                                                            \n", " דיברנו גם על הפונקציה super שמאפשרת לנו לקרוא בקלות לפעולות במחלקת־העל.\n", "

                                                                                                                                                                                                                                                                            " ] @@ -45,9 +45,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " ירושה היא כר פורה לשיח בין תיאורטיקנים של מדעי המחשב.
                                                                                                                                                                                                                                                                            \n", - " נכתבו עליה מילים רבות, והיא נושא מרכזי בדיונים על הנדסת תוכנה.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " ירושה היא כר פורה לשיח בין תיאורטיקנים של מדעי המחשב.
                                                                                                                                                                                                                                                                            \n", + " נכתבו עליה מילים רבות, והיא נושא מרכזי בדיונים על הנדסת תוכנה.
                                                                                                                                                                                                                                                                            \n", " במחברת זו נעמיק ונסקור שימושים וטכניקות שהתפתחו מתוך רעיון הירושה במחלקות.\n", "

                                                                                                                                                                                                                                                                            " ] @@ -56,22 +56,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## שימושים נפוצים לירושה" + "## שימושים נפוצים לירושה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### רמות ירושה מרובות" + "### רמות ירושה מרובות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " הרעיון הבסיסי ביותר בירושה הוא העובדה שיכולה להיות יותר מרמה אחת של ירושה.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " הרעיון הבסיסי ביותר בירושה הוא העובדה שיכולה להיות יותר מרמה אחת של ירושה.
                                                                                                                                                                                                                                                                            \n", " קרי: אם מחלקה ב ירשה ממחלקה א, מחלקה ג יכולה לרשת ממחלקה ב.\n", "

                                                                                                                                                                                                                                                                            " ] @@ -80,8 +80,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " בקטע הקוד הבא, לדוגמה, המחלקה יונק (Mammal) יורשת מהמחלקה \"חיה\" (Animal).
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " בקטע הקוד הבא, לדוגמה, המחלקה יונק (Mammal) יורשת מהמחלקה \"חיה\" (Animal).
                                                                                                                                                                                                                                                                            \n", " המחלקות עטלף (Bat) וארנב (Rabbit) יורשות מהמחלקה \"יונק\".\n", "

                                                                                                                                                                                                                                                                            " ] @@ -112,7 +112,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", " במקרה כזה, המחלקות Bat ו־Rabbit ירשו הן את התכונות והפעולות של המחלקה Mammal, והן את אלו של Animal.\n", "

                                                                                                                                                                                                                                                                            " ] @@ -122,8 +122,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                            \n", - " \"בתמונה\n", - "
                                                                                                                                                                                                                                                                            דוגמה לרמות ירושה מרובות: המחלקות Rabbit ו־Bat יורשות ממחלקה שיורשת ממחלקה נוספת.\n", + "\"בתמונה\n", + "
                                                                                                                                                                                                                                                                            דוגמה לרמות ירושה מרובות: המחלקות Rabbit ו־Bat יורשות ממחלקה שיורשת ממחלקה נוספת.\n", "
                                                                                                                                                                                                                                                                            \n", "
                                                                                                                                                                                                                                                                            " ] @@ -132,7 +132,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", " אפשר לקבל את שרשרת מחלקות־העל של מחלקה מסוימת לפי סדרן בעזרת class_name.mro():\n", "

                                                                                                                                                                                                                                                                            " ] @@ -150,9 +150,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " בפנייה לפעולה כלשהי, תחפש פייתון את הפעולה במחלקה הראשונה שמופיעה ב־MRO.
                                                                                                                                                                                                                                                                            \n", - " אם הפעולה לא מופיעה שם, תיגש פייתון למחלקה שאחריה, כך עד שהיא תגיע ל־object שתמיד יהיה בראש השרשרת.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " בפנייה לפעולה כלשהי, תחפש פייתון את הפעולה במחלקה הראשונה שמופיעה ב־MRO.
                                                                                                                                                                                                                                                                            \n", + " אם הפעולה לא מופיעה שם, תיגש פייתון למחלקה שאחריה, כך עד שהיא תגיע ל־object שתמיד יהיה בראש השרשרת.
                                                                                                                                                                                                                                                                            \n", " אם הפעולה לא קיימת באף אחת מהמחלקות שמופיעות ב־MRO, פייתון תזרוק NameError.\n", "

                                                                                                                                                                                                                                                                            " ] @@ -161,8 +161,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " מבחינה הנדסית, מומלץ להימנע ככל האפשר מירושה מרובת רמות כשאין בכך צורך ממשי.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " מבחינה הנדסית, מומלץ להימנע ככל האפשר מירושה מרובת רמות כשאין בכך צורך ממשי.
                                                                                                                                                                                                                                                                            \n", " ירושה מרובת רמות תגדיל את הסיכוי לתסמונת מחלקת־העל השברירית, תקשה על בדיקת התוכנית ותיצור בעיות תחזוקה בעתיד.\n", "

                                                                                                                                                                                                                                                                            " ] @@ -171,15 +171,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מחלקה מופשטת" + "### מחלקה מופשטת" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " כל חיה משמיעה צליל האופייני לה: כלב נובח, פרה גועה ויונה הומה.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " כל חיה משמיעה צליל האופייני לה: כלב נובח, פרה גועה ויונה הומה.
                                                                                                                                                                                                                                                                            \n", " נממש מחלקה עבור כל חיה:\n", "

                                                                                                                                                                                                                                                                            " ] @@ -233,7 +233,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", " נשים לב שצורת כל המחלקות דומה – מקרה קלאסי לירושה:\n", "

                                                                                                                                                                                                                                                                            " ] @@ -281,8 +281,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " לעיתים קרובות אנחנו רוצים לממש קבוצת מחלקות שיש להן את אותן תכונות ופעולות – בדיוק כמו במקרה של Dog, Cow ו־Dove.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " לעיתים קרובות אנחנו רוצים לממש קבוצת מחלקות שיש להן את אותן תכונות ופעולות – בדיוק כמו במקרה של Dog, Cow ו־Dove.
                                                                                                                                                                                                                                                                            \n", " במקרה כזה נפנה באופן טבעי לירושה, שבה מחלקת־העל תכיל את התכונות והפעולות המשותפות לכל המחלקות.\n", "

                                                                                                                                                                                                                                                                            " ] @@ -291,10 +291,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " החיסרון במחלקת Animal הוא שכעת אפשר ליצור ישירות ממנה מופעים.
                                                                                                                                                                                                                                                                            \n", - " זה לא מה שהתכוונו שיקרה. המחלקה הזו קיימת רק כדי לייצג רעיון מופשט של חיה, ולאפשר ירושת תכונות ופעולות ממקור אחד.
                                                                                                                                                                                                                                                                            \n", - " מטרת התוכנית היא לאפשר לבעלי חיים להשמיע קול, ולכן אין משמעות ביצירת מופע מהמחלקה Animal – שהרי ל\"חיה\" כרעיון מופשט אין קול.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " החיסרון במחלקת Animal הוא שכעת אפשר ליצור ישירות ממנה מופעים.
                                                                                                                                                                                                                                                                            \n", + " זה לא מה שהתכוונו שיקרה. המחלקה הזו קיימת רק כדי לייצג רעיון מופשט של חיה, ולאפשר ירושת תכונות ופעולות ממקור אחד.
                                                                                                                                                                                                                                                                            \n", + " מטרת התוכנית היא לאפשר לבעלי חיים להשמיע קול, ולכן אין משמעות ביצירת מופע מהמחלקה Animal – שהרי ל\"חיה\" כרעיון מופשט אין קול.
                                                                                                                                                                                                                                                                            \n", "

                                                                                                                                                                                                                                                                            " ] }, @@ -302,9 +302,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " חיסרון נוסף הוא שמחלקות יכולות לרשת ממחלקת Animal מבלי לממש את הפעולה make_sound.
                                                                                                                                                                                                                                                                            \n", - " אם היינו מתכנתים פיסת קוד כללית שמטפלת בחיות, ייתכן שזה היה תקין, אבל לא זה המקרה בקוד שלמעלה.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " חיסרון נוסף הוא שמחלקות יכולות לרשת ממחלקת Animal מבלי לממש את הפעולה make_sound.
                                                                                                                                                                                                                                                                            \n", + " אם היינו מתכנתים פיסת קוד כללית שמטפלת בחיות, ייתכן שזה היה תקין, אבל לא זה המקרה בקוד שלמעלה.
                                                                                                                                                                                                                                                                            \n", " מטרת התוכנה שלנו הייתה מלכתחילה לייצג קולות של חיות, ומחלקה שיורשת מ־Animal ולא מממשת את make_sound היא פתח לבאגים בעתיד.\n", "

                                                                                                                                                                                                                                                                            " ] @@ -313,8 +313,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " הפתרון לשתי הבעיות שהוצגו כאן נקרא בהנדסת תוכנה \"מחלקה מופשטת\" (Abstract Class).
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " הפתרון לשתי הבעיות שהוצגו כאן נקרא בהנדסת תוכנה \"מחלקה מופשטת\" (Abstract Class).
                                                                                                                                                                                                                                                                            \n", " זהו מצב שבו אנחנו משתמשים במחלקת־על ל־3 צרכים:\n", "

                                                                                                                                                                                                                                                                            " ] @@ -323,10 +323,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                            1. איגוד של תתי־מחלקות והורשת תכונות ופעולות לכולן (ירושה קלאסית).
                                                                                                                                                                                                                                                                            2. \n", - "
                                                                                                                                                                                                                                                                            3. אכיפה שכל תתי־המחלקות יממשו פעולות שהגדרנו במחלקת־העל כפעולות שחייבים לממש.
                                                                                                                                                                                                                                                                            4. \n", - "
                                                                                                                                                                                                                                                                            5. אכיפה שתאסור יצירת מופעים ממחלקת־העל המופשטת. יצירת מופעים תתאפשר רק מתתי־המחלקות שיורשות אותה.
                                                                                                                                                                                                                                                                            6. \n", + "
                                                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                                              1. איגוד של תתי־מחלקות והורשת תכונות ופעולות לכולן (ירושה קלאסית).
                                                                                                                                                                                                                                                                              2. \n", + "
                                                                                                                                                                                                                                                                              3. אכיפה שכל תתי־המחלקות יממשו פעולות שהגדרנו במחלקת־העל כפעולות שחייבים לממש.
                                                                                                                                                                                                                                                                              4. \n", + "
                                                                                                                                                                                                                                                                              5. אכיפה שתאסור יצירת מופעים ממחלקת־העל המופשטת. יצירת מופעים תתאפשר רק מתתי־המחלקות שיורשות אותה.
                                                                                                                                                                                                                                                                              6. \n", "
                                                                                                                                                                                                                                                                              " ] }, @@ -334,7 +334,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", " נהוג לכתוב במחלקת־העל המופשטת את כותרות הפעולות שעל תת־המחלקות שיורשות ממנה לממש:\n", "

                                                                                                                                                                                                                                                                              " ] @@ -388,8 +388,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " הרעיון של מחלקה מופשטת כה נפוץ, שהמודול הפייתוני abc (קיצור של Abstract Base Class) מאפשר לנו להגדיר מחלקה כמופשטת.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " הרעיון של מחלקה מופשטת כה נפוץ, שהמודול הפייתוני abc (קיצור של Abstract Base Class) מאפשר לנו להגדיר מחלקה כמופשטת.
                                                                                                                                                                                                                                                                              \n", " נציץ בתיעוד של המודול וננסה לעקוב אחריו, למרות כל השטרודלים המוזרים שיש שם:\n", "

                                                                                                                                                                                                                                                                              " ] @@ -398,9 +398,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                                              • המחלקה המופשטת שלנו תבצע ירושה מהמחלקה ABC שבמודול abc.
                                                                                                                                                                                                                                                                              • \n", - "
                                                                                                                                                                                                                                                                              • מעל כל פעולה מופשטת (כזו שמשמשת רק לירושה ולא עומדת בפני עצמה) נוסיף @abstractmethod.
                                                                                                                                                                                                                                                                              • \n", + "
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                • המחלקה המופשטת שלנו תבצע ירושה מהמחלקה ABC שבמודול abc.
                                                                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                                                                • מעל כל פעולה מופשטת (כזו שמשמשת רק לירושה ולא עומדת בפני עצמה) נוסיף @abstractmethod.
                                                                                                                                                                                                                                                                                • \n", "
                                                                                                                                                                                                                                                                                " ] }, @@ -468,9 +468,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " חדי העין ישימו לב שהחזרנו את פעולת האתחול __init__ לכל תתי־המחלקות.
                                                                                                                                                                                                                                                                                \n", - " זה קרה כיוון שהגדרנו את __init__ כפעולה מופשטת במחלקת Animal.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " חדי העין ישימו לב שהחזרנו את פעולת האתחול __init__ לכל תתי־המחלקות.
                                                                                                                                                                                                                                                                                \n", + " זה קרה כיוון שהגדרנו את __init__ כפעולה מופשטת במחלקת Animal.
                                                                                                                                                                                                                                                                                \n", " להגדרה של פעולה כמופשטת שתי השלכות מיידיות:\n", "

                                                                                                                                                                                                                                                                                " ] @@ -479,9 +479,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                                • תתי־המחלקות שיורשות מהמחלקה המופשטת, חייבות לממש את כל הפעולות שמוגדרות במחלקת־העל כמופשטות.
                                                                                                                                                                                                                                                                                • \n", - "
                                                                                                                                                                                                                                                                                • גישה ישירה לפעולה המופשטת במחלקה שבה היא הוגדרה במקור כמופשטת, תביא לזריקת שגיאה.
                                                                                                                                                                                                                                                                                • \n", + "
                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                  • תתי־המחלקות שיורשות מהמחלקה המופשטת, חייבות לממש את כל הפעולות שמוגדרות במחלקת־העל כמופשטות.
                                                                                                                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                                                                                                                  • גישה ישירה לפעולה המופשטת במחלקה שבה היא הוגדרה במקור כמופשטת, תביא לזריקת שגיאה.
                                                                                                                                                                                                                                                                                  • \n", "
                                                                                                                                                                                                                                                                                  " ] }, @@ -489,7 +489,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", " עכשיו כשנרצה ליצור מופע מ־Animal, נגלה שזה בלתי אפשרי, כיוון ש־Animal.__init__ מוגדרת כמופשטת:\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -507,8 +507,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " אם ננסה ליצור תת־מחלקה שיורשת מ־Animal ולא מממשת את אחת הפעולות המופשטות שלה, נגלה שלא נוכל ליצור ממנה מופעים.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " אם ננסה ליצור תת־מחלקה שיורשת מ־Animal ולא מממשת את אחת הפעולות המופשטות שלה, נגלה שלא נוכל ליצור ממנה מופעים.
                                                                                                                                                                                                                                                                                  \n", " פייתון תזרוק שגיאה שאחת הפעולות המופשטות לא מוגדרת בתת־המחלקה:\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -537,10 +537,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " עוד דבר מעניין שכדאי לשים לב אליו הוא השימוש הכבד ב־**kwargs.
                                                                                                                                                                                                                                                                                  \n", - " כיוון שהפכנו את __init__ למופשטת, אנחנו חייבים לממש אותה בכל תתי־המחלקות שיורשות מ־Animal.
                                                                                                                                                                                                                                                                                  \n", - " למרות זאת, ה־__init__ \"המעניינת\" שעושה השמות לתוך תכונות המופע היא זו של מחלקת־העל Animal,
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " עוד דבר מעניין שכדאי לשים לב אליו הוא השימוש הכבד ב־**kwargs.
                                                                                                                                                                                                                                                                                  \n", + " כיוון שהפכנו את __init__ למופשטת, אנחנו חייבים לממש אותה בכל תתי־המחלקות שיורשות מ־Animal.
                                                                                                                                                                                                                                                                                  \n", + " למרות זאת, ה־__init__ \"המעניינת\" שעושה השמות לתוך תכונות המופע היא זו של מחלקת־העל Animal,
                                                                                                                                                                                                                                                                                  \n", " זו שמקבלת את הפרמטרים name ו־gender ומשנה לפיהם את מצב המופע. \n", "

                                                                                                                                                                                                                                                                                  " ] @@ -549,10 +549,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " ביצירת מופע של אחת מהחיות, נרצה להעביר את הפרמטרים name ו־gender שמיועדים ל־Animal.__init__.
                                                                                                                                                                                                                                                                                  \n", - " אבל ביצירת מופע של יונה, של פרה או של כלב אנחנו נקרא בפועל ל־__init__ שמימשו תתי־המחלקות.
                                                                                                                                                                                                                                                                                  \n", - " בשלב הזה, תתי־המחלקות צריכות למצוא דרך לקבל את הפרמטרים הרלוונטיים ולהעביר אותם למחלקת־העל שעושה השמות ל־self.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " ביצירת מופע של אחת מהחיות, נרצה להעביר את הפרמטרים name ו־gender שמיועדים ל־Animal.__init__.
                                                                                                                                                                                                                                                                                  \n", + " אבל ביצירת מופע של יונה, של פרה או של כלב אנחנו נקרא בפועל ל־__init__ שמימשו תתי־המחלקות.
                                                                                                                                                                                                                                                                                  \n", + " בשלב הזה, תתי־המחלקות צריכות למצוא דרך לקבל את הפרמטרים הרלוונטיים ולהעביר אותם למחלקת־העל שעושה השמות ל־self.
                                                                                                                                                                                                                                                                                  \n", " כדי להעביר את כל הפרמטרים שמחלקת־העל צריכה, גם אם חתימת הפעולה Animal.__init__ תשתנה בעתיד, אנחנו משתמשים ב־**kwargs.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -561,8 +561,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " השימוש במחלקות מופשטות נפוץ בתכנות כדי לאפשר הרחבה נוחה של התוכנה.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " השימוש במחלקות מופשטות נפוץ בתכנות כדי לאפשר הרחבה נוחה של התוכנה.
                                                                                                                                                                                                                                                                                  \n", " מערכות שמאפשרות למתכנתים להרחיב את יכולותיהן בעזרת תוספים, לדוגמה, ישתמשו במחלקות מופשטות כדי להגדיר למתכנת דרך להתממשק עם הקוד של התוכנה.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -571,16 +571,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: Friendliness Pellets" + "### תרגיל ביניים: Friendliness Pellets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " בחנות הפרחים של מושניק מוכרים זרי פרחים.
                                                                                                                                                                                                                                                                                  \n", - " נמכר עם אגרטל או בלעדיו, ויש בו 3–30 פרחים מסוגים שונים: ורדים, סייפנים וסחלבים.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " בחנות הפרחים של מושניק מוכרים זרי פרחים.
                                                                                                                                                                                                                                                                                  \n", + " נמכר עם אגרטל או בלעדיו, ויש בו 3–30 פרחים מסוגים שונים: ורדים, סייפנים וסחלבים.
                                                                                                                                                                                                                                                                                  \n", " לכל אחד מהפרחים צבע שונה.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -589,9 +589,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " המחיר של סייפן הוא 4 ש\"ח ושל סחלב 10 ש\"ח.
                                                                                                                                                                                                                                                                                  \n", - " המחיר של ורד נקבע לפי הצבע שלו: ורד לבן עולה 5 ש\"ח, וורד אדום עולה 6 ש\"ח.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " המחיר של סייפן הוא 4 ש\"ח ושל סחלב 10 ש\"ח.
                                                                                                                                                                                                                                                                                  \n", + " המחיר של ורד נקבע לפי הצבע שלו: ורד לבן עולה 5 ש\"ח, וורד אדום עולה 6 ש\"ח.
                                                                                                                                                                                                                                                                                  \n", " עבור זר עם אגרטל, על הלקוח להוסיף 20 ש\"ח.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -600,10 +600,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " כדי למשוך לקוחות חדשים, מדי פעם מושניק נותן הנחה על הזרים.
                                                                                                                                                                                                                                                                                  \n", - " לכל אחת מההנחות מושניק מצרף הערה שמסבירה מה הסיבה שבגינה ניתנה ההנחה.
                                                                                                                                                                                                                                                                                  \n", - " ישנם שני סוגים של הנחות בחנות: הנחה באחוזים והנחה שקלית.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " כדי למשוך לקוחות חדשים, מדי פעם מושניק נותן הנחה על הזרים.
                                                                                                                                                                                                                                                                                  \n", + " לכל אחת מההנחות מושניק מצרף הערה שמסבירה מה הסיבה שבגינה ניתנה ההנחה.
                                                                                                                                                                                                                                                                                  \n", + " ישנם שני סוגים של הנחות בחנות: הנחה באחוזים והנחה שקלית.
                                                                                                                                                                                                                                                                                  \n", " לכל זר יכולות להיות כמה הנחות, אשר יחושבו לפי סדר צירופן.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -612,8 +612,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " לדוגמה, אם הזר עלה 200 ש\"ח ומושניק החליט לתת הנחה של 10 אחוזים, הזר יעלה כעת 180 ש\"ח.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " לדוגמה, אם הזר עלה 200 ש\"ח ומושניק החליט לתת הנחה של 10 אחוזים, הזר יעלה כעת 180 ש\"ח.
                                                                                                                                                                                                                                                                                  \n", " אם מושניק החליט לתת הנחה נוספת על הזר, הפעם של 30 ש\"ח, מחירו של הזר יהיה כעת 150 ש\"ח.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -622,7 +622,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", " אפשרו ללקוחות שרוצים חשבונית עבור רכישתם לקבל פירוט מודפס של חישוב המחיר של הזר.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -631,14 +631,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ירושה מרובה" + "### ירושה מרובה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", " ישר ולעניין – יש לי חדשות משוגעות עבורכם: כל מחלקה יכולה לרשת מיותר ממחלקה אחת!\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -647,9 +647,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " ניצור מחלקה המייצגת כלי נשק, ומחלקה אחרת המייצגת כלי רכב.
                                                                                                                                                                                                                                                                                  \n", - " מחלקת כלי הנשק תכלול את כוח כלי הנשק (strength) ופעולת תקיפה (attack).
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " ניצור מחלקה המייצגת כלי נשק, ומחלקה אחרת המייצגת כלי רכב.
                                                                                                                                                                                                                                                                                  \n", + " מחלקת כלי הנשק תכלול את כוח כלי הנשק (strength) ופעולת תקיפה (attack).
                                                                                                                                                                                                                                                                                  \n", " מחלקת כלי הרכב תכלול את המהירות המרבית של כלי הרכב (max_speed) ופעולה של הערכת זמן הגעה משוער (estimate_arrival_time).\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -658,8 +658,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " אם נרצה ליצור מחלקת טנק, לדוגמה, ייתכן שנרצה לרשת גם ממחלקת כלי הנשק וגם ממחלקת כלי הרכב.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " אם נרצה ליצור מחלקת טנק, לדוגמה, ייתכן שנרצה לרשת גם ממחלקת כלי הנשק וגם ממחלקת כלי הרכב.
                                                                                                                                                                                                                                                                                  \n", " פייתון מאפשרת לנו לעשות זאת בקלות יחסית:\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -698,9 +698,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " בדוגמה שלמעלה מחלקת Tank יורשת את התכונות ואת הפעולות, הן של מחלקת Vehicle והן של מחלקת Weapon.
                                                                                                                                                                                                                                                                                  \n", - " כל מה שהיינו צריכים לעשות זה לציין בסוגריים שאחרי המחלקה Tank את כל המחלקות שמהן אנחנו רוצים לרשת, כשהן מופרדות בפסיק זו מזו.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " בדוגמה שלמעלה מחלקת Tank יורשת את התכונות ואת הפעולות, הן של מחלקת Vehicle והן של מחלקת Weapon.
                                                                                                                                                                                                                                                                                  \n", + " כל מה שהיינו צריכים לעשות זה לציין בסוגריים שאחרי המחלקה Tank את כל המחלקות שמהן אנחנו רוצים לרשת, כשהן מופרדות בפסיק זו מזו.
                                                                                                                                                                                                                                                                                  \n", " ניצור טנק לדוגמה, ונראה איך הוא קיבל את התכונות של כל מחלקות־העל שמהן הוא ירש:\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -724,9 +724,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " לפני שנסביר בהרחבה איך הכול עובד, נעצור רגע כדי להגיד שירושה מרובה היא נושא שיחה נפיץ.
                                                                                                                                                                                                                                                                                  \n", - " בגלל הסיבוכיות והשכבות הנוספות שהוא מוסיף לכל מופע, תמצאו מתכנתים רבים שמתנגדים בתוקף לרעיון הירושה המרובה.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " לפני שנסביר בהרחבה איך הכול עובד, נעצור רגע כדי להגיד שירושה מרובה היא נושא שיחה נפיץ.
                                                                                                                                                                                                                                                                                  \n", + " בגלל הסיבוכיות והשכבות הנוספות שהוא מוסיף לכל מופע, תמצאו מתכנתים רבים שמתנגדים בתוקף לרעיון הירושה המרובה.
                                                                                                                                                                                                                                                                                  \n", "

                                                                                                                                                                                                                                                                                  " ] }, @@ -734,9 +734,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " נציג בזריזות את אחת הבעיות הקלאסיות שנובעות מירושה מרובה – בעיית היהלום.
                                                                                                                                                                                                                                                                                  \n", - " בבעיה זו מוצגת תת־מחלקה שיורשת מ־2 מחלקות־על, שהן עצמן תת־מחלקות של מחלקה נוספת.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " נציג בזריזות את אחת הבעיות הקלאסיות שנובעות מירושה מרובה – בעיית היהלום.
                                                                                                                                                                                                                                                                                  \n", + " בבעיה זו מוצגת תת־מחלקה שיורשת מ־2 מחלקות־על, שהן עצמן תת־מחלקות של מחלקה נוספת.
                                                                                                                                                                                                                                                                                  \n", " לדוגמה: מחלקת \"כפתור\" יורשת ממחלקת \"לחיץ\" וממחלקת \"מלבן\", שיורשות ממחלקת \"אובייקט\". \n", "

                                                                                                                                                                                                                                                                                  " ] @@ -746,8 +746,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                  \n", - " \"עץ\n", - "
                                                                                                                                                                                                                                                                                  \n", + "\"עץ\n", + "
                                                                                                                                                                                                                                                                                  \n", " עץ ירושה בצורת יהלום המדגים את הבעיה המתוארת.\n", "
                                                                                                                                                                                                                                                                                  \n", "
                                                                                                                                                                                                                                                                                  " @@ -757,9 +757,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " אם גם \"לחיץ\" וגם \"מלבן\" מימשו את פעולת __str__ אבל מחלקת \"כפתור\" לא, באיזו גרסה של __str__ מחלקת \"כפתור\" צריכה להשתמש?
                                                                                                                                                                                                                                                                                  \n", - " ומה בנוגע למצב שבו גם \"לחיץ\" וגם \"אובייקט\" מימשו את הפעולה?
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " אם גם \"לחיץ\" וגם \"מלבן\" מימשו את פעולת __str__ אבל מחלקת \"כפתור\" לא, באיזו גרסה של __str__ מחלקת \"כפתור\" צריכה להשתמש?
                                                                                                                                                                                                                                                                                  \n", + " ומה בנוגע למצב שבו גם \"לחיץ\" וגם \"אובייקט\" מימשו את הפעולה?
                                                                                                                                                                                                                                                                                  \n", "

                                                                                                                                                                                                                                                                                  " ] }, @@ -767,9 +767,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " כפי שוודאי הצלחתם להבין, ירושה מרובה יכולה להכניס אותנו להרבה \"פינות\" שלא מוגדרות היטב.
                                                                                                                                                                                                                                                                                  \n", - " מהסיבה הזו פייתון החליטה לעשות מעשה, וליישר בכוח את העץ.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " כפי שוודאי הצלחתם להבין, ירושה מרובה יכולה להכניס אותנו להרבה \"פינות\" שלא מוגדרות היטב.
                                                                                                                                                                                                                                                                                  \n", + " מהסיבה הזו פייתון החליטה לעשות מעשה, וליישר בכוח את העץ.
                                                                                                                                                                                                                                                                                  \n", " נביט בשרשרת הירושה של מחלקת Tank:\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -787,9 +787,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " אף על פי שטכנית היינו מצפים לראות עץ שבו Weapon ו־Vehicle נמצאות באותה רמה ומצביעות על Tank,
                                                                                                                                                                                                                                                                                  \n", - " בפועל פייתון \"משטחת\" את עץ הירושה כך ש־Tank יורשת מ־Weapon שיורשת מ־Vehicle.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " אף על פי שטכנית היינו מצפים לראות עץ שבו Weapon ו־Vehicle נמצאות באותה רמה ומצביעות על Tank,
                                                                                                                                                                                                                                                                                  \n", + " בפועל פייתון \"משטחת\" את עץ הירושה כך ש־Tank יורשת מ־Weapon שיורשת מ־Vehicle.
                                                                                                                                                                                                                                                                                  \n", " הסדר של המחלקות לאחר השיטוח נקבע לפי אלגוריתם שנקרא C3 Linearization, אבל זה לא משהו שבאמת חשוב לדעת בשלב הזה.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -799,8 +799,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                  \n", - " \"בתמונה\n", - "
                                                                                                                                                                                                                                                                                  דוגמה להשטחה שפייתון עושה לירושה מרובה.\n", + "\"בתמונה\n", + "
                                                                                                                                                                                                                                                                                  דוגמה להשטחה שפייתון עושה לירושה מרובה.\n", "
                                                                                                                                                                                                                                                                                  \n", "
                                                                                                                                                                                                                                                                                  " ] @@ -809,17 +809,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Mixin־ים" + "### Mixin־ים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " רעיון נפוץ המבוסס על ירושה מרובה הוא Mixin.
                                                                                                                                                                                                                                                                                  \n", - " Mixin היא מחלקה שאין לה תכלית בפני עצמה, והיא קיימת כדי \"לתרום\" תכונות ופעולות למחלקה שתירש אותה.
                                                                                                                                                                                                                                                                                  \n", - " לרוב נשתמש בשתי Mixins לפחות, כדי ליצור מהן מחלקות מורכבות יותר, שכוללות את הפעולות והתכונות של כל ה־Mixins.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " רעיון נפוץ המבוסס על ירושה מרובה הוא Mixin.
                                                                                                                                                                                                                                                                                  \n", + "Mixin היא מחלקה שאין לה תכלית בפני עצמה, והיא קיימת כדי \"לתרום\" תכונות ופעולות למחלקה שתירש אותה.
                                                                                                                                                                                                                                                                                  \n", + " לרוב נשתמש בשתי Mixins לפחות, כדי ליצור מהן מחלקות מורכבות יותר, שכוללות את הפעולות והתכונות של כל ה־Mixins.
                                                                                                                                                                                                                                                                                  \n", " לדוגמה: ניצור מחלקת \"כפתור\" (Button) שיורשת ממחלקת \"מלבן גדול\" (LargeRectangle) וממחלקת \"לחיץ\" (Clickable).\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -857,7 +857,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", " ניצור כפתור ונראה שהוא אכן קיבל את התכונות והפעולות משתי המחלקות:\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -878,10 +878,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                                                  \n", + " בחלק משפות התכנות האחרות ל־Mixins יש תחביר מיוחד, אולם בפייתון משתמשים פשוט בירושה מרובה.
                                                                                                                                                                                                                                                                                  \n", + " מהסיבה הזו, בין היתר, ההבדל בין Mixins לבין ירושה מרובה עלול להיראות מעורפל מעט.
                                                                                                                                                                                                                                                                                  \n", + " הדגש ב־Mixins הוא שהן מוגדרות כארגז תכונות או פעולות שאפשר לרשת, והן לא מיועדות לכך שיצרו ישירות מהן מופעים.
                                                                                                                                                                                                                                                                                  \n", " אפשר להגיד שכל מקרה של Mixins משתמש בירושה מרובה, אך לא כל מקרה של ירושה מרובה כולל Mixins.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -890,27 +890,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                                  מחלקה מופשטת (Abstract Class)
                                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                                  \n", - " מחלקה שלא נהוג ליצור ממנה מופעים.
                                                                                                                                                                                                                                                                                  \n", - " המחלקה המופשטת תגדיר פעולות ללא מימוש שנקראות \"פעולות מופשטות\".
                                                                                                                                                                                                                                                                                  \n", - " המחלקות שיורשות מהמחלקה המופשטת יממשו את הפעולות הללו.
                                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                                  ירושה מרובה (Multiple Inheritance)
                                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                  מחלקה מופשטת (Abstract Class)
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                  \n", + " מחלקה שלא נהוג ליצור ממנה מופעים.
                                                                                                                                                                                                                                                                                  \n", + " המחלקה המופשטת תגדיר פעולות ללא מימוש שנקראות \"פעולות מופשטות\".
                                                                                                                                                                                                                                                                                  \n", + " המחלקות שיורשות מהמחלקה המופשטת יממשו את הפעולות הללו.
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                  ירושה מרובה (Multiple Inheritance)
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                  \n", " ירושה שמחלקה מבצעת ממחלקות רבות, במטרה לקבל את תכונותיהן ופעולותיהן של כמה מחלקות־על. \n", "
                                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                                  Mixin
                                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                                  \n", - " מחלקה שמטרתה לספק תכונות ופעולות למחלקות היורשות אותה, ואין לה שימוש כשהיא עומדת בפני עצמה.
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                  Mixin
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                  \n", + " מחלקה שמטרתה לספק תכונות ופעולות למחלקות היורשות אותה, ואין לה שימוש כשהיא עומדת בפני עצמה.
                                                                                                                                                                                                                                                                                  \n", " לרוב נעשה שימוש ביותר מ־Mixin אחת בעזרת ירושה מרובה. \n", "
                                                                                                                                                                                                                                                                                  \n", "
                                                                                                                                                                                                                                                                                  " @@ -920,23 +920,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגיל לדוגמה" + "## תרגיל לדוגמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### הקדמה" + "### הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " שחמט הוא משחק שבו שני שחקנים מתמודדים זה מול זה על לכידת מלכו של היריב.
                                                                                                                                                                                                                                                                                  \n", - " לכל אחד מהשחקנים יש צבא שמורכב מכלי משחק, ועליהם לעשות בצבא שימוש מושכל כדי להשיג יתרון על פני השחקן השני.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " שחמט הוא משחק שבו שני שחקנים מתמודדים זה מול זה על לכידת מלכו של היריב.
                                                                                                                                                                                                                                                                                  \n", + " לכל אחד מהשחקנים יש צבא שמורכב מכלי משחק, ועליהם לעשות בצבא שימוש מושכל כדי להשיג יתרון על פני השחקן השני.
                                                                                                                                                                                                                                                                                  \n", " כדי להבדיל בין כלי המשחק של השחקנים, כלי המשחק של שחקן אחד לבנים ואילו של השחקן השני שחורים.\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -945,8 +945,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " ממשו לוח של משחק שחמט בגודל 8 על 8 משבצות.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " ממשו לוח של משחק שחמט בגודל 8 על 8 משבצות.
                                                                                                                                                                                                                                                                                  \n", "

                                                                                                                                                                                                                                                                                  " ] }, @@ -955,8 +955,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                  \n", - " \"תמונה\n", - "
                                                                                                                                                                                                                                                                                  לוח שחמט סטנדרטי ללא כלים עליו.
                                                                                                                                                                                                                                                                                  מקור: ויקיפדיה.\n", + "\"תמונה\n", + "
                                                                                                                                                                                                                                                                                  לוח שחמט סטנדרטי ללא כלים עליו.
                                                                                                                                                                                                                                                                                  מקור: ויקיפדיה.\n", "
                                                                                                                                                                                                                                                                                  \n", "
                                                                                                                                                                                                                                                                                  " ] @@ -965,9 +965,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                  \n", - " בשחמט 6 סוגים של כלי משחק: רגלי, צריח, פרש, רץ, מלך ומלכה.
                                                                                                                                                                                                                                                                                  \n", - " בפתיחת המשחק, שורות 1 ו־2 מלאות בכליו של השחקן הלבן ושורות 7 ו־8 מלאות בכליו של השחקן השחור.
                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                  \n", + " בשחמט 6 סוגים של כלי משחק: רגלי, צריח, פרש, רץ, מלך ומלכה.
                                                                                                                                                                                                                                                                                  \n", + " בפתיחת המשחק, שורות 1 ו־2 מלאות בכליו של השחקן הלבן ושורות 7 ו־8 מלאות בכליו של השחקן השחור.
                                                                                                                                                                                                                                                                                  \n", " הכלים מסודרים על הלוח כדלקמן:\n", "

                                                                                                                                                                                                                                                                                  " ] @@ -976,13 +976,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                  • על כל המשבצות בשורה 2 ובשורה 7 מונחים רגלים.
                                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                                  • בשורות 1 ו־8, בטורים א ו־ח מונחים צריחים.
                                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                                  • בשורות 1 ו־8, בטורים ב ו־ז מונחים פרשים.
                                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                                  • בשורות 1 ו־8, בטורים ג ו־ו מונחים רצים.
                                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                                  • בשורות 1 ו־8, בטור ד מונחת המלכה.
                                                                                                                                                                                                                                                                                  • \n", - "
                                                                                                                                                                                                                                                                                  • בשורות 1 ו־8, בטור ה מונח המלך.
                                                                                                                                                                                                                                                                                  • \n", + "
                                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                                    • על כל המשבצות בשורה 2 ובשורה 7 מונחים רגלים.
                                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                                    • בשורות 1 ו־8, בטורים א ו־ח מונחים צריחים.
                                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                                    • בשורות 1 ו־8, בטורים ב ו־ז מונחים פרשים.
                                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                                    • בשורות 1 ו־8, בטורים ג ו־ו מונחים רצים.
                                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                                    • בשורות 1 ו־8, בטור ד מונחת המלכה.
                                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                                    • בשורות 1 ו־8, בטור ה מונח המלך.
                                                                                                                                                                                                                                                                                    • \n", "
                                                                                                                                                                                                                                                                                    " ] }, @@ -990,17 +990,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                    \n", - " חוקי התנועה של הכלים מפורטים להלן:\n", + "

                                                                                                                                                                                                                                                                                    \n", + "חוקי התנועה של הכלים מפורטים להלן:\n", "

                                                                                                                                                                                                                                                                                    \n", - "\n", - "
                                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                                    • מלכה יכולה לנוע מספר בלתי מוגבל של משבצות לכל כיוון, לצדדים או באלכסון.
                                                                                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                                                                                    • צריח יכול לנוע מספר בלתי מוגבל של צעדים לצדדים: אנכי או אופקי.
                                                                                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                                                                                    • רץ יכול לנוע מספר בלתי מוגבל של צעדים באלכסון.
                                                                                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                                                                                    • פרש יכול לנוע שני צעדים אופקית ואז עוד צעד אנכית, או שני צעדים אנכית ואז עוד צעד אופקית.
                                                                                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                                                                                    • רגלי יכול לנוע צעד אחד לכיוון היריב. אם הוא עדיין לא נע ממקומו ההתחלתי, הוא יכול לבחור לעשות שני צעדים לכיוון היריב.
                                                                                                                                                                                                                                                                                    • \n", - "
                                                                                                                                                                                                                                                                                    • מלך יכול לנוע לכל משבצת הסמוכה לו, כל עוד כלי היריב לא יכולים להגיע למשבצת הזו בתורם.
                                                                                                                                                                                                                                                                                    • \n", + "
                                                                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                                                                      • מלכה יכולה לנוע מספר בלתי מוגבל של משבצות לכל כיוון, לצדדים או באלכסון.
                                                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                                                      • צריח יכול לנוע מספר בלתי מוגבל של צעדים לצדדים: אנכי או אופקי.
                                                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                                                      • רץ יכול לנוע מספר בלתי מוגבל של צעדים באלכסון.
                                                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                                                      • פרש יכול לנוע שני צעדים אופקית ואז עוד צעד אנכית, או שני צעדים אנכית ואז עוד צעד אופקית.
                                                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                                                      • רגלי יכול לנוע צעד אחד לכיוון היריב. אם הוא עדיין לא נע ממקומו ההתחלתי, הוא יכול לבחור לעשות שני צעדים לכיוון היריב.
                                                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                                                      • מלך יכול לנוע לכל משבצת הסמוכה לו, כל עוד כלי היריב לא יכולים להגיע למשבצת הזו בתורם.
                                                                                                                                                                                                                                                                                      • \n", "
                                                                                                                                                                                                                                                                                      " ] }, @@ -1008,10 +1007,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                      \n", - " כלי בתנועה לא יכול \"לדלג\" מעל כלי משחק אחרים – אם כלי נמצא בדרכו, הכלי שבתנועה לא יוכל לגשת למשבצות שנמצאות מעבר לאותו כלי חוסם.
                                                                                                                                                                                                                                                                                      \n", - " יוצא דופן לכלל זה הוא פרש – שיכול לדלג מעל כלים אחרים.
                                                                                                                                                                                                                                                                                      \n", - " אם הכלי החוסם הוא כלי של האויב, הכלי בתנועה רשאי לעבור ולעמוד על המשבצת של הכלי החוסם (נקרא גם \"להכות אותו\"), ולהסיר את הכלי החוסם מהמשחק.
                                                                                                                                                                                                                                                                                      \n", + "

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

                                                                                                                                                                                                                                                                                      " ] @@ -1020,8 +1019,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                      \n", - " השחמטאים שביניכם יכולים להתעלם כרגע ממהלכים \"מיוחדים\", כמו הכאה דרך הילוכו, הצרחה או הכתרה.
                                                                                                                                                                                                                                                                                      \n", + "

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

                                                                                                                                                                                                                                                                                      " ] @@ -1030,15 +1029,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### התרגיל" + "### התרגיל" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                      \n", - " ממשו מחלקת Board שתכיל תכונה בשם board.
                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                      \n", + " ממשו מחלקת Board שתכיל תכונה בשם board.
                                                                                                                                                                                                                                                                                      \n", " ביצירת הלוח, ייווצר לוח תקני מאויש בכלי משחק כפי שהוסבר לעיל.\n", "

                                                                                                                                                                                                                                                                                      " ] @@ -1047,10 +1046,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                      \n", - " לצורך כך, צרו מחלקה כללית בשם Piece המייצגת כלי משחק בשחמט.
                                                                                                                                                                                                                                                                                      \n", - " לכל כלי משחק צבע (color), השורה שבה הוא נמצא (row) והעמודה שבה הוא נמצא (column).
                                                                                                                                                                                                                                                                                      \n", - " צרו גם מחלקות עבור כל אחד מהכלים: Pawn (רגלי), Rook (צריח), Knight (פרש), Bishop (רץ), Queen (מלכה) ו־King (מלך).
                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                      \n", + " לצורך כך, צרו מחלקה כללית בשם Piece המייצגת כלי משחק בשחמט.
                                                                                                                                                                                                                                                                                      \n", + " לכל כלי משחק צבע (color), השורה שבה הוא נמצא (row) והעמודה שבה הוא נמצא (column).
                                                                                                                                                                                                                                                                                      \n", + " צרו גם מחלקות עבור כל אחד מהכלים: Pawn (רגלי), Rook (צריח), Knight (פרש), Bishop (רץ), Queen (מלכה) ו־King (מלך).
                                                                                                                                                                                                                                                                                      \n", "

                                                                                                                                                                                                                                                                                      " ] }, @@ -1058,8 +1057,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                      \n", - " אפשרו לכל אחד מכלי המשחק לזוז על הלוח לפי החוקיות שתוארה מעלה.
                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                      \n", + " אפשרו לכל אחד מכלי המשחק לזוז על הלוח לפי החוקיות שתוארה מעלה.
                                                                                                                                                                                                                                                                                      \n", " דאגו שקריאה ל־Board תדפיס לוח ועליו כלי משחק לפי המצב העדכני של הלוח.\n", "

                                                                                                                                                                                                                                                                                      " ] @@ -1068,15 +1067,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פתרון אפשרי" + "### פתרון אפשרי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                      \n", - " נפתח ונאמר שאם אתם אמיצים במידה מספקת – אנחנו ממליצים לכם לנסות לפתור את התרגיל בעצמכם.
                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                      \n", + " נפתח ונאמר שאם אתם אמיצים במידה מספקת – אנחנו ממליצים לכם לנסות לפתור את התרגיל בעצמכם.
                                                                                                                                                                                                                                                                                      \n", " הוא בהחלט לא פשוט ועלול לקחת לא מעט זמן, ולכן הפתרון שלנו מוגש פה:\n", "

                                                                                                                                                                                                                                                                                      " ] @@ -1552,16 +1551,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                                      \n", - " \"אזהרה!\" \n", - "
                                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                                      \n", - "

                                                                                                                                                                                                                                                                                      \n", - " בשבועיים האחרונים אנחנו משתמשים לא מעט במחלקות כדי לתרגל רעיונות חשובים בתכנות.
                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                                      \n", + "\"אזהרה!\"\n", + "
                                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                      \n", + " בשבועיים האחרונים אנחנו משתמשים לא מעט במחלקות כדי לתרגל רעיונות חשובים בתכנות.
                                                                                                                                                                                                                                                                                      \n", " עם הכוח באה האחריות – למרות כל הטכניקות המגניבות שלמדנו, כדאי להימנע מלסבך הנדסית את הקוד שלנו יתר על המידה.\n", "

                                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                                      \n", "
                                                                                                                                                                                                                                                                                      " ] }, @@ -1569,23 +1568,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מלון קליפורניה" + "### מלון קליפורניה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                                                      \n", + " על כביש מדברי חשוך, כשמשב רוח קריר בשערכם, אתם מבחינים באור המבליח באופק. ראשכם נהיה כבד עליכם ואתם מחליטים לחנות להלילה.
                                                                                                                                                                                                                                                                                      \n", + " אתם ניגשים לדלפק הקבלה במלון הסמוך, פוגשים בקבלה את הילברט, ומבקשים ממנו לשכור חדר.
                                                                                                                                                                                                                                                                                      \n", " הילברט שואל אתכם אם אתם \"טובים במחשבים\", ומבקש שתעזרו לו לכתוב את התוכנה לניהול בית העסק שלו.\n", "

                                                                                                                                                                                                                                                                                      " ] @@ -1594,15 +1593,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                      \n", " לכל חדר במלון קליפורניה נתונים כמפורט:\n", "

                                                                                                                                                                                                                                                                                      \n", - "\n", - "
                                                                                                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                                                                                                      • סוג חדר: יחיד, זוגי, מלכותי או שופרא דשופרא (הילברט עדיין עובד על הקופי).
                                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                                      • מספר חדר.
                                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                                      • קומה.
                                                                                                                                                                                                                                                                                      • \n", - "
                                                                                                                                                                                                                                                                                      • אם פנוי להזמנה.
                                                                                                                                                                                                                                                                                      • \n", + "
                                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                                        • סוג חדר: יחיד, זוגי, מלכותי או שופרא דשופרא (הילברט עדיין עובד על הקופי).
                                                                                                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                                                                                                        • מספר חדר.
                                                                                                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                                                                                                        • קומה.
                                                                                                                                                                                                                                                                                        • \n", + "
                                                                                                                                                                                                                                                                                        • אם פנוי להזמנה.
                                                                                                                                                                                                                                                                                        • \n", "
                                                                                                                                                                                                                                                                                        " ] }, @@ -1610,8 +1608,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " בחדר יחיד אפשר להכניס עד מיטה אחת, בחדר זוגי ובחדר מלכותי שתיים, ובחדר שופרא דשופרא יש מקום לעד 3 מיטות.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " בחדר יחיד אפשר להכניס עד מיטה אחת, בחדר זוגי ובחדר מלכותי שתיים, ובחדר שופרא דשופרא יש מקום לעד 3 מיטות.
                                                                                                                                                                                                                                                                                        \n", " אפשר להוסיף מיטה לכל חדר או להוציא ממנו מיטה, כל עוד יש בחדר לפחות מיטה אחת ומספר המיטות אינו גבוה מהתפוסה המרבית של החדר.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -1620,10 +1618,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " בינתיים, עד שהילברט ימצא תעלול על־אנושי כלשהו, מספר החדרים במלון שלו מוגבל.
                                                                                                                                                                                                                                                                                        \n", - " צרו מחלקה שתנהל את החדרים במלון שלו.
                                                                                                                                                                                                                                                                                        \n", - " המחלקה תכיל את הפעולה search_room שבהפעלתה תחזיר להילברט את החדר הפנוי הראשון שהיא מוצאת.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " בינתיים, עד שהילברט ימצא תעלול על־אנושי כלשהו, מספר החדרים במלון שלו מוגבל.
                                                                                                                                                                                                                                                                                        \n", + " צרו מחלקה שתנהל את החדרים במלון שלו.
                                                                                                                                                                                                                                                                                        \n", + " המחלקה תכיל את הפעולה search_room שבהפעלתה תחזיר להילברט את החדר הפנוי הראשון שהיא מוצאת.
                                                                                                                                                                                                                                                                                        \n", " חלק מהמשתמשים מעדיפים ללון בקומה מסוימת או בחדר מסוג מסוים. אפשרו להעביר לפונקציה את הפרמטרים הללו ולחפש לפיהם. \n", "

                                                                                                                                                                                                                                                                                        " ] @@ -1632,8 +1630,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " על כל חדר שאינו שופרא דשופרא יוכל הלקוח לבצע פעולת upgrade.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " על כל חדר שאינו שופרא דשופרא יוכל הלקוח לבצע פעולת upgrade.
                                                                                                                                                                                                                                                                                        \n", " הפעולה תעביר אותו לחדר בדרגה אחת גבוהה יותר, אם יש חדר כזה פנוי.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -1642,15 +1640,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שחמט גנואים" + "### שחמט גנואים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " חניכים שובבים (לא אתם חלילה) החליטו לדלג על התרגיל לדוגמה, שמדגים בצורה מאלפת שימוש ברעיונות של מחלקה מופשטת וב־Mixins.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " חניכים שובבים (לא אתם חלילה) החליטו לדלג על התרגיל לדוגמה, שמדגים בצורה מאלפת שימוש ברעיונות של מחלקה מופשטת וב־Mixins.
                                                                                                                                                                                                                                                                                        \n", " כדי לוודא שהם מבינים את החומר, השתמשו במימוש שבדוגמה (או במימוש שכתבתם בעצמכם, כמובן) ועזרו להם לממש שחמט גנואים.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -1659,22 +1657,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " בשחמט גנואים רוחבו של הלוח הוא 11 משבצות ואורכו 10 משבצות.
                                                                                                                                                                                                                                                                                        \n", - "\n", - "

                                                                                                                                                                                                                                                                                        \n", - " בשורה 1, בעמודה ז (או g בגרסה האנגלית) מוצב גנו, ובעמודות ח ו־ט (h ו־i באנגלית) מוצבים גמלים.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " בשחמט גנואים רוחבו של הלוח הוא 11 משבצות ואורכו 10 משבצות.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " בשורה 1, בעמודה ז (או g בגרסה האנגלית) מוצב גנו, ובעמודות ח ו־ט (h ו־i באנגלית) מוצבים גמלים.
                                                                                                                                                                                                                                                                                        \n", " בשורה 10, בעמודה ה (או e בגרסה האנגלית) מוצב גנו, ובעמודות ג ו־ד (c ו־d באנגלית) מוצבים גמלים.\n", "

                                                                                                                                                                                                                                                                                        \n", - "\n", - "

                                                                                                                                                                                                                                                                                        \n", - " בשורה 1, בעמודה ה (או e בגרסה האנגלית) מוצבת המלכה, ובעמודות ג ו־ד (c ו־d באנגלית) מוצבים רצים.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " בשורה 1, בעמודה ה (או e בגרסה האנגלית) מוצבת המלכה, ובעמודות ג ו־ד (c ו־d באנגלית) מוצבים רצים.
                                                                                                                                                                                                                                                                                        \n", " בשורה 10, בעמודה ז (או g בגרסה האנגלית) מוצבת המלכה, ובעמודות ח ו־ט (h ו־i באנגלית) מוצבים רצים.\n", "

                                                                                                                                                                                                                                                                                        \n", - "\n", - "

                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", " שאר הכלים מסודרים באותו הסדר.\n", - "

                                                                                                                                                                                                                                                                                        " + "

                                                                                                                                                                                                                                                                                        " ] }, { @@ -1682,8 +1677,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                        \n", - " \"צורת\n", - "
                                                                                                                                                                                                                                                                                        לוח שחמט ערוך למשחק שחמט גנואים.
                                                                                                                                                                                                                                                                                        מקור: ויקיפדיה.\n", + "\"צורת\n", + "
                                                                                                                                                                                                                                                                                        לוח שחמט ערוך למשחק שחמט גנואים.
                                                                                                                                                                                                                                                                                        מקור: ויקיפדיה.\n", "
                                                                                                                                                                                                                                                                                        \n", "
                                                                                                                                                                                                                                                                                        " ] @@ -1692,10 +1687,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " גמלים נעים בצורה דומה לפרשים: 3 צעדים אנכית ואז צעד אחד אופקית, או 3 צעדים אופקית ואז צעד אחד אנכית.
                                                                                                                                                                                                                                                                                        \n", - " גנואים יכולים לבחור בכל תור אם הם רוצים לנוע כגמל או כפרש.
                                                                                                                                                                                                                                                                                        \n", - " שני כלי המשחק, גמל וגנו, יכולים לדלג מעל כלים אחרים מבלי להיחסם.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " גמלים נעים בצורה דומה לפרשים: 3 צעדים אנכית ואז צעד אחד אופקית, או 3 צעדים אופקית ואז צעד אחד אנכית.
                                                                                                                                                                                                                                                                                        \n", + " גנואים יכולים לבחור בכל תור אם הם רוצים לנוע כגמל או כפרש.
                                                                                                                                                                                                                                                                                        \n", + " שני כלי המשחק, גמל וגנו, יכולים לדלג מעל כלים אחרים מבלי להיחסם.
                                                                                                                                                                                                                                                                                        \n", " תוכלו להשתמש בתווים ⛀ ו־⛂ כדי לייצג גמלים ובתווים ⛁ ו־⛃ כדי לייצג גנואים.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -1704,10 +1699,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " בגרסה זו של המשחק ישנה הרחבה קלה לתנועת הרגלים הבסיסית.
                                                                                                                                                                                                                                                                                        \n", - " אם רגלי לא נע מעולם, הוא יכול לנוע עד 3 צעדים במעלה הלוח.
                                                                                                                                                                                                                                                                                        \n", - " אם רגלי נע רק צעד אחד במעלה הלוח, הוא עדיין רשאי להתקדם 2 צעדים נוספים במעלה הלוח.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " בגרסה זו של המשחק ישנה הרחבה קלה לתנועת הרגלים הבסיסית.
                                                                                                                                                                                                                                                                                        \n", + " אם רגלי לא נע מעולם, הוא יכול לנוע עד 3 צעדים במעלה הלוח.
                                                                                                                                                                                                                                                                                        \n", + " אם רגלי נע רק צעד אחד במעלה הלוח, הוא עדיין רשאי להתקדם 2 צעדים נוספים במעלה הלוח.
                                                                                                                                                                                                                                                                                        \n", " רגלי שהתקדם 2 צעדים או יותר רשאי לנוע רק צעד אחד במעלה הלוח בכל פעם.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -1716,10 +1711,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " נוסף על כך, בלי קשר לשחמט גנואים וסתם בשביל הכיף, ממשו חד־קרן.
                                                                                                                                                                                                                                                                                        \n", - " חד־קרן הוא כלי שיכול לנוע בתור אחד מספר בלתי מוגבל של צעדי פרש לאותו הכיוון.
                                                                                                                                                                                                                                                                                        \n", - " לצורך ייצוג חד־קרן לבן על הלוח תוכלו להשתמש בתו 🦄, ועבור השחור השתמשו ב־🐴 (זה מה יש).
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " נוסף על כך, בלי קשר לשחמט גנואים וסתם בשביל הכיף, ממשו חד־קרן.
                                                                                                                                                                                                                                                                                        \n", + " חד־קרן הוא כלי שיכול לנוע בתור אחד מספר בלתי מוגבל של צעדי פרש לאותו הכיוון.
                                                                                                                                                                                                                                                                                        \n", + " לצורך ייצוג חד־קרן לבן על הלוח תוכלו להשתמש בתו 🦄, ועבור השחור השתמשו ב־🐴 (זה מה יש).
                                                                                                                                                                                                                                                                                        \n", " וכן, אנחנו יודעים שהוא הורס את הדפסת הלוח. מותר לו. הוא חד־קרן.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -1729,8 +1724,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                        \n", - " \"פרש\n", - "
                                                                                                                                                                                                                                                                                        תנועה אופיינית לחד־קרן.
                                                                                                                                                                                                                                                                                        מקור: ויקיפדיה.\n", + "\"פרש\n", + "
                                                                                                                                                                                                                                                                                        תנועה אופיינית לחד־קרן.
                                                                                                                                                                                                                                                                                        מקור: ויקיפדיה.\n", "
                                                                                                                                                                                                                                                                                        \n", "
                                                                                                                                                                                                                                                                                        " ] @@ -1739,7 +1734,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", " חשבתם שבמקרה התעוררתי היום במצב רוח להמצאת גרסאות שחמט משוגעות? אז זהו, שלא.\n", " הכול. כבר. קיים.\n", "

                                                                                                                                                                                                                                                                                        " diff --git a/week8/3_Exceptions.ipynb b/week8/3_Exceptions.ipynb index 7afcc53..f2a3730 100644 --- a/week8/3_Exceptions.ipynb +++ b/week8/3_Exceptions.ipynb @@ -4,29 +4,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# חריגות" + "# חריגות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " עוד בשבוע הראשון, כשרק התחלתם את הקורס, הזהרנו אתכם שהמחשב עלול להיות עמית קשוח לעבודה.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " עוד בשבוע הראשון, כשרק התחלתם את הקורס, הזהרנו אתכם שהמחשב עלול להיות עמית קשוח לעבודה.
                                                                                                                                                                                                                                                                                        \n", " הוא תמיד מבצע בדיוק את מה שהוריתם לו לעשות, ולא מסוגל להתגבר לבד גם על הקלה שבטעויות.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -35,9 +35,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " במהלך הקורס נתקלתם פעמים רבות בחריגות (\"שגיאות\") שפייתון התריעה לכם עליהן.
                                                                                                                                                                                                                                                                                        \n", - " חלק מההתרעות על חריגות התרחשו בגלל טעויות בסיסיות בקוד, כמו נקודתיים חסרות בסוף שורת if,
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " במהלך הקורס נתקלתם פעמים רבות בחריגות (\"שגיאות\") שפייתון התריעה לכם עליהן.
                                                                                                                                                                                                                                                                                        \n", + " חלק מההתרעות על חריגות התרחשו בגלל טעויות בסיסיות בקוד, כמו נקודתיים חסרות בסוף שורת if,
                                                                                                                                                                                                                                                                                        \n", " וחלק מהן התרחשו בגלל בעיות שהתגלו מאוחר יותר – כמו קובץ שניסיתם לפתוח אבל לא היה קיים במחשב.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -46,8 +46,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " בפרק זה ניכנס בעובי הקורה בכל הנוגע לחריגות.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " בפרק זה ניכנס בעובי הקורה בכל הנוגע לחריגות.
                                                                                                                                                                                                                                                                                        \n", " נבין אילו סוגי חריגות יש, איך מפענחים אותן ואיך הן בנויות בפייתון, איך מטפלים בהן ואיך יוצרים חריגות בעצמנו.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -56,15 +56,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## הגדרה" + "## הגדרה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " חריגה (Exception) מייצגת כשל שהתרחש בזמן שפייתון ניסתה לפענח את הקוד שלנו או להריץ אותו.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + "חריגה (Exception) מייצגת כשל שהתרחש בזמן שפייתון ניסתה לפענח את הקוד שלנו או להריץ אותו.
                                                                                                                                                                                                                                                                                        \n", " כשהקוד קורס ומוצגת לנו הודעת שגיאה, אפשר להגיד שפייתון מתריעה על חריגה (raise an exception).\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -73,7 +73,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", " נבדיל בין שני סוגי חריגות: שגיאות תחביר וחריגות כלליות.\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -82,16 +82,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### שגיאת תחביר" + "### שגיאת תחביר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " פייתון תתריע לפנינו על שגיאת תחביר (syntax error) כשנכתוב קוד שהיא לא מסוגלת לפענח.
                                                                                                                                                                                                                                                                                        \n", - " לרוב זה יתרחש כשלא עמדנו בכללי התחביר של פייתון ושכחנו תו מסוים, בין אם זה סגירת סוגריים, גרשיים או נקודתיים בסוף שורה.
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " פייתון תתריע לפנינו על שגיאת תחביר (syntax error) כשנכתוב קוד שהיא לא מסוגלת לפענח.
                                                                                                                                                                                                                                                                                        \n", + " לרוב זה יתרחש כשלא עמדנו בכללי התחביר של פייתון ושכחנו תו מסוים, בין אם זה סגירת סוגריים, גרשיים או נקודתיים בסוף שורה.
                                                                                                                                                                                                                                                                                        \n", " ודאי נתקלתם בשגיאה דומה בעבר:\n", "

                                                                                                                                                                                                                                                                                        " ] @@ -112,15 +112,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                        \n", - " פייתון משתדלת לספק לנו כמה שיותר מידע על מקור השגיאה:
                                                                                                                                                                                                                                                                                        \n", + "

                                                                                                                                                                                                                                                                                        \n", + " פייתון משתדלת לספק לנו כמה שיותר מידע על מקור השגיאה:
                                                                                                                                                                                                                                                                                        \n", "

                                                                                                                                                                                                                                                                                        \n", - "\n", - "
                                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                                        1. בשורה הראשונה נראה מידע על מיקום השגיאה: קובץ (אם יש כזה) ומספר השורה שבה נמצאה השגיאה.
                                                                                                                                                                                                                                                                                        2. \n", - "
                                                                                                                                                                                                                                                                                        3. בשורה השנייה את הקוד שבו פייתון מצאה את השגיאה.
                                                                                                                                                                                                                                                                                        4. \n", - "
                                                                                                                                                                                                                                                                                        5. בשורה השלישית חץ שמצביע חזותית למקום שבו נמצאה השגיאה.
                                                                                                                                                                                                                                                                                        6. \n", - "
                                                                                                                                                                                                                                                                                        7. בשורה הרביעית פייתון מסבירה לנו מה התרחש ומספקת הסבר קצר על השגיאה. במקרה הזה – SyntaxError.
                                                                                                                                                                                                                                                                                        8. \n", + "
                                                                                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                                                                                          1. בשורה הראשונה נראה מידע על מיקום השגיאה: קובץ (אם יש כזה) ומספר השורה שבה נמצאה השגיאה.
                                                                                                                                                                                                                                                                                          2. \n", + "
                                                                                                                                                                                                                                                                                          3. בשורה השנייה את הקוד שבו פייתון מצאה את השגיאה.
                                                                                                                                                                                                                                                                                          4. \n", + "
                                                                                                                                                                                                                                                                                          5. בשורה השלישית חץ שמצביע חזותית למקום שבו נמצאה השגיאה.
                                                                                                                                                                                                                                                                                          6. \n", + "
                                                                                                                                                                                                                                                                                          7. בשורה הרביעית פייתון מסבירה לנו מה התרחש ומספקת הסבר קצר על השגיאה. במקרה הזה – SyntaxError.
                                                                                                                                                                                                                                                                                          8. \n", "
                                                                                                                                                                                                                                                                                          " ] }, @@ -128,8 +127,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " כשמדובר בשגיאות תחביר כדאי להסתכל על מיקום השגיאה בעין ביקורתית.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " כשמדובר בשגיאות תחביר כדאי להסתכל על מיקום השגיאה בעין ביקורתית.
                                                                                                                                                                                                                                                                                          \n", " בחלק מהפעמים, פייתון תכלול בשגיאה מידע לא מדויק על מיקום השגיאה:\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -156,10 +155,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                                                                                                                          " ] @@ -168,16 +167,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### חריגה כללית" + "### חריגה כללית" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " גם כשהקוד שלכם תואם את כללי התחביר של פייתון, לפעמים עלולות להתגלות בעיות בזמן הרצת הקוד.
                                                                                                                                                                                                                                                                                          \n", - " כפי שוודאי כבר חוויתם, מנעד הבעיות האפשריות הוא רחב מאוד – החל בחלוקה באפס, עבור לטעות בשם המשתנה וכלה בניסיון לפתיחת קובץ לא קיים.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " גם כשהקוד שלכם תואם את כללי התחביר של פייתון, לפעמים עלולות להתגלות בעיות בזמן הרצת הקוד.
                                                                                                                                                                                                                                                                                          \n", + " כפי שוודאי כבר חוויתם, מנעד הבעיות האפשריות הוא רחב מאוד – החל בחלוקה באפס, עבור לטעות בשם המשתנה וכלה בניסיון לפתיחת קובץ לא קיים.
                                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                                          " ] }, @@ -185,8 +184,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " בניגוד להתרעה על חריגה במצב של שגיאות תחביר, פייתון תתריע על חריגות אחרות רק כשהיא תגיע להריץ את הקוד שגורם לחריגה.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " בניגוד להתרעה על חריגה במצב של שגיאות תחביר, פייתון תתריע על חריגות אחרות רק כשהיא תגיע להריץ את הקוד שגורם לחריגה.
                                                                                                                                                                                                                                                                                          \n", " נראה דוגמה לחריגה שכזו:\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -206,21 +205,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                                          \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                                          \n", - "

                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                                          \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", " חשבו על כל החריגות שמשתמש שובב יכול לסחוט מהקוד שבתא למעלה.\n", "

                                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                                          \n", - "

                                                                                                                                                                                                                                                                                          \n", - " חשוב!
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + "חשוב!
                                                                                                                                                                                                                                                                                          \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                                          \n", "
                                                                                                                                                                                                                                                                                          " ] }, @@ -228,8 +227,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " אחת החריגות הראשונות שנחשוב עליהן היא חלוקה באפס, שלא מוגדרת חשבונית.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " אחת החריגות הראשונות שנחשוב עליהן היא חלוקה באפס, שלא מוגדרת חשבונית.
                                                                                                                                                                                                                                                                                          \n", " נראה מה יקרה כשננסה לבצע השמה של הערך 0 למשתנה b:\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -249,10 +248,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " פייתון התריעה בפנינו על ZeroDivisionError בשורה 3, וגם הפעם היא פלטה לנו הודעה מפורטת יחסית.
                                                                                                                                                                                                                                                                                          \n", - " בדיוק כמו בשגיאת התחביר, השורה האחרונה היא הודעה שמספרת לנו מה קרה בפועל: חילקתם באפס וזה אסור.
                                                                                                                                                                                                                                                                                          \n", - " באותה שורה נראה גם את סוג החריגה (ZeroDivisionError) – הקטגוריה הכללית שאליה החריגה משתייכת.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " פייתון התריעה בפנינו על ZeroDivisionError בשורה 3, וגם הפעם היא פלטה לנו הודעה מפורטת יחסית.
                                                                                                                                                                                                                                                                                          \n", + " בדיוק כמו בשגיאת התחביר, השורה האחרונה היא הודעה שמספרת לנו מה קרה בפועל: חילקתם באפס וזה אסור.
                                                                                                                                                                                                                                                                                          \n", + " באותה שורה נראה גם את סוג החריגה (ZeroDivisionError) – הקטגוריה הכללית שאליה החריגה משתייכת.
                                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                                          " ] }, @@ -260,7 +259,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", + "

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

                                                                                                                                                                                                                                                                                          " ] @@ -280,9 +279,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " גם הפעם פייתון התריעה בפנינו על חריגה, אבל מסוג שונה.
                                                                                                                                                                                                                                                                                          \n", - " חריגה מסוג ValueError מעידה שהערך שהעברנו הוא מהסוג (טיפוס) הנכון, אבל הוא לא התאים לביטוי שביקשנו מפייתון להריץ.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " גם הפעם פייתון התריעה בפנינו על חריגה, אבל מסוג שונה.
                                                                                                                                                                                                                                                                                          \n", + " חריגה מסוג ValueError מעידה שהערך שהעברנו הוא מהסוג (טיפוס) הנכון, אבל הוא לא התאים לביטוי שביקשנו מפייתון להריץ.
                                                                                                                                                                                                                                                                                          \n", " ההודעה שפייתון הציגה מסבירה לנו שאי אפשר להמיר את המחרוזת \"a\" למספר עשרוני.\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -291,14 +290,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## קריאת הודעת השגיאה" + "## קריאת הודעת השגיאה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", " ניקח לדוגמה את ההתרעה האחרונה שקיבלנו על חריגה:\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -318,7 +317,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", " ננסה להבין לעומק את החלקים השונים של ההודעה:\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -328,8 +327,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                          \n", - " \"תמונה\n", - "
                                                                                                                                                                                                                                                                                          \n", + "\"תמונה\n", + "
                                                                                                                                                                                                                                                                                          \n", " איור המבאר את חלקי ההודעה המוצגת במקרים של התרעה על חריגה.\n", "
                                                                                                                                                                                                                                                                                          \n", "
                                                                                                                                                                                                                                                                                          " @@ -339,7 +338,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", " במקרה של התרעה על חריגה שהתרחשה בתוך פונקציה, ההודעה תציג מעקב אחר שרשרת הקריאות שגרמו לה:\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -361,9 +360,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " ההודעה הזו מכילה Traceback – מעין סיפור שמטרתו לעזור לנו להבין מדוע התרחשה החריגה.
                                                                                                                                                                                                                                                                                          \n", - " ב־Traceback נראה את השורה שבה התרחשה החריגה, ומעליה את שרשרת הקריאות לפונקציות שגרמו לשורה הזו לרוץ.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " ההודעה הזו מכילה Traceback – מעין סיפור שמטרתו לעזור לנו להבין מדוע התרחשה החריגה.
                                                                                                                                                                                                                                                                                          \n", + " ב־Traceback נראה את השורה שבה התרחשה החריגה, ומעליה את שרשרת הקריאות לפונקציות שגרמו לשורה הזו לרוץ.
                                                                                                                                                                                                                                                                                          \n", " כדי להבין טוב יותר את ה־Traceback, נהוג לקרוא אותו מהסוף להתחלה.\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -372,9 +371,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " תחילה, נביט בשורה האחרונה ונקרא מה הייתה הסיבה שבגינה פייתון התריעה לנו על החריגה.
                                                                                                                                                                                                                                                                                          \n", - " ההודעה היא invalid literal for int() with base 10: 'meow' – ניסינו להמיר את המחרוזת \"meow\" למספר שלם, וזה לא תקין.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " תחילה, נביט בשורה האחרונה ונקרא מה הייתה הסיבה שבגינה פייתון התריעה לנו על החריגה.
                                                                                                                                                                                                                                                                                          \n", + " ההודעה היא invalid literal for int() with base 10: 'meow' – ניסינו להמיר את המחרוזת \"meow\" למספר שלם, וזה לא תקין.
                                                                                                                                                                                                                                                                                          \n", " כדאי להסתכל גם על סוג החריגה (ValueError) כדי לקבל מושג כללי על היצור שאנחנו מתעסקים איתו.\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -383,9 +382,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " נמשיך ל־Traceback.
                                                                                                                                                                                                                                                                                          \n", - " בפסקה שמעל השורה שבה מוצגת הודעת השגיאה, נסתכל על שורת הקוד שגרמה להתרעה על חריגה: return int(a) // int(b).
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " נמשיך ל־Traceback.
                                                                                                                                                                                                                                                                                          \n", + " בפסקה שמעל השורה שבה מוצגת הודעת השגיאה, נסתכל על שורת הקוד שגרמה להתרעה על חריגה: return int(a) // int(b).
                                                                                                                                                                                                                                                                                          \n", " בשלב זה יש בידינו די נתונים לצורך פענוח ההתרעה על החריגה: ניסינו לבצע המרה לא חוקית של המחרוזת \"meow\" למספר שלם בשורה 2.\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -394,10 +393,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " אם עדיין לא נחה דעתכם וקשה לכם להבין מאיפה הגיעה ההתרעה על החריגה, תוכלו להמשיך ולטפס במעלה ה־Traceback.
                                                                                                                                                                                                                                                                                          \n", - " נעבור לקוד שגרם לשורה return int(a) // int(b) לרוץ: division(\"meow\", 5).
                                                                                                                                                                                                                                                                                          \n", - " נוכל לראות שהקוד הזה מעביר לפרמטר הראשון של הפונקציה division את הערך \"meow\", שאותו היא מנסה להמיר למספר שלם.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " אם עדיין לא נחה דעתכם וקשה לכם להבין מאיפה הגיעה ההתרעה על החריגה, תוכלו להמשיך ולטפס במעלה ה־Traceback.
                                                                                                                                                                                                                                                                                          \n", + " נעבור לקוד שגרם לשורה return int(a) // int(b) לרוץ: division(\"meow\", 5).
                                                                                                                                                                                                                                                                                          \n", + " נוכל לראות שהקוד הזה מעביר לפרמטר הראשון של הפונקציה division את הערך \"meow\", שאותו היא מנסה להמיר למספר שלם.
                                                                                                                                                                                                                                                                                          \n", " עכשיו ברור לחלוטין מאיפה מגיעה ההתרעה על החריגה.\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -406,21 +405,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## טיפול בחריגות" + "## טיפול בחריגות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### הרעיון" + "### הרעיון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", " לפעמים אנחנו יודעים מראש על שורת קוד שכתבנו שעלולה לגרום להתרעה על חריגה.\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -429,8 +428,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " פתיחת קובץ לקריאה, לדוגמה, עלולה להיכשל אם הנתיב לקובץ לא קיים במחשב.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " פתיחת קובץ לקריאה, לדוגמה, עלולה להיכשל אם הנתיב לקובץ לא קיים במחשב.
                                                                                                                                                                                                                                                                                          \n", " נכתוב פונקציה שמקבלת נתיב לקובץ ומחזירה את התוכן שלו כדי להדגים את הרעיון:\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -450,7 +449,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", " ננסה לאחזר את התוכן של הקובץ castle.txt:\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -468,9 +467,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " במקרה שלמעלה ניסינו לפתוח קובץ שלא באמת קיים במחשב, ופייתון התריעה לנו על חריגת FileNotFoundError.
                                                                                                                                                                                                                                                                                          \n", - " מכאן, שהפונקציה get_file_content עשויה לגרום להתרעה על חריגה מסוג FileNotFoundError בכל פעם שיועבר לה נתיב שאינו קיים.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " במקרה שלמעלה ניסינו לפתוח קובץ שלא באמת קיים במחשב, ופייתון התריעה לנו על חריגת FileNotFoundError.
                                                                                                                                                                                                                                                                                          \n", + " מכאן, שהפונקציה get_file_content עשויה לגרום להתרעה על חריגה מסוג FileNotFoundError בכל פעם שיועבר לה נתיב שאינו קיים.
                                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                                          " ] }, @@ -478,10 +477,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " כמתכנתים אחראים, חשוב לנו שהתוכנה לא תקרוס בכל פעם שהמשתמש מספק נתיב שגוי לקובץ.
                                                                                                                                                                                                                                                                                          \n", - " פייתון מאפשרת לנו להגדיר מראש כיצד לטפל במקרים שבהם אנחנו צופים שהיא תתריע על חריגה, ובכך למנוע את קריסת התוכנית.
                                                                                                                                                                                                                                                                                          \n", - " נעשה זאת בעזרת מילות המפתח try ו־except.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " כמתכנתים אחראים, חשוב לנו שהתוכנה לא תקרוס בכל פעם שהמשתמש מספק נתיב שגוי לקובץ.
                                                                                                                                                                                                                                                                                          \n", + " פייתון מאפשרת לנו להגדיר מראש כיצד לטפל במקרים שבהם אנחנו צופים שהיא תתריע על חריגה, ובכך למנוע את קריסת התוכנית.
                                                                                                                                                                                                                                                                                          \n", + " נעשה זאת בעזרת מילות המפתח try ו־except.
                                                                                                                                                                                                                                                                                          \n", "

                                                                                                                                                                                                                                                                                          " ] }, @@ -489,15 +488,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### התחביר הבסיסי" + "### התחביר הבסיסי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", - " לפני שנצלול לקוד, נבין מהו הרעיון הכללי של try ושל except.
                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", + " לפני שנצלול לקוד, נבין מהו הרעיון הכללי של try ושל except.
                                                                                                                                                                                                                                                                                          \n", " המטרה שלנו היא לספק התנהגות חלופית לקוד שעשוי להיכשל בגלל התרעה על חריגה מסוימת שחזינו שעשויה לקרות.\n", "

                                                                                                                                                                                                                                                                                          " ] @@ -506,13 +505,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                          \n", + "

                                                                                                                                                                                                                                                                                          \n", " שימוש ב־try וב־except בפייתון נראה פחות או יותר כך:\n", "

                                                                                                                                                                                                                                                                                          \n", - "\n", - "
                                                                                                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                                                                                                          1. נסה לבצע את שורות הקוד הבאות.
                                                                                                                                                                                                                                                                                          2. \n", - "
                                                                                                                                                                                                                                                                                          3. אם לא הצלחת כיוון שהייתה התרעה על חריגה מסוג כך וכך, בצע במקומן את השורות החלופיות הבאות.
                                                                                                                                                                                                                                                                                          4. \n", + "
                                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                                            1. נסה לבצע את שורות הקוד הבאות.
                                                                                                                                                                                                                                                                                            2. \n", + "
                                                                                                                                                                                                                                                                                            3. אם לא הצלחת כיוון שהייתה התרעה על חריגה מסוג כך וכך, בצע במקומן את השורות החלופיות הבאות.
                                                                                                                                                                                                                                                                                            4. \n", "
                                                                                                                                                                                                                                                                                            " ] }, @@ -520,7 +518,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                                            \n", " נממש בקוד:\n", "

                                                                                                                                                                                                                                                                                            " ] @@ -544,7 +542,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                                            \n", " וננסה לאחזר שוב את התוכן של הקובץ castle.txt:\n", "

                                                                                                                                                                                                                                                                                            " ] @@ -563,8 +561,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                            \n", - " כפי שאפשר לראות בדוגמה, הפונקציה לא התריעה על חריגת FileNotFoundError, אלא הדפיסה לנו הודעה והחזירה מחרוזת ריקה.
                                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                                            \n", + " כפי שאפשר לראות בדוגמה, הפונקציה לא התריעה על חריגת FileNotFoundError, אלא הדפיסה לנו הודעה והחזירה מחרוזת ריקה.
                                                                                                                                                                                                                                                                                            \n", " זה קרה כיוון שעטפנו את הקוד שעלול להתריע על חריגה ב־try,\n", " והגדרנו לפייתון בתוך ה־except מה לבצע במקרה של כישלון.\n", "

                                                                                                                                                                                                                                                                                            " @@ -574,15 +572,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                            \n", - " התחביר של try ... except הוא כדלהלן:
                                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                                            \n", + " התחביר של try ... except הוא כדלהלן:
                                                                                                                                                                                                                                                                                            \n", "

                                                                                                                                                                                                                                                                                            \n", - "\n", - "
                                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                                            1. נתחיל עם שורה שבה כתוב אך ורק try:.
                                                                                                                                                                                                                                                                                            2. \n", - "
                                                                                                                                                                                                                                                                                            3. בהזחה, נכתוב את כל מה שאנחנו רוצים לנסות לבצע ועלול לגרום להתרעה על חריגה.
                                                                                                                                                                                                                                                                                            4. \n", - "
                                                                                                                                                                                                                                                                                            5. בשורה הבאה, נצא מההזחה ונכתוב except ExceptionType:, כאשר ExceptionType הוא סוג החריגה שנרצה לתפוס.
                                                                                                                                                                                                                                                                                            6. \n", - "
                                                                                                                                                                                                                                                                                            7. בהזחה (שוב), נכתוב קוד שנרצה לבצע אם פייתון התריעה על חריגה מסוג ExceptionType בזמן שהקוד המוזח תחת ה־try רץ.
                                                                                                                                                                                                                                                                                            8. \n", + "
                                                                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                                                              1. נתחיל עם שורה שבה כתוב אך ורק try:.
                                                                                                                                                                                                                                                                                              2. \n", + "
                                                                                                                                                                                                                                                                                              3. בהזחה, נכתוב את כל מה שאנחנו רוצים לנסות לבצע ועלול לגרום להתרעה על חריגה.
                                                                                                                                                                                                                                                                                              4. \n", + "
                                                                                                                                                                                                                                                                                              5. בשורה הבאה, נצא מההזחה ונכתוב except ExceptionType:, כאשר ExceptionType הוא סוג החריגה שנרצה לתפוס.
                                                                                                                                                                                                                                                                                              6. \n", + "
                                                                                                                                                                                                                                                                                              7. בהזחה (שוב), נכתוב קוד שנרצה לבצע אם פייתון התריעה על חריגה מסוג ExceptionType בזמן שהקוד המוזח תחת ה־try רץ.
                                                                                                                                                                                                                                                                                              8. \n", "
                                                                                                                                                                                                                                                                                              " ] }, @@ -591,10 +588,10 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                              \n", - " \"בתמונה\n", - "
                                                                                                                                                                                                                                                                                              \n", + "\"בתמונה\n", + "
                                                                                                                                                                                                                                                                                              \n", " התחביר של try ... except\n", - "
                                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                                              \n", "
                                                                                                                                                                                                                                                                                              " ] }, @@ -602,11 +599,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", - " השורות שב־try ירוצו כרגיל.
                                                                                                                                                                                                                                                                                              \n", - " אם לא תהיה התרעה על חריגה, פייתון תתעלם ממה שכתוב בתוך ה־except.
                                                                                                                                                                                                                                                                                              \n", - " אם אחת השורות בתוך ה־try גרמה להתרעה על חריגה מהסוג שכתוב בשורת ה־except,
                                                                                                                                                                                                                                                                                              \n", - " פייתון תפסיק מייד לבצע את הקוד שכתוב ב־try, ותעבור להריץ את הקוד המוזח בתוך ה־except.
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + " השורות שב־try ירוצו כרגיל.
                                                                                                                                                                                                                                                                                              \n", + " אם לא תהיה התרעה על חריגה, פייתון תתעלם ממה שכתוב בתוך ה־except.
                                                                                                                                                                                                                                                                                              \n", + " אם אחת השורות בתוך ה־try גרמה להתרעה על חריגה מהסוג שכתוב בשורת ה־except,
                                                                                                                                                                                                                                                                                              \n", + " פייתון תפסיק מייד לבצע את הקוד שכתוב ב־try, ותעבור להריץ את הקוד המוזח בתוך ה־except.
                                                                                                                                                                                                                                                                                              \n", "

                                                                                                                                                                                                                                                                                              " ] }, @@ -614,10 +611,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", - " ניקח את דוגמת הקוד שלמעלה, וננסה להבין כיצד פייתון קוראת אותה.
                                                                                                                                                                                                                                                                                              \n", - " פייתון תתחיל בהרצת השורה with open(\"castle.txt\") as file_handler: ותתריע על חריגה, משום שהקובץ castle.txt לא נמצא.
                                                                                                                                                                                                                                                                                              \n", - " כיוון שהחריגה היא מסוג FileNotFoundError, היא תחפש את המילים except FileNotFoundError: מייד בסיום ההזחה.
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + " ניקח את דוגמת הקוד שלמעלה, וננסה להבין כיצד פייתון קוראת אותה.
                                                                                                                                                                                                                                                                                              \n", + " פייתון תתחיל בהרצת השורה with open(\"castle.txt\") as file_handler: ותתריע על חריגה, משום שהקובץ castle.txt לא נמצא.
                                                                                                                                                                                                                                                                                              \n", + " כיוון שהחריגה היא מסוג FileNotFoundError, היא תחפש את המילים except FileNotFoundError: מייד בסיום ההזחה.
                                                                                                                                                                                                                                                                                              \n", " הביטוי הזה קיים בדוגמה שלנו, ולכן פייתון תבצע את מה שכתוב בהזחה שאחריו במקום להתריע על חריגה.\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -627,10 +624,10 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                              \n", - " \"בתמונה\n", - "
                                                                                                                                                                                                                                                                                              \n", + "\"בתמונה\n", + "
                                                                                                                                                                                                                                                                                              \n", " תרשים זרימה המציג כיצד פייתון קוראת את הקוד במבנה try ... except\n", - "
                                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                                              \n", "
                                                                                                                                                                                                                                                                                              " ] }, @@ -638,8 +635,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", - " היכולת החדשה שקיבלנו נקראת \"לתפוס חריגות\", או \"לטפל בחריגות\".
                                                                                                                                                                                                                                                                                              \n", + "

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

                                                                                                                                                                                                                                                                                              " ] @@ -648,23 +645,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                                              \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                                              \n", - "

                                                                                                                                                                                                                                                                                              \n", - " כתבו פונקציה שמקבלת שני מספרים, ומחלקת את המספר הראשון בשני.
                                                                                                                                                                                                                                                                                              \n", - " אם המספר השני הוא אפס, החזירו 0 בתור התוצאה.
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                                              \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + " כתבו פונקציה שמקבלת שני מספרים, ומחלקת את המספר הראשון בשני.
                                                                                                                                                                                                                                                                                              \n", + " אם המספר השני הוא אפס, החזירו 0 בתור התוצאה.
                                                                                                                                                                                                                                                                                              \n", " השתמשו בחריגות.\n", "

                                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                                              \n", - "

                                                                                                                                                                                                                                                                                              \n", - " חשוב!
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + "חשוב!
                                                                                                                                                                                                                                                                                              \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                                              \n", "
                                                                                                                                                                                                                                                                                              " ] }, @@ -672,16 +669,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### סוגים מרובים של חריגות" + "### סוגים מרובים של חריגות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", - " משתמשים פרחחים במיוחד לא יעצרו כאן.
                                                                                                                                                                                                                                                                                              \n", - " הפונקציה get_file_content מוגנת מניסיון לאחזר קבצים לא קיימים, זה נכון,
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + " משתמשים פרחחים במיוחד לא יעצרו כאן.
                                                                                                                                                                                                                                                                                              \n", + " הפונקציה get_file_content מוגנת מניסיון לאחזר קבצים לא קיימים, זה נכון,
                                                                                                                                                                                                                                                                                              \n", " אך משתמש שובב מהרגיל עשוי לנסות להעביר לפונקציה מחרוזות עם תווים שאסור לנתיבים להכיל:\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -699,7 +696,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", " נביט בחריגה ובקוד המקורי, ונגלה שבאמת לא ביקשנו לתפוס בשום מקום חריגה מסוג OSError.\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -723,7 +720,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", " מכאן, נוכל לבחור לתקן את הקוד באחת משתי דרכים.\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -732,8 +729,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", - " הדרך הראשונה היא להשתמש בקוד שכבר יצרנו לטיפול בחריגות מסוג FileNotFoundError.
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + " הדרך הראשונה היא להשתמש בקוד שכבר יצרנו לטיפול בחריגות מסוג FileNotFoundError.
                                                                                                                                                                                                                                                                                              \n", " במקרה כזה, נצטרך לשנות את מה שכתוב אחרי ה־except ל־tuple שאיבריו הם כל סוגי השגיאות שבהן נרצה לטפל:\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -757,7 +754,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", " בקוד שלמעלה גרמנו לכך, שהן חריגות מסוג FileNotFoundError והן חריגות מסוג OSError יטופלו באותה הצורה.\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -766,8 +763,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", - " אבל מה אם נרצה שחריגות OSError תטופלנה בצורה שונה מחריגות FileNotFoundError?
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + " אבל מה אם נרצה שחריגות OSError תטופלנה בצורה שונה מחריגות FileNotFoundError?
                                                                                                                                                                                                                                                                                              \n", " במקרה הזה נפנה לדרך השנייה, שמימושה פשוט למדי – נוסף לקוד הקיים, נכתוב פסקת קוד חדשה שעושה שימוש ב־except:\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -794,9 +791,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", - " בקוד שלמעלה הוספנו ל־get_file_content קטע קוד נוסף.
                                                                                                                                                                                                                                                                                              \n", - " ה־except שהוספנו מאפשר לפייתון לטפל בחריגות מסוג OSError, כמו החריגה שקפצה לנו כשהכנסנו תווים בלתי חוקיים לנתיב הקובץ.
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + " בקוד שלמעלה הוספנו ל־get_file_content קטע קוד נוסף.
                                                                                                                                                                                                                                                                                              \n", + " ה־except שהוספנו מאפשר לפייתון לטפל בחריגות מסוג OSError, כמו החריגה שקפצה לנו כשהכנסנו תווים בלתי חוקיים לנתיב הקובץ.
                                                                                                                                                                                                                                                                                              \n", " נראה את הקוד בפעולה:\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -815,7 +812,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", " לשמחתנו, אנחנו לא מוגבלים במספר ה־except־ים שאפשר להוסיף אחרי ה־try.\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -824,16 +821,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### זיהוי סוג החריגה" + "### זיהוי סוג החריגה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", - " בכל פעם שפייתון מתריעה על חריגה, היא גם מציגה את הקטגוריה שאליה שייכת אותה חריגה.
                                                                                                                                                                                                                                                                                              \n", - " כפי שכבר ראינו, שגיאות תחביר שייכות לקטגוריה SyntaxError, וחריגות שנובעות מערך שגוי שייכות לקטגוריה ValueError.
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + " בכל פעם שפייתון מתריעה על חריגה, היא גם מציגה את הקטגוריה שאליה שייכת אותה חריגה.
                                                                                                                                                                                                                                                                                              \n", + " כפי שכבר ראינו, שגיאות תחביר שייכות לקטגוריה SyntaxError, וחריגות שנובעות מערך שגוי שייכות לקטגוריה ValueError.
                                                                                                                                                                                                                                                                                              \n", " למדנו גם להכיר שגיאות FileNotFoundError ושגיאות OSError, וללא ספק נתקלתם בחריגות שונות ומשונות בעצמכם במהלך הקורס.\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -842,8 +839,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", - " אפשר להגיד, אם כך, שבפייתון יש סוגים רבים של חריגות שהם חלק מהשפה.
                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", + " אפשר להגיד, אם כך, שבפייתון יש סוגים רבים של חריגות שהם חלק מהשפה.
                                                                                                                                                                                                                                                                                              \n", " מרוב סוגי חריגות, לפעמים קל לאבד את הידיים והרגליים ונעשה לא פשוט להבין על איזו חריגה פייתון עשויה להתריע. \n", "

                                                                                                                                                                                                                                                                                              " ] @@ -852,7 +849,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                                              \n", " נציע כמה דרכים מועילות להתמודד עם הבעיה, ולמצוא מהם סוגי החריגות שעשויים להיווצר בעקבות קוד שכתבתם:\n", "

                                                                                                                                                                                                                                                                                              " ] @@ -861,10 +858,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                                                              1. תיעוד – בשימוש בפונקציה או בפעולה מסוימת, קראו בתיעוד שלה על אילו חריגות עלולה פייתון להתריע בעקבות הפעלת הפונקציה או הפעולה.
                                                                                                                                                                                                                                                                                              2. \n", - "
                                                                                                                                                                                                                                                                                              3. חיפוש – השתמשו במנוע חיפוש כדי לשאול אילו חריגות עלולות לקפוץ בעקבות פעולה כללית שביצעתם. נניח: python exceptions read file.
                                                                                                                                                                                                                                                                                              4. \n", - "
                                                                                                                                                                                                                                                                                              5. נסו בעצמכם – אם ברצונכם לברר על סוג חריגה במקרה מסוים – הריצו את המקרה במחברת ובדקו על איזה סוג חריגה פייתון מתריעה.
                                                                                                                                                                                                                                                                                              6. \n", + "
                                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                                1. תיעוד – בשימוש בפונקציה או בפעולה מסוימת, קראו בתיעוד שלה על אילו חריגות עלולה פייתון להתריע בעקבות הפעלת הפונקציה או הפעולה.
                                                                                                                                                                                                                                                                                                2. \n", + "
                                                                                                                                                                                                                                                                                                3. חיפוש – השתמשו במנוע חיפוש כדי לשאול אילו חריגות עלולות לקפוץ בעקבות פעולה כללית שביצעתם. נניח: python exceptions read file.
                                                                                                                                                                                                                                                                                                4. \n", + "
                                                                                                                                                                                                                                                                                                5. נסו בעצמכם – אם ברצונכם לברר על סוג חריגה במקרה מסוים – הריצו את המקרה במחברת ובדקו על איזה סוג חריגה פייתון מתריעה.
                                                                                                                                                                                                                                                                                                6. \n", "
                                                                                                                                                                                                                                                                                                " ] }, @@ -872,7 +869,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", " לנוחיותכם, בתיעוד של פייתון ישנו עמוד שמסביר על כל סוגי החריגות שפייתון מגדירה.\n", "

                                                                                                                                                                                                                                                                                                " ] @@ -881,23 +878,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                                                                \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                                                                \n", - "

                                                                                                                                                                                                                                                                                                \n", - " על איזה סוג חריגה תתריע פייתון כאשר ניגש לרשימה במיקום שאינו קיים?
                                                                                                                                                                                                                                                                                                \n", - " מה בנוגע לגישה לרשימה במיקום שהוא מחרוזת?
                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                                                                \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", + " על איזה סוג חריגה תתריע פייתון כאשר ניגש לרשימה במיקום שאינו קיים?
                                                                                                                                                                                                                                                                                                \n", + " מה בנוגע לגישה לרשימה במיקום שהוא מחרוזת?
                                                                                                                                                                                                                                                                                                \n", " מהן סוגי החריגות שעליהם עלולה פייתון להתריע בעקבות הרצת הפעולה index על רשימה?\n", "

                                                                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                                                                \n", - "

                                                                                                                                                                                                                                                                                                \n", - " חשוב!
                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", + "חשוב!
                                                                                                                                                                                                                                                                                                \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                                                                \n", "
                                                                                                                                                                                                                                                                                                " ] }, @@ -905,14 +902,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: תוכנית החלוקה" + "### תרגיל ביניים: תוכנית החלוקה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", " כתבו פונקציה בשם super_division שמקבלת מספר בלתי מוגבל של פרמטרים מספריים.\n", "

                                                                                                                                                                                                                                                                                                " ] @@ -921,9 +918,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                \n", - " הפונקציה תבצע חלוקה של המספר הראשון במספר השני.
                                                                                                                                                                                                                                                                                                \n", - " את התוצאה היא תחלק במספר השלישי לכדי תוצאה חדשה, את התוצאה החדשה היא תחלק במספר הרביעי וכן הלאה.
                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", + " הפונקציה תבצע חלוקה של המספר הראשון במספר השני.
                                                                                                                                                                                                                                                                                                \n", + " את התוצאה היא תחלק במספר השלישי לכדי תוצאה חדשה, את התוצאה החדשה היא תחלק במספר הרביעי וכן הלאה.
                                                                                                                                                                                                                                                                                                \n", " לדוגמה: עבור הקריאה super_division(100, 10, 5, 2) הפונקציה תחזיר 1, כיוון שתוצאת הביטוי $100 / 10 / 5 / 2$ היא 1.\n", "

                                                                                                                                                                                                                                                                                                " ] @@ -932,7 +929,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", " עשו שימוש בטיפול בחריגות, ונסו לתפוס כמה שיותר מקרים של משתמשים שובבים.\n", "

                                                                                                                                                                                                                                                                                                " ] @@ -941,14 +938,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### פעפוע של חריגות במעלה שרשרת הקריאות" + "### פעפוע של חריגות במעלה שרשרת הקריאות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", " התרעה על חריגה גורמת לריצת התוכנית להתנהג בצורה שונה מעט ממה שהכרנו עד כה.\n", "

                                                                                                                                                                                                                                                                                                " ] @@ -957,13 +954,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                                \n", " במהלך המחברת נתקלנו בשני מקרים אפשריים:\n", "

                                                                                                                                                                                                                                                                                                \n", - "\n", - "
                                                                                                                                                                                                                                                                                                  \n", - "
                                                                                                                                                                                                                                                                                                1. או שהשורה שגרמה להתרעה על החריגה נמצאת ישירות תחת try-except שתואם לסוג החריגה, ואז החריגה נתפסת.
                                                                                                                                                                                                                                                                                                2. \n", - "
                                                                                                                                                                                                                                                                                                3. או שהשורה הזו אינה נמצאת ישירות תחת try-except ואז החריגה מקריסה את התוכנית. במקרה שכזה, מוצג לנו Traceback.
                                                                                                                                                                                                                                                                                                4. \n", + "
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                  1. או שהשורה שגרמה להתרעה על החריגה נמצאת ישירות תחת try-except שתואם לסוג החריגה, ואז החריגה נתפסת.
                                                                                                                                                                                                                                                                                                  2. \n", + "
                                                                                                                                                                                                                                                                                                  3. או שהשורה הזו אינה נמצאת ישירות תחת try-except ואז החריגה מקריסה את התוכנית. במקרה שכזה, מוצג לנו Traceback.
                                                                                                                                                                                                                                                                                                  4. \n", "
                                                                                                                                                                                                                                                                                                  " ] }, @@ -971,9 +967,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                  \n", - " אבל מתברר שהסיפור מאחורי הקלעים הוא מורכב מעט יותר.
                                                                                                                                                                                                                                                                                                  \n", - " אם פונקציה מסוימת לא יודעת כיצד לטפל בהתרעה על חריגה, היא מבקשת עזרה מהפונקציה שקראה לה.
                                                                                                                                                                                                                                                                                                  \n", + "

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

                                                                                                                                                                                                                                                                                                  " ] @@ -982,12 +978,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                  \n", - " נניח שבפונקציה A ישנה שורה שגרמה להתרעה על חריגה, והיא לא עטופה ב־try-except.
                                                                                                                                                                                                                                                                                                  \n", - " לפני שהתוכנית תקרוס, ההתרעה על החריגה תִּשָּׁלַח לפונקציה הקוראת, B, זו שהפעילה את פונקציה A שבה התרחשה ההתרעה על החריגה.
                                                                                                                                                                                                                                                                                                  \n", - " בשלב הזה פייתון נותנת לנו הזדמנות נוספת לתפוס את החריגה.
                                                                                                                                                                                                                                                                                                  \n", - " אם בתוך פונקציה B השורה שקראה לפונקציה A עטופה ב־try-except שתופס את סוג החריגה הנכונה, החריגה תטופל.
                                                                                                                                                                                                                                                                                                  \n", - " אם לא, החריגה תועבר לפונקציה C שקראה לפונקציה B, וכך הלאה, עד שנגיע לראש שרשרת הקריאות.
                                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                                  \n", + " נניח שבפונקציה A ישנה שורה שגרמה להתרעה על חריגה, והיא לא עטופה ב־try-except.
                                                                                                                                                                                                                                                                                                  \n", + " לפני שהתוכנית תקרוס, ההתרעה על החריגה תִּשָּׁלַח לפונקציה הקוראת, B, זו שהפעילה את פונקציה A שבה התרחשה ההתרעה על החריגה.
                                                                                                                                                                                                                                                                                                  \n", + " בשלב הזה פייתון נותנת לנו הזדמנות נוספת לתפוס את החריגה.
                                                                                                                                                                                                                                                                                                  \n", + " אם בתוך פונקציה B השורה שקראה לפונקציה A עטופה ב־try-except שתופס את סוג החריגה הנכונה, החריגה תטופל.
                                                                                                                                                                                                                                                                                                  \n", + " אם לא, החריגה תועבר לפונקציה C שקראה לפונקציה B, וכך הלאה, עד שנגיע לראש שרשרת הקריאות.
                                                                                                                                                                                                                                                                                                  \n", " אם אף אחד במעלה שרשרת הקריאות לא תפס את החריגה, התוכנית תקרוס ויוצג לנו Traceback.\n", "

                                                                                                                                                                                                                                                                                                  " ] @@ -996,8 +992,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                  \n", - " ננסה להדגים באמצעות קטע קוד לא מתוחכם במיוחד.
                                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                                  \n", + " ננסה להדגים באמצעות קטע קוד לא מתוחכם במיוחד.
                                                                                                                                                                                                                                                                                                  \n", " הנה האפשרות השנייה שדיברנו עליה – אף אחד בשרשרת הקריאות לא תופס את החריגה, התוכנה קורסת ומודפס Traceback:\n", "

                                                                                                                                                                                                                                                                                                  " ] @@ -1036,7 +1032,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                                  \n", " והנה דוגמה לאפשרות הראשונה – שבה אנחנו תופסים את החריגה מייד כשהיא מתרחשת:\n", "

                                                                                                                                                                                                                                                                                                  " ] @@ -1079,8 +1075,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                  \n", - " האפשרות המעניינת היא האפשרות השלישית.
                                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                                  \n", + " האפשרות המעניינת היא האפשרות השלישית.
                                                                                                                                                                                                                                                                                                  \n", " מה קורה אם מישהו במעלה שרשרת הקריאות, נניח הפונקציה c, היא זו שמחליטה לתפוס את החריגה:\n", "

                                                                                                                                                                                                                                                                                                  " ] @@ -1123,12 +1119,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                  \n", - " שימו לב שבמקרה הזה דילגנו על השורות שמדפיסות את ההודעה על סיום ריצתן של הפונקציות a ו־b.
                                                                                                                                                                                                                                                                                                  \n", - " בשורה מספר 3 התבצעה חלוקה לא חוקית ב־0 שגרמה להתרעה על חריגה מסוג ZeroDivisionError.
                                                                                                                                                                                                                                                                                                  \n", - " כיוון שהקוד לא היה עטוף ב־try-except, ההתרעה על החריגה פעפעה לשורה a() שנמצאת בפונקציה b.
                                                                                                                                                                                                                                                                                                  \n", - " גם שם אף אחד לא טיפל בחריגה באמצעות try-except, ולכן ההתרעה על החריגה המשיכה לפעפע לפונקציה שקראה ל־b, הלא היא c.
                                                                                                                                                                                                                                                                                                  \n", - " ב־c סוף כל סוף הקריאה ל־b הייתה עטופה ב־try-except, ושם התבצע הטיפול בחריגה.
                                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                                  \n", + " שימו לב שבמקרה הזה דילגנו על השורות שמדפיסות את ההודעה על סיום ריצתן של הפונקציות a ו־b.
                                                                                                                                                                                                                                                                                                  \n", + " בשורה מספר 3 התבצעה חלוקה לא חוקית ב־0 שגרמה להתרעה על חריגה מסוג ZeroDivisionError.
                                                                                                                                                                                                                                                                                                  \n", + " כיוון שהקוד לא היה עטוף ב־try-except, ההתרעה על החריגה פעפעה לשורה a() שנמצאת בפונקציה b.
                                                                                                                                                                                                                                                                                                  \n", + " גם שם אף אחד לא טיפל בחריגה באמצעות try-except, ולכן ההתרעה על החריגה המשיכה לפעפע לפונקציה שקראה ל־b, הלא היא c.
                                                                                                                                                                                                                                                                                                  \n", + " ב־c סוף כל סוף הקריאה ל־b הייתה עטופה ב־try-except, ושם התבצע הטיפול בחריגה.
                                                                                                                                                                                                                                                                                                  \n", " מאותה נקודה שבה טופלה החריגה, התוכנית המשיכה לרוץ כרגיל.\n", "

                                                                                                                                                                                                                                                                                                  " ] @@ -1138,8 +1134,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                                  \n", - " \"באיור\n", - "
                                                                                                                                                                                                                                                                                                  \n", + "\"באיור\n", + "
                                                                                                                                                                                                                                                                                                  \n", " איור שממחיש כיצד התרעה על חריגה מפעפעת בשרשרת הקריאות.\n", "
                                                                                                                                                                                                                                                                                                  \n", "
                                                                                                                                                                                                                                                                                                  " @@ -1149,14 +1145,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: החמישי זה נובמבר?" + "### תרגיל ביניים: החמישי זה נובמבר?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                  \n", + "

                                                                                                                                                                                                                                                                                                  \n", " קראו את הקוד הבא, ופתרו את הסעיפים שאחריו.\n", "

                                                                                                                                                                                                                                                                                                  " ] @@ -1194,12 +1190,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                  1. כתבו שתי שורות הקוראות ל־is_same_month, שאחת מהן מחזירה True והשנייה מחזירה False.
                                                                                                                                                                                                                                                                                                  2. \n", - "
                                                                                                                                                                                                                                                                                                  3. על אילו חריגות פייתון עלולה להתריע בשתי הפונקציות הראשונות? תפסו אותן בפונקציות הרלוונטיות. החזירו None אם התרחשה התרעה על חריגה.
                                                                                                                                                                                                                                                                                                  4. \n", - "
                                                                                                                                                                                                                                                                                                  5. בונוס: האם תצליחו לחשוב על דרך לגרום לפונקציה להתרסק בכל זאת? אם כן, תקנו אותה כך שתחזיר None במקרה שכזה.
                                                                                                                                                                                                                                                                                                  6. \n", - "
                                                                                                                                                                                                                                                                                                  7. בונוס: האם תוכלו ליצור קריאה ל־is_same_month שתחזיר True בזמן שהיא אמורה להחזיר False?
                                                                                                                                                                                                                                                                                                  8. \n", - "
                                                                                                                                                                                                                                                                                                  9. הבה נשנה גישה: תפסו את החריגות ברמת is_same_month במקום בפונקציות שהתריעו על חריגה. החזירו False אם התרחשה התרעה על חריגה.
                                                                                                                                                                                                                                                                                                  10. \n", + "
                                                                                                                                                                                                                                                                                                      \n", + "
                                                                                                                                                                                                                                                                                                    1. כתבו שתי שורות הקוראות ל־is_same_month, שאחת מהן מחזירה True והשנייה מחזירה False.
                                                                                                                                                                                                                                                                                                    2. \n", + "
                                                                                                                                                                                                                                                                                                    3. על אילו חריגות פייתון עלולה להתריע בשתי הפונקציות הראשונות? תפסו אותן בפונקציות הרלוונטיות. החזירו None אם התרחשה התרעה על חריגה.
                                                                                                                                                                                                                                                                                                    4. \n", + "
                                                                                                                                                                                                                                                                                                    5. בונוס: האם תצליחו לחשוב על דרך לגרום לפונקציה להתרסק בכל זאת? אם כן, תקנו אותה כך שתחזיר None במקרה שכזה.
                                                                                                                                                                                                                                                                                                    6. \n", + "
                                                                                                                                                                                                                                                                                                    7. בונוס: האם תוכלו ליצור קריאה ל־is_same_month שתחזיר True בזמן שהיא אמורה להחזיר False?
                                                                                                                                                                                                                                                                                                    8. \n", + "
                                                                                                                                                                                                                                                                                                    9. הבה נשנה גישה: תפסו את החריגות ברמת is_same_month במקום בפונקציות שהתריעו על חריגה. החזירו False אם התרחשה התרעה על חריגה.
                                                                                                                                                                                                                                                                                                    10. \n", "
                                                                                                                                                                                                                                                                                                    " ] }, @@ -1207,15 +1203,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הקשר בין חריגות למחלקות" + "### הקשר בין חריגות למחלקות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " כל התרעה על חריגה מיוצגת בפייתון באמצעות מופע.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " כל התרעה על חריגה מיוצגת בפייתון באמצעות מופע.
                                                                                                                                                                                                                                                                                                    \n", " בעזרת מילת המפתח as, נוכל ליצור משתנה שיצביע למופע הזה.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1224,8 +1220,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " נכתוב אחרי ה־except ולפני הנקודתיים את הביטוי as VarName, כאשר VarName הוא שם משתנה חדש שיצביע למופע של ההתרעה על החריגה.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " נכתוב אחרי ה־except ולפני הנקודתיים את הביטוי as VarName, כאשר VarName הוא שם משתנה חדש שיצביע למופע של ההתרעה על החריגה.
                                                                                                                                                                                                                                                                                                    \n", " ביטוי זה יאפשר לנו לגשת למשתנה VarName שכולל את הפרטים על החריגה, מכל שורה שמוזחת תחת ה־except:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1248,16 +1244,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " היופי במשתנה החדש שנוצר, err, זה שהוא מופע פייתוני שנוצר מתוך המחלקה ZeroDivisionError.
                                                                                                                                                                                                                                                                                                    \n", - " ZeroDivisionError, אם כך, היא מחלקה לכל דבר: יש לה __init__, פעולות ותכונות, כמו שאפשר לראות בדוגמת הקוד שלמעלה.

                                                                                                                                                                                                                                                                                                    " + "

                                                                                                                                                                                                                                                                                                    \n", + " היופי במשתנה החדש שנוצר, err, זה שהוא מופע פייתוני שנוצר מתוך המחלקה ZeroDivisionError.
                                                                                                                                                                                                                                                                                                    \n", + "ZeroDivisionError, אם כך, היא מחלקה לכל דבר: יש לה __init__, פעולות ותכונות, כמו שאפשר לראות בדוגמת הקוד שלמעלה.

                                                                                                                                                                                                                                                                                                    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " נבדוק אם יש לה __str__ מועיל:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1278,8 +1274,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " כמה נוח!
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " כמה נוח!
                                                                                                                                                                                                                                                                                                    \n", " זו דרך ממש טובה להדפיס למשתמש הודעת שגיאה המתארת בדיוק מה הגורם לשגיאה שחווה.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1288,10 +1284,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                                                                    \n", + " זה זמן טוב לעצור רגע ולחשוב.
                                                                                                                                                                                                                                                                                                    \n", + " ישנם סוגי חריגות רבים, ולכל סוג חריגה יש מחלקה שמייצגת אותו.
                                                                                                                                                                                                                                                                                                    \n", + " האם זה אומר שכולן יורשות מאיזו מחלקת \"חריגה\" מופשטת כלשהי?
                                                                                                                                                                                                                                                                                                    \n", " נבדוק באמצעות גישה ל־Method Resolution Order של המחלקה.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1309,9 +1305,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " וואו! זו שרשרת ירושות באורך שלא היה מבייש את שושלת המלוכה הבריטית.
                                                                                                                                                                                                                                                                                                    \n", - " אז נראה שהחריגה של חלוקה באפס (ZeroDivisionError) היא מקרה מיוחד של חריגה חשבונית.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " וואו! זו שרשרת ירושות באורך שלא היה מבייש את שושלת המלוכה הבריטית.
                                                                                                                                                                                                                                                                                                    \n", + " אז נראה שהחריגה של חלוקה באפס (ZeroDivisionError) היא מקרה מיוחד של חריגה חשבונית.
                                                                                                                                                                                                                                                                                                    \n", " חריגה חשבונית (ArithmeicError), בתורה, יורשת מ־Exception, שהיא עצמה יורשת מ־BaseException.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1320,7 +1316,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " נביט במדרג הירושה המלא המוצג בתיעוד של פייתון כדי להתרשם:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1399,10 +1395,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " כיוון שאנחנו כבר מנוסים יחסית בענייני ירושה, בשלב הזה נוכל לפתח כמה רעיונות מעניינים.
                                                                                                                                                                                                                                                                                                    \n", - " האם עצם זה ש־ZeroDivisionError היא תת־מחלקה של Exception, גורם לכך שנוכל לתפוס אותה בעזרת Exception?
                                                                                                                                                                                                                                                                                                    \n", - " אם יתברר שכן, נוכל לתפוס מספר גדול מאוד של סוגי התרעות על חריגות בצורה הזו.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " כיוון שאנחנו כבר מנוסים יחסית בענייני ירושה, בשלב הזה נוכל לפתח כמה רעיונות מעניינים.
                                                                                                                                                                                                                                                                                                    \n", + " האם עצם זה ש־ZeroDivisionError היא תת־מחלקה של Exception, גורם לכך שנוכל לתפוס אותה בעזרת Exception?
                                                                                                                                                                                                                                                                                                    \n", + " אם יתברר שכן, נוכל לתפוס מספר גדול מאוד של סוגי התרעות על חריגות בצורה הזו.
                                                                                                                                                                                                                                                                                                    \n", " נבדוק!\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1423,8 +1419,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " ובכן, כן.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " ובכן, כן.
                                                                                                                                                                                                                                                                                                    \n", " אנחנו יכולים לכתוב בצורה הזו קוד שיתפוס את מרב סוגי ההתרעות על חריגות.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1433,9 +1429,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " בשלב זה נציין שבניגוד לאינטואיציה, חשוב שנהיה ממוקדים בטיפול שלנו בחריגות.
                                                                                                                                                                                                                                                                                                    \n", - " חניכים שזה עתה למדו על הרעיון של טיפול בחריגות מקיפים לפעמים את כל הקוד שלהם ב־try-except. מדובר ברעיון רע למדי.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " בשלב זה נציין שבניגוד לאינטואיציה, חשוב שנהיה ממוקדים בטיפול שלנו בחריגות.
                                                                                                                                                                                                                                                                                                    \n", + " חניכים שזה עתה למדו על הרעיון של טיפול בחריגות מקיפים לפעמים את כל הקוד שלהם ב־try-except. מדובר ברעיון רע למדי.
                                                                                                                                                                                                                                                                                                    \n", " כלל האצבע שלנו מעתה יהיה זה:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1453,9 +1449,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " טיפול בחריגות הוא מנגנון שבהינתן התרעה על חריגה, מאפשר לנו להריץ קוד חלופי או קוד שיטפל בבעיה שנוצרה.
                                                                                                                                                                                                                                                                                                    \n", - " אם אנחנו לא יודעים בדיוק מה הבעיה, או לא מתכוונים לטפל בה בדרך הגיונית – עדיף שלא נתפוס אותה.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " טיפול בחריגות הוא מנגנון שבהינתן התרעה על חריגה, מאפשר לנו להריץ קוד חלופי או קוד שיטפל בבעיה שנוצרה.
                                                                                                                                                                                                                                                                                                    \n", + " אם אנחנו לא יודעים בדיוק מה הבעיה, או לא מתכוונים לטפל בה בדרך הגיונית – עדיף שלא נתפוס אותה.
                                                                                                                                                                                                                                                                                                    \n", " טיפול בחריגות שלא לצורך עלול ליצור \"תקלים שקטים\" בתוכנה שלנו, שאותם יהיה לנו קשה מאוד לאתר לאחר מכן.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1464,16 +1460,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## סיכום" + "## סיכום" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " במחברת זו למדנו מהן חריגות, כיצד לקרוא הודעות שגיאה של פייתון, וכיצד לטפל בהתרעות על חריגות שנוצרות עקב כשל בריצת התוכנית.
                                                                                                                                                                                                                                                                                                    \n", - " ראינו כיצד חריגות מיוצגות בפייתון, איך הן פועלות מאחורי הקלעים ואיך לגלות אילו חריגות עלולות לצוץ בזמן ריצת הקוד שלנו.
                                                                                                                                                                                                                                                                                                    \n", + "

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

                                                                                                                                                                                                                                                                                                    " ] @@ -1482,35 +1478,35 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## מונחים" + "## מונחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    חריגה (exception)
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    \n", - " מופע המייצג מצב לא סדיר, לרוב בעייתי, שזוהה במהלך הרצת הקוד שבתוכנית.
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    חריגה (exception)
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    \n", + " מופע המייצג מצב לא סדיר, לרוב בעייתי, שזוהה במהלך הרצת הקוד שבתוכנית.
                                                                                                                                                                                                                                                                                                    \n", " לכל חריגה יש סוג, וכל סוג חריגה מיוצג באמצעות מחלקה פייתונית.\n", "
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    התרעה על חריגה (raise of an exception)
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    \n", - " מצב שבו פייתון מודיעה על שגיאה או על מצב לא סדיר בריצת התוכנית.
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    התרעה על חריגה (raise of an exception)
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    \n", + " מצב שבו פייתון מודיעה על שגיאה או על מצב לא סדיר בריצת התוכנית.
                                                                                                                                                                                                                                                                                                    \n", " התרעה על חריגה משנה את זרימת הריצה של התוכנית ועלולה לגרום לקריסתה.\n", "
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    Traceback
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    \n", - " שרשרת הקריאות שהובילו להפעלתה של הפונקציה שבה אנחנו נמצאים ברגע מסוים.
                                                                                                                                                                                                                                                                                                    \n", - " בהקשר של חריגות, מדובר בשרשרת הקריאות שהובילה להתרעה על החריגה.
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    Traceback
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    \n", + " שרשרת הקריאות שהובילו להפעלתה של הפונקציה שבה אנחנו נמצאים ברגע מסוים.
                                                                                                                                                                                                                                                                                                    \n", + " בהקשר של חריגות, מדובר בשרשרת הקריאות שהובילה להתרעה על החריגה.
                                                                                                                                                                                                                                                                                                    \n", " שרשרת הקריאות הזו מופיעה גם בהודעת השגיאה שמוצגת כאשר פייתון מתריעה על חריגה.\n", "
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    טיפול בחריגה (exception handling)
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    \n", - " נקרא גם תפיסת חריגה (catching an exception).
                                                                                                                                                                                                                                                                                                    \n", - " בעת התרעה על חריגה, התנהגות ברירת המחדל של התוכנה היא קריסה.
                                                                                                                                                                                                                                                                                                    \n", - " מתכנת יכול להגדיר מראש מה הוא רוצה שיקרה במקרה של התרעה על חריגה.
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    טיפול בחריגה (exception handling)
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    \n", + " נקרא גם תפיסת חריגה (catching an exception).
                                                                                                                                                                                                                                                                                                    \n", + " בעת התרעה על חריגה, התנהגות ברירת המחדל של התוכנה היא קריסה.
                                                                                                                                                                                                                                                                                                    \n", + " מתכנת יכול להגדיר מראש מה הוא רוצה שיקרה במקרה של התרעה על חריגה.
                                                                                                                                                                                                                                                                                                    \n", " במקרה כזה, קריסת התוכנית תימנע.\n", "
                                                                                                                                                                                                                                                                                                    \n", "
                                                                                                                                                                                                                                                                                                    " @@ -1520,24 +1516,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מחשבון" + "### מחשבון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " כתבו פונקציה בשם calc שמקבלת כפרמטרים שני מספרים וסימן של פעולה חשבונית, בסדר הזה.
                                                                                                                                                                                                                                                                                                    \n", - " הסימן יכול להיות אחד מאלה: +, -, * או /.
                                                                                                                                                                                                                                                                                                    \n", - " מטרת הפונקציה היא להחזיר את תוצאת הפעולה החשבונית שהופעלה על שני המספרים.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " כתבו פונקציה בשם calc שמקבלת כפרמטרים שני מספרים וסימן של פעולה חשבונית, בסדר הזה.
                                                                                                                                                                                                                                                                                                    \n", + " הסימן יכול להיות אחד מאלה: +, -, * או /.
                                                                                                                                                                                                                                                                                                    \n", + " מטרת הפונקציה היא להחזיר את תוצאת הפעולה החשבונית שהופעלה על שני המספרים.
                                                                                                                                                                                                                                                                                                    \n", " בפתרונכם, ודאו שאתם מטפלים בכל ההתרעות על חריגות שיכולות לצוץ בעקבות קלט מאתגר שהזין המשתמש.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1546,17 +1542,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### מנסה להבין איפה הסדר כאן" + "### מנסה להבין איפה הסדר כאן" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " כתבו פונקציה בשם search_in_directory שמקבלת נתיב, ורשימה של מילות מפתח.
                                                                                                                                                                                                                                                                                                    \n", - " התוכנה תנסה לפתוח את כל הקבצים הנמצאים בנתיב, ותדפיס עבור כל מילת מפתח את כל הקבצים שבהם היא נמצאת.
                                                                                                                                                                                                                                                                                                    \n", - " התוכנה תרוץ גם על תתי־התיקיות שנמצאות בנתיב שסופק (ועל תתי־תתי התיקיות, וכן הלאה), אם יש כאלו.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " כתבו פונקציה בשם search_in_directory שמקבלת נתיב, ורשימה של מילות מפתח.
                                                                                                                                                                                                                                                                                                    \n", + " התוכנה תנסה לפתוח את כל הקבצים הנמצאים בנתיב, ותדפיס עבור כל מילת מפתח את כל הקבצים שבהם היא נמצאת.
                                                                                                                                                                                                                                                                                                    \n", + " התוכנה תרוץ גם על תתי־התיקיות שנמצאות בנתיב שסופק (ועל תתי־תתי התיקיות, וכן הלאה), אם יש כאלו.
                                                                                                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                                                                                                    " ] }, @@ -1564,7 +1560,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " לדוגמה:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1582,7 +1578,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " תדפיס את הפלט הבא:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -1623,7 +1619,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " טפלו בכמה שיותר התרעות על חריגות שעלולות לצוץ במהלך ריצת התוכנית.\n", "

                                                                                                                                                                                                                                                                                                    " ] diff --git a/week8/4_Exceptions_Part_2.ipynb b/week8/4_Exceptions_Part_2.ipynb index 33553c2..fa9f35b 100644 --- a/week8/4_Exceptions_Part_2.ipynb +++ b/week8/4_Exceptions_Part_2.ipynb @@ -4,30 +4,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# חריגות – חלק 2" + "# חריגות – חלק 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## הקדמה" + "## הקדמה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " במחברת הקודמת התמודדנו לראשונה עם חריגות.
                                                                                                                                                                                                                                                                                                    \n", - " למדנו לפרק הודעות שגיאה לרכיביהן ולחלץ מהן מידע מועיל, העמקנו בדרך הפעולה של Traceback ודיברנו על סוגי החריגות השונים בפייתון.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " במחברת הקודמת התמודדנו לראשונה עם חריגות.
                                                                                                                                                                                                                                                                                                    \n", + " למדנו לפרק הודעות שגיאה לרכיביהן ולחלץ מהן מידע מועיל, העמקנו בדרך הפעולה של Traceback ודיברנו על סוגי החריגות השונים בפייתון.
                                                                                                                                                                                                                                                                                                    \n", " ראינו לראשונה את מילות המפתח try ו־except, ולמדנו כיצד להשתמש בהן כדי לטפל בחריגות.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -36,8 +36,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                                                                                                                                    " ] @@ -46,8 +46,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " לבסוף, הצגנו כיצד השגיאות בפייתון הן בסך הכול מופע שנוצר ממחלקה שמייצגת את סוג החריגה.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " לבסוף, הצגנו כיצד השגיאות בפייתון הן בסך הכול מופע שנוצר ממחלקה שמייצגת את סוג החריגה.
                                                                                                                                                                                                                                                                                                    \n", " הראינו כיצד לקבל גישה למופע הזה מתוך ה־except, וראינו את עץ הירושה המרשים של סוגי החריגות בפייתון. \n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -56,9 +56,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " במחברת זו נמשיך ללמוד על טיפול בחריגות.
                                                                                                                                                                                                                                                                                                    \n", - " עד סוף המחברת תוכלו להתריע בעצמכם על חריגה וליצור סוגי חריגות משל עצמכם.
                                                                                                                                                                                                                                                                                                    \n", + "

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

                                                                                                                                                                                                                                                                                                    " ] @@ -67,16 +67,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ניקוי משטחים" + "### ניקוי משטחים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " לעיתים חשוב לנו לוודא ששורת קוד תתבצע בכל מקרה, גם אם הכול סביב עולה באש.
                                                                                                                                                                                                                                                                                                    \n", - " לרוב, זה קורה כאשר אנחנו פותחים משאב כלשהו (קובץ, חיבור לאתר אינטרנט) וצריכים למחוק או לסגור את המשאב בסוף הפעולה.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " לעיתים חשוב לנו לוודא ששורת קוד תתבצע בכל מקרה, גם אם הכול סביב עולה באש.
                                                                                                                                                                                                                                                                                                    \n", + " לרוב, זה קורה כאשר אנחנו פותחים משאב כלשהו (קובץ, חיבור לאתר אינטרנט) וצריכים למחוק או לסגור את המשאב בסוף הפעולה.
                                                                                                                                                                                                                                                                                                    \n", " במקרים כאלו, חשוב לנו שהשורה תתבצע אפילו אם הייתה התרעה על חריגה במהלך הרצת הקוד.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -85,10 +85,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " ננסה, לדוגמה, לכווץ את כל התמונות בתיקיית images לארכיון בעזרת המודול zipfile.
                                                                                                                                                                                                                                                                                                    \n", - " אין מה לחשוש – המודול מובן יחסית וקל לשימוש.
                                                                                                                                                                                                                                                                                                    \n", - " כל שנצטרך לעשות זה ליצור מופע של ZipFile ולהפעיל עליו את הפעולה write כדי לצרף לארכיון קבצים.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " ננסה, לדוגמה, לכווץ את כל התמונות בתיקיית images לארכיון בעזרת המודול zipfile.
                                                                                                                                                                                                                                                                                                    \n", + " אין מה לחשוש – המודול מובן יחסית וקל לשימוש.
                                                                                                                                                                                                                                                                                                    \n", + " כל שנצטרך לעשות זה ליצור מופע של ZipFile ולהפעיל עליו את הפעולה write כדי לצרף לארכיון קבצים.
                                                                                                                                                                                                                                                                                                    \n", " אם אתם מרגישים נוח, זה הזמן לכתוב את הפתרון לכך בעצמכם. אם לא, ודאו שאתם מבינים היטב את התאים הבאים. \n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -97,7 +97,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " נתחיל ביבוא המודולים הרלוונטיים:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -116,7 +116,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " וככלי עזר, נכתוב generator שמקבל כפרמטר נתיב לתיקייה, ומחזיר את הנתיב לכל הקבצים שבה:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -138,7 +138,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " עכשיו נכתוב פונקציה שיוצרת קובץ ארכיון חדש, מוסיפה אליו את הקבצים שבתיקיית התמונות וסוגרת את קובץ הארכיון:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -165,9 +165,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " אבל מה יקרה אם תיקיית התמונות גדולה במיוחד ונגמר לנו המקום בזיכרון של המחשב?
                                                                                                                                                                                                                                                                                                    \n", - " מה יקרה אם אין לנו גישה לאחד הקבצים והקריאה של אותו קובץ תיכשל?
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " אבל מה יקרה אם תיקיית התמונות גדולה במיוחד ונגמר לנו המקום בזיכרון של המחשב?
                                                                                                                                                                                                                                                                                                    \n", + " מה יקרה אם אין לנו גישה לאחד הקבצים והקריאה של אותו קובץ תיכשל?
                                                                                                                                                                                                                                                                                                    \n", " נטפל במקרים שבהם פייתון תתריע על חריגה:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -197,9 +197,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " התא למעלה מפר עיקרון חשוב שדיברנו עליו:
                                                                                                                                                                                                                                                                                                    \n", - " עדיף שלא לתפוס את החריגה אם לא יודעים בדיוק מה הסוג שלה, למה היא התרחשה וכיצד לטפל בה.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " התא למעלה מפר עיקרון חשוב שדיברנו עליו:
                                                                                                                                                                                                                                                                                                    \n", + " עדיף שלא לתפוס את החריגה אם לא יודעים בדיוק מה הסוג שלה, למה היא התרחשה וכיצד לטפל בה.
                                                                                                                                                                                                                                                                                                    \n", " אבל רגע! אם לא נתפוס את החריגה, כיצד נוודא שהקוד שלנו סגר את קובץ הארכיון באופן מסודר לפני שהתוכנה קרסה?\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -208,9 +208,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " זה הזמן להכיר את מילת המפתח finally, שבאה אחרי ה־except או במקומו.
                                                                                                                                                                                                                                                                                                    \n", - " השורות שכתובות ב־finally יתבצעו תמיד, גם אם הקוד קרס בגלל חריגה.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " זה הזמן להכיר את מילת המפתח finally, שבאה אחרי ה־except או במקומו.
                                                                                                                                                                                                                                                                                                    \n", + " השורות שכתובות ב־finally יתבצעו תמיד, גם אם הקוד קרס בגלל חריגה.
                                                                                                                                                                                                                                                                                                    \n", " שימוש ב־finally ייראה כך:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -233,7 +233,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " שימו לב שאף על פי שהקוד שנמצא בתוך ה־try קרס, ה־finally התבצע.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -242,7 +242,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " למעשה, finally עקשן כל כך שהוא יתבצע אפילו אם היה return: \n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -267,7 +267,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " נשתמש במנגנון הזה כדי לוודא שקובץ הארכיון באמת ייסגר בסופו של דבר, ללא תלות במה שיקרה בדרך:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -296,7 +296,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " ונבדוק שזה יעבוד גם אם נספק תיקייה לא קיימת, לדוגמה:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -314,7 +314,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " יופי! עכשיו כשראינו התרעה על חריגת FileNotFoundError כשמשתמש הכניס נתיב לא תקין לתיקייה, ראוי שנטפל בה:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -345,9 +345,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " יותר טוב!
                                                                                                                                                                                                                                                                                                    \n", - " היתרון בצורת הכתיבה הזו הוא שגם אם תהיה התרעה על חריגה שאינה מסוג FileNotFoundError והתוכנה תקרוס,
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " יותר טוב!
                                                                                                                                                                                                                                                                                                    \n", + " היתרון בצורת הכתיבה הזו הוא שגם אם תהיה התרעה על חריגה שאינה מסוג FileNotFoundError והתוכנה תקרוס,
                                                                                                                                                                                                                                                                                                    \n", " נוכל להיות בטוחים שקובץ הארכיון נסגר כראוי.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -356,15 +356,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### הכול בסדר" + "### הכול בסדר" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " עד כה למדנו על 3 מילות מפתח שקשורות במנגנון לטיפול בחריגות של פייתון: try, except ו־finally.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " עד כה למדנו על 3 מילות מפתח שקשורות במנגנון לטיפול בחריגות של פייתון: try, except ו־finally.
                                                                                                                                                                                                                                                                                                    \n", " אלו רעיונות מרכזיים בטיפול בחריגות, ותוכלו למצוא אותם בצורות כאלו ואחרות בכל שפת תכנות עכשווית שמאפשרת טיפול בחריגות.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -373,9 +373,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " אלא שבפייתון ישנה מילת מפתח נוספת שהתגנבה למנגנון הטיפול בחריגות: else.
                                                                                                                                                                                                                                                                                                    \n", - " תחת מילת המפתח הזו יופיעו פעולות שנרצה לבצע רק אם הקוד שב־try רץ במלואו בהצלחה,
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " אלא שבפייתון ישנה מילת מפתח נוספת שהתגנבה למנגנון הטיפול בחריגות: else.
                                                                                                                                                                                                                                                                                                    \n", + " תחת מילת המפתח הזו יופיעו פעולות שנרצה לבצע רק אם הקוד שב־try רץ במלואו בהצלחה,
                                                                                                                                                                                                                                                                                                    \n", " או במילים אחרות: באף שלב לא הייתה התרעה על חריגה; אף לא except אחד התבצע.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -405,10 +405,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " \"אבל רגע\", ישאלו חדי העין מביניכם.
                                                                                                                                                                                                                                                                                                    \n", - " \"הרי המטרה היחידה של else היא להריץ קוד אם הקוד שב־try רץ עד סופו,
                                                                                                                                                                                                                                                                                                    \n", - " אז למה שלא פשוט נכניס אותו כבר לתוך ה־try, מייד אחרי הקוד שרצינו לבצע?\"
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " \"אבל רגע\", ישאלו חדי העין מביניכם.
                                                                                                                                                                                                                                                                                                    \n", + " \"הרי המטרה היחידה של else היא להריץ קוד אם הקוד שב־try רץ עד סופו,
                                                                                                                                                                                                                                                                                                    \n", + " אז למה שלא פשוט נכניס אותו כבר לתוך ה־try, מייד אחרי הקוד שרצינו לבצע?\"
                                                                                                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                                                                                                    " ] }, @@ -416,9 +416,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " וזו שאלה שיש בה היגיון רב –
                                                                                                                                                                                                                                                                                                    \n", - " הרי קוד שקורס ב־try ממילא גורם לכך שהקוד שנמצא אחריו ב־try יפסיק לרוץ.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " וזו שאלה שיש בה היגיון רב –
                                                                                                                                                                                                                                                                                                    \n", + " הרי קוד שקורס ב־try ממילא גורם לכך שהקוד שנמצא אחריו ב־try יפסיק לרוץ.
                                                                                                                                                                                                                                                                                                    \n", " אז למה לא פשוט לשים שם את קוד ההמשך? מה רע בקטע הקוד הבא?\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -447,10 +447,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " ההבדל הוא רעיוני בעיקרו.
                                                                                                                                                                                                                                                                                                    \n", - " המטרה שלנו היא להעביר את הרעיון שמשתקף מהקוד שלנו לקוראו בצורה נהירה יותר, קצת כמו בספר טוב.
                                                                                                                                                                                                                                                                                                    \n", - " מילת המפתח else תעזור לקורא להבין איפה חשבנו שעשויה להיות ההתרעה על החריגה,
                                                                                                                                                                                                                                                                                                    \n", + "

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

                                                                                                                                                                                                                                                                                                    " ] @@ -459,11 +459,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " ישנו יתרון נוסף בהפרדת הקוד ל־try ול־else
                                                                                                                                                                                                                                                                                                    \n", - " השיטה הזו עוזרת לנו להפריד בין הקוד שבו ייתפסו התרעות על חריגות, לבין הקוד שירוץ אחריו ושבו לא יטופלו חריגות.
                                                                                                                                                                                                                                                                                                    \n", - " כיוון שהשורות שנמצאות בתוך ה־else לא נמצאות בתוך ה־try, פייתון לא תתפוס התרעות על חריגות שהתרחשו במהלך הרצתן.
                                                                                                                                                                                                                                                                                                    \n", - " שיטה זו עוזרת לנו ליישם את כלל האצבע שמורה לנו לתפוס התרעות על חריגות באופן ממוקד –
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " ישנו יתרון נוסף בהפרדת הקוד ל־try ול־else
                                                                                                                                                                                                                                                                                                    \n", + " השיטה הזו עוזרת לנו להפריד בין הקוד שבו ייתפסו התרעות על חריגות, לבין הקוד שירוץ אחריו ושבו לא יטופלו חריגות.
                                                                                                                                                                                                                                                                                                    \n", + " כיוון שהשורות שנמצאות בתוך ה־else לא נמצאות בתוך ה־try, פייתון לא תתפוס התרעות על חריגות שהתרחשו במהלך הרצתן.
                                                                                                                                                                                                                                                                                                    \n", + " שיטה זו עוזרת לנו ליישם את כלל האצבע שמורה לנו לתפוס התרעות על חריגות באופן ממוקד –
                                                                                                                                                                                                                                                                                                    \n", " בעזרת else לא נתפוס התרעות על חריגות בקוד שבו לא התכוונו מלכתחילה לתפוס התרעות על חריגות.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -472,23 +472,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    \n", - " \"תרגול\" \n", - "
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    \n", - "

                                                                                                                                                                                                                                                                                                    \n", - " כתבו פונקציה בשם print_item שמקבלת כפרמטר ראשון רשימה, וכפרמטר שני מספר ($n$).
                                                                                                                                                                                                                                                                                                    \n", - " הפונקציה תדפיס את האיבר ה־$n$־י ברשימה.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    \n", + "\"תרגול\"\n", + "
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " כתבו פונקציה בשם print_item שמקבלת כפרמטר ראשון רשימה, וכפרמטר שני מספר ($n$).
                                                                                                                                                                                                                                                                                                    \n", + " הפונקציה תדפיס את האיבר ה־$n$־י ברשימה.
                                                                                                                                                                                                                                                                                                    \n", " טפלו בכל ההתרעות על חריגות שעלולות להיווצר בעקבות הרצת הפונקציה.\n", "

                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    \n", - "

                                                                                                                                                                                                                                                                                                    \n", - " חשוב!
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + "חשוב!
                                                                                                                                                                                                                                                                                                    \n", " פתרו לפני שתמשיכו!\n", "

                                                                                                                                                                                                                                                                                                    \n", - "
                                                                                                                                                                                                                                                                                                    \n", + "
                                                                                                                                                                                                                                                                                                    \n", "
                                                                                                                                                                                                                                                                                                    " ] }, @@ -496,7 +496,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", " לסיכום, ניצור קטע קוד שמשתמש בכל מילות המפתח שלמדנו בהקשר של טיפול בחריגות:\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -528,8 +528,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                                    \n", - " \"בתמונה\n", - "
                                                                                                                                                                                                                                                                                                    \n", + "\"בתמונה\n", + "
                                                                                                                                                                                                                                                                                                    \n", " תרשים זרימה המציג כיצד פייתון קוראת את הקוד במבנה try, except, else, finally.\n", "
                                                                                                                                                                                                                                                                                                    \n", "
                                                                                                                                                                                                                                                                                                    " @@ -539,16 +539,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: פותחים שעון" + "### תרגיל ביניים: פותחים שעון" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " כתבו פונקציה בשם estimate_read_time, שמקבלת נתיב לקובץ, ומודדת בתוך כמה זמן פייתון קוראת את הקובץ.
                                                                                                                                                                                                                                                                                                    \n", - " על הפונקציה להוסיף לקובץ בשם log.txt שורה שבה כתוב את שם הקובץ שניסיתם לקרוא, ובתוך כמה שניות פייתון קראה את הקובץ.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " כתבו פונקציה בשם estimate_read_time, שמקבלת נתיב לקובץ, ומודדת בתוך כמה זמן פייתון קוראת את הקובץ.
                                                                                                                                                                                                                                                                                                    \n", + " על הפונקציה להוסיף לקובץ בשם log.txt שורה שבה כתוב את שם הקובץ שניסיתם לקרוא, ובתוך כמה שניות פייתון קראה את הקובץ.
                                                                                                                                                                                                                                                                                                    \n", " הפונקציה תטפל בכל מקרי הקצה ובהתרעות על חריגות שבהם היא עלולה להיתקל.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -557,15 +557,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## יצירת התרעה על חריגה" + "## יצירת התרעה על חריגה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " עד כה התמקדנו בטיפול בהתרעות על חריגות שעלולות להיווצר במהלך ריצת התוכנית.
                                                                                                                                                                                                                                                                                                    \n", + "

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

                                                                                                                                                                                                                                                                                                    " ] @@ -574,8 +574,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " התרעה על חריגה, כפי שלמדנו, היא דרך לדווח למתכנת שמשהו בעייתי התרחש בזמן ריצת התוכנית.
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " התרעה על חריגה, כפי שלמדנו, היא דרך לדווח למתכנת שמשהו בעייתי התרחש בזמן ריצת התוכנית.
                                                                                                                                                                                                                                                                                                    \n", " נוכל ליצור התרעות כאלו בעצמנו, כדי להודיע על בעיות אפשריות למתכנתים שמשתמשים בקוד שלנו.\n", "

                                                                                                                                                                                                                                                                                                    " ] @@ -584,14 +584,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                    \n", - " יצירת התרעה על חריגה היא עניין פשוט למדי שמורכב מ־3 חלקים:
                                                                                                                                                                                                                                                                                                    \n", + "

                                                                                                                                                                                                                                                                                                    \n", + " יצירת התרעה על חריגה היא עניין פשוט למדי שמורכב מ־3 חלקים:
                                                                                                                                                                                                                                                                                                    \n", "

                                                                                                                                                                                                                                                                                                    \n", - "\n", - "
                                                                                                                                                                                                                                                                                                      \n", - "
                                                                                                                                                                                                                                                                                                    1. שימוש במילת המפתח raise.
                                                                                                                                                                                                                                                                                                    2. \n", - "
                                                                                                                                                                                                                                                                                                    3. ציון סוג החריגה שעליה אנחנו הולכים להתריע – ValueError, לדוגמה.
                                                                                                                                                                                                                                                                                                    4. \n", - "
                                                                                                                                                                                                                                                                                                    5. בסוגריים אחרי כן – הודעה שתתאר למתכנת שישתמש בקוד את הבעיה.
                                                                                                                                                                                                                                                                                                    6. \n", + "
                                                                                                                                                                                                                                                                                                        \n", + "
                                                                                                                                                                                                                                                                                                      1. שימוש במילת המפתח raise.
                                                                                                                                                                                                                                                                                                      2. \n", + "
                                                                                                                                                                                                                                                                                                      3. ציון סוג החריגה שעליה אנחנו הולכים להתריע – ValueError, לדוגמה.
                                                                                                                                                                                                                                                                                                      4. \n", + "
                                                                                                                                                                                                                                                                                                      5. בסוגריים אחרי כן – הודעה שתתאר למתכנת שישתמש בקוד את הבעיה.
                                                                                                                                                                                                                                                                                                      6. \n", "
                                                                                                                                                                                                                                                                                                      " ] }, @@ -599,7 +598,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                                      \n", " זה ייראה כך:\n", "

                                                                                                                                                                                                                                                                                                      " ] @@ -617,9 +616,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                      \n", - " נראה דוגמה לקוד אמיתי שמממש התרעה על חריגה.
                                                                                                                                                                                                                                                                                                      \n", - " הקוד הבא לקוח מהמודול datetime, והוא רץ בכל פעם שמבקשים ליצור מופע חדש של תאריך.
                                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                                      \n", + " נראה דוגמה לקוד אמיתי שמממש התרעה על חריגה.
                                                                                                                                                                                                                                                                                                      \n", + "הקוד הבא לקוח מהמודול datetime, והוא רץ בכל פעם שמבקשים ליצור מופע חדש של תאריך.
                                                                                                                                                                                                                                                                                                      \n", " שימו לב כיצד יוצר המודול בודק את כל אחד מחלקי התאריך, ואם הערך חורג מהטווח שהוגדר – הוא מתריע על חריגה עם הודעת חריגה ממוקדת:\n", "

                                                                                                                                                                                                                                                                                                      " ] @@ -648,9 +647,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                      \n", - " מטרת הפונקציה היא להבין אם השעה שהועברה ל־datetime תקינה.
                                                                                                                                                                                                                                                                                                      \n", - " בפונקציה, בודקים אם השעה היא מספר בטווח 0–23, אם מספר הדקות הוא מספר בטווח 0–59 וכן הלאה.
                                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                                      \n", + " מטרת הפונקציה היא להבין אם השעה שהועברה ל־datetime תקינה.
                                                                                                                                                                                                                                                                                                      \n", + " בפונקציה, בודקים אם השעה היא מספר בטווח 0–23, אם מספר הדקות הוא מספר בטווח 0–59 וכן הלאה.
                                                                                                                                                                                                                                                                                                      \n", " אם אחד התנאים לא מתקיים – מתריעים למתכנת שניסה ליצור את מופע התאריך על חריגה.\n", "

                                                                                                                                                                                                                                                                                                      " ] @@ -659,9 +658,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                                                                      \n", + " הקוד משתמש בתעלול מבורך – ביצירת מופע ממחלקה של חריגה, אפשר להשתמש ביותר מפרמטר אחד.
                                                                                                                                                                                                                                                                                                      \n", + " הפרמטר הראשון תמיד יוקדש להודעת השגיאה, אבל אפשר להשתמש בשאר הפרמטרים כדי להעביר מידע נוסף על החריגה.
                                                                                                                                                                                                                                                                                                      \n", " בדרך כלל מעבירים שם מידע על הערכים שגרמו לבעיה, או את הערכים עצמם.\n", "

                                                                                                                                                                                                                                                                                                      " ] @@ -670,16 +669,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### תרגיל ביניים: סכו\"ם" + "### תרגיל ביניים: סכו\"ם" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                      \n", - " בתור רשת לכלי עבודה אתם מנסים לספור את מלאי הסולמות, כרסומות ומחרטות שקיימים אצלכם.
                                                                                                                                                                                                                                                                                                      \n", - " כתבו מחלקה שמייצגת חנות (Store), ולה 3 תכונות:
                                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                                      \n", + " בתור רשת לכלי עבודה אתם מנסים לספור את מלאי הסולמות, כרסומות ומחרטות שקיימים אצלכם.
                                                                                                                                                                                                                                                                                                      \n", + " כתבו מחלקה שמייצגת חנות (Store), ולה 3 תכונות:
                                                                                                                                                                                                                                                                                                      \n", " מספר הסולמות (ladders), מספר הכרסומות (millings) ומספר המחרטות (lathes) במלאי.\n", "

                                                                                                                                                                                                                                                                                                      " ] @@ -688,8 +687,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                      \n", - " כתבו פונקציה בשם count_inventory שמקבלת רשימת מופעים של חנויות, ומחזירה את מספר הפריטים הכולל במלאי.
                                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                                      \n", + " כתבו פונקציה בשם count_inventory שמקבלת רשימת מופעים של חנויות, ומחזירה את מספר הפריטים הכולל במלאי.
                                                                                                                                                                                                                                                                                                      \n", " צרו התרעות על חריגות במידת הצורך, בין אם במחלקה ובין אם בפונקציה.\n", "

                                                                                                                                                                                                                                                                                                      " ] @@ -698,23 +697,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## טכניקות בניהול חריגות" + "## טכניקות בניהול חריגות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### מיקוד החריגה" + "### מיקוד החריגה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                      \n", - " טכניקה מעניינת שמשתמשים בה מדי פעם היא ניסוח מחדש של התרעה על חריגה.
                                                                                                                                                                                                                                                                                                      \n", - " נבחר לנהוג כך כשהניסוח מחדש יעזור לנו למקד את מי שישתמש בקוד שלנו.
                                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                                      \n", + " טכניקה מעניינת שמשתמשים בה מדי פעם היא ניסוח מחדש של התרעה על חריגה.
                                                                                                                                                                                                                                                                                                      \n", + " נבחר לנהוג כך כשהניסוח מחדש יעזור לנו למקד את מי שישתמש בקוד שלנו.
                                                                                                                                                                                                                                                                                                      \n", " בטכניקה הזו נתפוס בעזרת try חריגה מסוג מסוים, וב־except ניצור התרעה חדשה על חריגה עם הודעת שגיאה משלנו.\n", "

                                                                                                                                                                                                                                                                                                      " ] @@ -723,7 +722,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                                      \n", " נראה דוגמה:\n", "

                                                                                                                                                                                                                                                                                                      " ] @@ -754,16 +753,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### טיפול והתרעה" + "### טיפול והתרעה" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                      \n", - " טכניקה נוספת היא ביצוע פעולות מסוימות במהלך ה־except, והתרעה על החריגה מחדש.
                                                                                                                                                                                                                                                                                                      \n", - " השימוש בטכניקה הזו נפוץ מאוד.
                                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                                      \n", + " טכניקה נוספת היא ביצוע פעולות מסוימות במהלך ה־except, והתרעה על החריגה מחדש.
                                                                                                                                                                                                                                                                                                      \n", + " השימוש בטכניקה הזו נפוץ מאוד.
                                                                                                                                                                                                                                                                                                      \n", "

                                                                                                                                                                                                                                                                                                      " ] }, @@ -771,19 +770,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                                      \n", + "

                                                                                                                                                                                                                                                                                                      \n", " שימוש בה הוא מעין סיפור קצר בשלושה חלקים:\n", "

                                                                                                                                                                                                                                                                                                      \n", - "\n", - "
                                                                                                                                                                                                                                                                                                        \n", - "
                                                                                                                                                                                                                                                                                                      1. תופסים את החריגה.
                                                                                                                                                                                                                                                                                                      2. \n", - "
                                                                                                                                                                                                                                                                                                      3. מבצעים פעולות רלוונטיות כמו:\n", + "
                                                                                                                                                                                                                                                                                                          \n", + "
                                                                                                                                                                                                                                                                                                        1. תופסים את החריגה.
                                                                                                                                                                                                                                                                                                        2. \n", + "
                                                                                                                                                                                                                                                                                                        3. מבצעים פעולות רלוונטיות כמו:\n", "
                                                                                                                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                                                                                                                          • מתעדים את התרחשות החריגה במקום חיצוני, כמו קובץ, או אפילו מערכת ייעודית לניהול שגיאות.
                                                                                                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                                                                                                          • מבטלים את הפעולות שכן הספקנו לעשות לפני שהייתה התרעה על חריגה.
                                                                                                                                                                                                                                                                                                          • \n", - "
                                                                                                                                                                                                                                                                                                          \n", - "
                                                                                                                                                                                                                                                                                                        4. \n", - "
                                                                                                                                                                                                                                                                                                        5. מקפיצים מחדש את החריגה – את אותה חריגה בדיוק או אחת מדויקת יותר.
                                                                                                                                                                                                                                                                                                        6. \n", + "
                                                                                                                                                                                                                                                                                                        7. מתעדים את התרחשות החריגה במקום חיצוני, כמו קובץ, או אפילו מערכת ייעודית לניהול שגיאות.
                                                                                                                                                                                                                                                                                                        8. \n", + "
                                                                                                                                                                                                                                                                                                        9. מבטלים את הפעולות שכן הספקנו לעשות לפני שהייתה התרעה על חריגה.
                                                                                                                                                                                                                                                                                                        10. \n", + "
                                                                                                                                                                                                                                                                                      \n", + "\n", + "
                                                                                                                                                                                                                                                                                    • מקפיצים מחדש את החריגה – את אותה חריגה בדיוק או אחת מדויקת יותר.
                                                                                                                                                                                                                                                                                    • \n", "
                                                                                                                                                                                                                                                                            " ] }, @@ -791,7 +789,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", " לדוגמה:\n", "

                                                                                                                                                                                                                                                                            " ] @@ -826,8 +824,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " למעשה, הרעיון של התרעה מחדש על חריגה הוא כה נפוץ, שמפתחי פייתון יצרו עבורו מעין קיצור.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " למעשה, הרעיון של התרעה מחדש על חריגה הוא כה נפוץ, שמפתחי פייתון יצרו עבורו מעין קיצור.
                                                                                                                                                                                                                                                                            \n", " אם אתם נמצאים בתוך except ורוצים לזרוק בדיוק את החריגה שתפסתם, פשוט כתבו raise בלי כלום אחריו:\n", "

                                                                                                                                                                                                                                                                            " ] @@ -855,15 +853,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### יצירת חריגה משלנו" + "### יצירת חריגה משלנו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " בתוכנות גדולות במיוחד נרצה ליצור סוגי חריגות משלנו.
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " בתוכנות גדולות במיוחד נרצה ליצור סוגי חריגות משלנו.
                                                                                                                                                                                                                                                                            \n", " נוכל לעשות זאת בקלות אם נירש ממחלקה קיימת שמייצגת חריגה:\n", "

                                                                                                                                                                                                                                                                            " ] @@ -882,7 +880,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", " בשלב זה, נוכל להתריע על חריגה בעזרת סוג החריגה שיצרנו:\n", "

                                                                                                                                                                                                                                                                            " ] @@ -908,11 +906,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                                                                                            \n", - " \"טיפ!\"\n", - "
                                                                                                                                                                                                                                                                            \n", - "
                                                                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                                                                            \n", + "\"טיפ!\"\n", + "
                                                                                                                                                                                                                                                                            \n", + "
                                                                                                                                                                                                                                                                            \n", " נהוג לסיים את שמות המחלקות המייצגות חריגה במילה Error.\n", "
                                                                                                                                                                                                                                                                            \n", "
                                                                                                                                                                                                                                                                            " @@ -922,9 +920,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", - " זכרו שהירושה כאן משפיעה על הדרך שבה תטופל החריגה שלכם.
                                                                                                                                                                                                                                                                            \n", - " אם, נניח, AddressUnknownError הייתה יורשת מ־KeyError, ולא מ־Exception,
                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", + " זכרו שהירושה כאן משפיעה על הדרך שבה תטופל החריגה שלכם.
                                                                                                                                                                                                                                                                            \n", + " אם, נניח, AddressUnknownError הייתה יורשת מ־KeyError, ולא מ־Exception,
                                                                                                                                                                                                                                                                            \n", " זה אומר שכל מי שהיה עושה except KeyError היה תופס גם חריגות מסוג AddressUnknownError.\n", "

                                                                                                                                                                                                                                                                            " ] @@ -933,14 +931,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                            \n", + "

                                                                                                                                                                                                                                                                            \n", " יש לא מעט יתרונות ליצירת שגיאות משל עצמנו:\n", "

                                                                                                                                                                                                                                                                            \n", - "\n", - "
                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                            1. המתכנתים שמשתמשים בפונקציה יכולים לתפוס התרעות ספציפיות יותר.
                                                                                                                                                                                                                                                                            2. \n", - "
                                                                                                                                                                                                                                                                            3. הקוד הופך לבהיר יותר עבור הקורא ועבור מי שמקבל את ההתרעה על החריגה.
                                                                                                                                                                                                                                                                            4. \n", - "
                                                                                                                                                                                                                                                                            5. בזכות רעיון הירושה, אפשר לספק לחריגות הללו התנהגות מותאמת אישית.
                                                                                                                                                                                                                                                                            6. \n", + "
                                                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                                              1. המתכנתים שמשתמשים בפונקציה יכולים לתפוס התרעות ספציפיות יותר.
                                                                                                                                                                                                                                                                              2. \n", + "
                                                                                                                                                                                                                                                                              3. הקוד הופך לבהיר יותר עבור הקורא ועבור מי שמקבל את ההתרעה על החריגה.
                                                                                                                                                                                                                                                                              4. \n", + "
                                                                                                                                                                                                                                                                              5. בזכות רעיון הירושה, אפשר לספק לחריגות הללו התנהגות מותאמת אישית.
                                                                                                                                                                                                                                                                              6. \n", "
                                                                                                                                                                                                                                                                              " ] }, @@ -948,16 +945,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                              \n", - " \"העמקה\" \n", - "
                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                              \n", - "

                                                                                                                                                                                                                                                                              \n", - " כבכל ירושה, תוכלו לדרוס את הפעולות __init__ ו־__str__ של מחלקת־העל שממנה ירשתם.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                              \n", + "\"העמקה\"\n", + "
                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " כבכל ירושה, תוכלו לדרוס את הפעולות __init__ ו־__str__ של מחלקת־העל שממנה ירשתם.
                                                                                                                                                                                                                                                                              \n", " דריסה כזו תספק לכם גמישות רבה בהגדרת החריגות שיצרתם ובשימוש בהן.\n", "

                                                                                                                                                                                                                                                                              \n", - "
                                                                                                                                                                                                                                                                              \n", + "
                                                                                                                                                                                                                                                                              \n", "
                                                                                                                                                                                                                                                                              " ] }, @@ -965,7 +962,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", " נראה דוגמה קצרצרה ליצירת חריגה מותאמת אישית:\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1004,16 +1001,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## נימוסים והליכות" + "## נימוסים והליכות" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                                              \n", + " טיפול בחריגות היא הדרך הטובה ביותר להגיב על התרחשויות לא סדירות ולנהל אותן בקוד הפייתון שאנחנו כותבים.
                                                                                                                                                                                                                                                                              \n", + " כפי שכבר ראינו במחברות קודמות, בכלים מורכבים ומתקדמים יש יותר מקום לטעויות, וקווים מנחים יעזרו לנו להתנהל בצורה נכונה.
                                                                                                                                                                                                                                                                              \n", " נעבור על כמה כללי אצבע ורעיונות מועילים שיקלו עליכם לעבוד נכון עם חריגות:\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1022,16 +1019,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### טיפול ממוקד" + "### טיפול ממוקד" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " באופן כללי, נעדיף להיות כמה שיותר ממוקדים בטיפול בחריגות.
                                                                                                                                                                                                                                                                              \n", - " כשאנחנו מטפלים בחריגה, אנחנו יוצאים מנקודת הנחה שאנחנו יודעים מה הבעיה וכיצד יש לטפל בה.
                                                                                                                                                                                                                                                                              \n", + "

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

                                                                                                                                                                                                                                                                              " ] @@ -1040,10 +1037,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                                              \n", + " לא נרצה, לדוגמה, לתפוס התרעות על חריגות שלא התכוונו לתפוס מלכתחילה.
                                                                                                                                                                                                                                                                              \n", + " אנחנו מעוניינים לטפל רק בבעיות שאנחנו יודעים שעלולות להתרחש.
                                                                                                                                                                                                                                                                              \n", + " אם ישנה בעיה שאנחנו לא יודעים עליה – אנחנו מעדיפים שפייתון תצעק כדי שנדע שהיא קיימת.
                                                                                                                                                                                                                                                                              \n", " \"השתקה\" של בעיות שאנחנו לא יודעים על קיומן היא פתח לתקלים בלתי צפויים וחמורים אף יותר.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1052,9 +1049,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " בקוד, הנקודה הזו תבוא לידי ביטוי כשנכתוב אחרי ה־except את רשימת סוגי החריגות שבהן נטפל.
                                                                                                                                                                                                                                                                              \n", - " נשתדל שלא לטפל ב־Exception, משום שאז נתפוס כל סוג חריגה שיורש ממנה (כמעט כולם).
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " בקוד, הנקודה הזו תבוא לידי ביטוי כשנכתוב אחרי ה־except את רשימת סוגי החריגות שבהן נטפל.
                                                                                                                                                                                                                                                                              \n", + " נשתדל שלא לטפל ב־Exception, משום שאז נתפוס כל סוג חריגה שיורש ממנה (כמעט כולם).
                                                                                                                                                                                                                                                                              \n", " נשתדל גם לא לדחוס אחרי ה־except סוגי חריגות שאנחנו לא יודעים אם הם רלוונטיים או לא.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1063,8 +1060,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " יתרה מזאת, טיפול בשגיאות יתבצע רק על קוד שאנחנו יודעים שעלול לגרום להתרעה על חריגה.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " יתרה מזאת, טיפול בשגיאות יתבצע רק על קוד שאנחנו יודעים שעלול לגרום להתרעה על חריגה.
                                                                                                                                                                                                                                                                              \n", " קוד שלא קשור לחריגה שהולכת להתרחש – לא יהיה חלק מהליך הטיפול בשגיאות.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1073,9 +1070,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " בקוד, הנקודה הזו תבוא לידי ביטוי בכך שבתוך ה־try יוזחו כמה שפחות שורות קוד.
                                                                                                                                                                                                                                                                              \n", - " תחת ה־try נכתוב אך ורק את הקוד שעלול להתריע על חריגה, ושום דבר מעבר לו.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " בקוד, הנקודה הזו תבוא לידי ביטוי בכך שבתוך ה־try יוזחו כמה שפחות שורות קוד.
                                                                                                                                                                                                                                                                              \n", + " תחת ה־try נכתוב אך ורק את הקוד שעלול להתריע על חריגה, ושום דבר מעבר לו.
                                                                                                                                                                                                                                                                              \n", " כך נדע שאנחנו לא תופסים בטעות חריגות שלא התכוונו לתפוס מלכתחילה.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1084,7 +1081,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### חריגות הן עבור המתכנת" + "### חריגות הן עבור המתכנת" ] }, { @@ -1092,8 +1089,8 @@ "metadata": {}, "source": [ "\n", - "

                                                                                                                                                                                                                                                                              \n", - " אנחנו מעוניינים שהמתכנת שישתמש בקוד יקבל התרעות על חריגות שיבהירו לו מהן הבעיות בקוד שכתב, ויאפשרו לו לטפל בהן.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " אנחנו מעוניינים שהמתכנת שישתמש בקוד יקבל התרעות על חריגות שיבהירו לו מהן הבעיות בקוד שכתב, ויאפשרו לו לטפל בהן.
                                                                                                                                                                                                                                                                              \n", " אם כתבנו מודול או פונקציה שמתכנת אחר הולך להשתמש בה, לדוגמה, נקפיד ליצור התרעות על חריגות שיעזרו לו לנווט בקוד שלנו.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1102,10 +1099,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " לעומת המתכנת, אנחנו שואפים שמי שישתמש בתוכנית (הלקוח של המוצר, נניח) לעולם לא יצטרך להתמודד עם התרעות על חריגות.
                                                                                                                                                                                                                                                                              \n", - " התוכנית לא אמורה לקרוס בגלל חריגה אף פעם, אלא לטפל בחריגה ולחזור לפעולה תקינה.
                                                                                                                                                                                                                                                                              \n", - " אם החריגה קיצונית ומחייבת את הפסקת הריצה של התוכנית, עלינו לפעול בצורה אחראית:
                                                                                                                                                                                                                                                                              \n", + "

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

                                                                                                                                                                                                                                                                              " ] @@ -1114,15 +1111,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### EAFP או LBYL" + "### EAFP או LBYL" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " בכל הקשור לשפות תכנות, ישנן שתי גישות נפוצות לטיפול במקרי קצה בתוכנית.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " בכל הקשור לשפות תכנות, ישנן שתי גישות נפוצות לטיפול במקרי קצה בתוכנית.
                                                                                                                                                                                                                                                                              \n", "

                                                                                                                                                                                                                                                                              " ] }, @@ -1130,10 +1127,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " הגישה הראשונה נקראת LBYL, או Look Before You Leap (\"הסתכל לפני שאתה קופץ\").
                                                                                                                                                                                                                                                                              \n", - " גישה זו דוגלת בבדיקת השטח לפני ביצוע כל פעולה.
                                                                                                                                                                                                                                                                              \n", - " הפעולה תתבצע לבסוף, רק כשנהיה בטוחים שהרצתה חוקית ולא גורמת להתרעה על חריגה.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " הגישה הראשונה נקראת LBYL, או Look Before You Leap (\"הסתכל לפני שאתה קופץ\").
                                                                                                                                                                                                                                                                              \n", + " גישה זו דוגלת בבדיקת השטח לפני ביצוע כל פעולה.
                                                                                                                                                                                                                                                                              \n", + " הפעולה תתבצע לבסוף, רק כשנהיה בטוחים שהרצתה חוקית ולא גורמת להתרעה על חריגה.
                                                                                                                                                                                                                                                                              \n", " קוד שכתב מי שדוגל בשיטה הזו מתאפיין בשימוש תדיר במילת המפתח if.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1142,9 +1139,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " הגישה השנייה נקראת EAFP, או Easier to Ask for Forgiveness than Permission (\"קל יותר לבקש סליחה מלבקש רשות\").
                                                                                                                                                                                                                                                                              \n", - " גישה זו דוגלת בביצוע פעולות מבלי לבדוק לפני כן את היתכנותן, ותפיסה של התרעה על חריגה אם היא מתרחשת.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " הגישה השנייה נקראת EAFP, או Easier to Ask for Forgiveness than Permission (\"קל יותר לבקש סליחה מלבקש רשות\").
                                                                                                                                                                                                                                                                              \n", + " גישה זו דוגלת בביצוע פעולות מבלי לבדוק לפני כן את היתכנותן, ותפיסה של התרעה על חריגה אם היא מתרחשת.
                                                                                                                                                                                                                                                                              \n", " קוד שכתב מי שדוגל בשיטה הזו מתאפיין בשימוש תדיר במבני try-except.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1153,8 +1150,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " נראה שתי דוגמאות להבדלים בגישות.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " נראה שתי דוגמאות להבדלים בגישות.
                                                                                                                                                                                                                                                                              \n", "

                                                                                                                                                                                                                                                                              " ] }, @@ -1162,14 +1159,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### דוגמה 1: מספר תו במחרוזת" + "#### דוגמה 1: מספר תו במחרוזת" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", " נכתוב פונקציה שמקבלת מחרוזת ומיקום ($n$), ומחזירה את התו במיקום ה־$n$־י במחרוזת.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1178,8 +1175,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " לפניכם הקוד בגישת LBYL, ובו אנחנו מנסים לבדוק בזהירות אם אכן מדובר במחרוזת, ואם יש בה לפחות $n$ תווים.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " לפניכם הקוד בגישת LBYL, ובו אנחנו מנסים לבדוק בזהירות אם אכן מדובר במחרוזת, ואם יש בה לפחות $n$ תווים.
                                                                                                                                                                                                                                                                              \n", " רק אחרי שאנחנו מוודאים שכל דרישות הקדם מתקיימות, אנחנו ניגשים לבצע את הפעולה.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1204,7 +1201,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", " והנה אותו קוד בגישת EAFP. הפעם פשוט ננסה לאחזר את התו, ונסמוך על מבנה ה־try-except שיתפוס עבורנו את החריגות:\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1227,14 +1224,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### דוגמה 2: כתיבה לקובץ" + "#### דוגמה 2: כתיבה לקובץ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", " נתכנת פונקציה שמקבלת נתיב לקובץ וטקסט, וכותבת את הטקסט לקובץ.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1243,8 +1240,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " הנה הקוד בגישת LBYL, ובו אנחנו מנסים לבדוק בזהירות אם הקובץ אכן בטוח לכתיבה.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " הנה הקוד בגישת LBYL, ובו אנחנו מנסים לבדוק בזהירות אם הקובץ אכן בטוח לכתיבה.
                                                                                                                                                                                                                                                                              \n", " רק אחרי שאנחנו מוודאים שיש לנו גישה אליו, שאכן מדובר בקובץ ושאפשר לכתוב אליו, אנחנו מבצעים את הכתיבה לקובץ.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1298,7 +1295,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", " והנה אותו קוד בגישת EAFP. הפעם פשוט ננסה לכתוב לקובץ, ונסמוך על מבנה ה־try-except שיתפוס עבורנו את החריגות:\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1331,7 +1328,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", " מתכנתי פייתון נוטים יותר לתכנות בגישת EAFP.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1340,16 +1337,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### אחריות אישית" + "### אחריות אישית" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                                              \n", + " טיפול בחריגה ימנע מהתוכנה לקרוס, ועשוי להחביא את העובדה שהייתה בעיה בזרימת התוכנית.
                                                                                                                                                                                                                                                                              \n", + " לרוב זה מצוין ובדיוק מה שאנחנו רוצים, אבל מתכנתים בתחילת דרכם עלולים להתפתות לנצל את העובדה הזו יתר על המידה.
                                                                                                                                                                                                                                                                              \n", " לפניכם דוגמה לקטע קוד שחניכים רבים משתמשים בו בתחילת דרכם:\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1371,9 +1368,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " הטריק הזה נקרא \"השתקת חריגות\".
                                                                                                                                                                                                                                                                              \n", - " ברוב המוחלט של המקרים זה לא מה שאנחנו רוצים.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " הטריק הזה נקרא \"השתקת חריגות\".
                                                                                                                                                                                                                                                                              \n", + " ברוב המוחלט של המקרים זה לא מה שאנחנו רוצים.
                                                                                                                                                                                                                                                                              \n", "

                                                                                                                                                                                                                                                                              " ] }, @@ -1381,9 +1378,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " השתקת החריגה עלולה לגרום לתקל בהמשך ריצת התוכנית, ויהיה לנו קשה מאוד לאתר אותו בעתיד.
                                                                                                                                                                                                                                                                              \n", - " פעמים רבות השתקה שכזו מעידה על כך שהחריגה נתפסה מוקדם מדי.
                                                                                                                                                                                                                                                                              \n", + "

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

                                                                                                                                                                                                                                                                              " ] @@ -1392,9 +1389,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " אם תגיעו למצב שבו אתם משתיקים חריגות, עצרו ושאלו את עצמכם אם זה הפתרון הטוב ביותר.
                                                                                                                                                                                                                                                                              \n", - " לרוב, עדיף יהיה לטפל בהתרעה על החריגה ולהביא את התוכנה למצב תקין,
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " אם תגיעו למצב שבו אתם משתיקים חריגות, עצרו ושאלו את עצמכם אם זה הפתרון הטוב ביותר.
                                                                                                                                                                                                                                                                              \n", + " לרוב, עדיף יהיה לטפל בהתרעה על החריגה ולהביא את התוכנה למצב תקין,
                                                                                                                                                                                                                                                                              \n", " או לפחות לשמור את פרטי ההתרעה לקובץ המתעד את ההתרעות על החריגות שהתרחשו בזמן ריצת התוכנה. \n", "

                                                                                                                                                                                                                                                                              " ] @@ -1403,23 +1400,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגילים" + "## תרגילים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### באנו להנמיך" + "### באנו להנמיך" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " לפניכם דוגמאות קוד מחרידות להפליא.
                                                                                                                                                                                                                                                                              \n", - " תקנו אותן כך שיתאימו לנימוסים והליכות שלמדנו בסוף המחברת.
                                                                                                                                                                                                                                                                              \n", + "

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

                                                                                                                                                                                                                                                                              " ] @@ -1511,17 +1508,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### באנו להרים" + "### באנו להרים" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " כתבו פונקציה המיועדת למתכנתים בחברת \"The Syndicate\".
                                                                                                                                                                                                                                                                              \n", - " הפונקציה תקבל כפרמטרים נתיב לקובץ (filepath) ומספר שורה (line_number).
                                                                                                                                                                                                                                                                              \n", - " הפונקציה תחזיר את מה שכתוב בקובץ שנתיבו הוא filepath בשורה שמספרה הוא line_number.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " כתבו פונקציה המיועדת למתכנתים בחברת \"The Syndicate\".
                                                                                                                                                                                                                                                                              \n", + " הפונקציה תקבל כפרמטרים נתיב לקובץ (filepath) ומספר שורה (line_number).
                                                                                                                                                                                                                                                                              \n", + " הפונקציה תחזיר את מה שכתוב בקובץ שנתיבו הוא filepath בשורה שמספרה הוא line_number.
                                                                                                                                                                                                                                                                              \n", " נהלו את השגיאות היטב. בכל פעם שישנה התרעה על חריגה, כתבו אותה לקובץ log.txt עם חותמת זמן וההודעה. \n", "

                                                                                                                                                                                                                                                                              " ] @@ -1530,15 +1527,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ילד שלי מוצלח" + "### ילד שלי מוצלח" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " צפנת פענח ניסה להעביר ליוליוס פואמה מעניינת שכתב.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " צפנת פענח ניסה להעביר ליוליוס פואמה מעניינת שכתב.
                                                                                                                                                                                                                                                                              \n", " בניסיוננו להתחקות אחר עקבותיו של צפנת פענח, ניסינו לשים את ידינו על המסר – אך גילינו שהוא מוצפן.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1547,7 +1544,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", " בתיקיית resources מצורפים שני קבצים: users.txt ו־passwords.txt.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1556,7 +1553,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", "כל שורה בקובץ users.txt נראית כך:\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1572,8 +1569,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " העמודה הראשונה מייצגת את מספר המשתמש, העמודה השנייה מייצגת את שמו ושאר העמודות מייצגות פרטים מזהים עליו.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " העמודה הראשונה מייצגת את מספר המשתמש, העמודה השנייה מייצגת את שמו ושאר העמודות מייצגות פרטים מזהים עליו.
                                                                                                                                                                                                                                                                              \n", " העמודות מופרדות בתו |.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1582,7 +1579,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", "כל שורה בקובץ בקובץ passwords.txt נראית כך:\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1598,8 +1595,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", - " שתי העמודות הראשונות הן מספרי המשתמש, כפי שהם מוגדרים ב־users.txt.
                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", + " שתי העמודות הראשונות הן מספרי המשתמש, כפי שהם מוגדרים ב־users.txt.
                                                                                                                                                                                                                                                                              \n", " העמודה השלישית היא סיסמת ההתקשרות ביניהם.\n", "

                                                                                                                                                                                                                                                                              " ] @@ -1608,16 +1605,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                              \n", + "

                                                                                                                                                                                                                                                                              \n", " כתבו את הפונקציות הבאות:\n", "

                                                                                                                                                                                                                                                                              \n", - "\n", - "
                                                                                                                                                                                                                                                                                \n", - "
                                                                                                                                                                                                                                                                              1. load_file – טוענת קובץ טבלאי שהשורה הראשונה שבו היא כותרת, והעמודות שבו מופרדת זו מזו בתו |.
                                                                                                                                                                                                                                                                                \n", + "
                                                                                                                                                                                                                                                                                  \n", + "
                                                                                                                                                                                                                                                                                1. load_file – טוענת קובץ טבלאי שהשורה הראשונה שבו היא כותרת, והעמודות שבו מופרדת זו מזו בתו |.
                                                                                                                                                                                                                                                                                  \n", " הפונקציה תחזיר רשימה של מילונים. כל מילון ברשימה ייצג שורה בקובץ. המפתחות של כל מילון יהיו שמות השדות מהכותרת.
                                                                                                                                                                                                                                                                                2. \n", - "
                                                                                                                                                                                                                                                                                3. get_user_id – שמקבלת את שם המשתמש, ומחזירה את מספר המשתמש שלו.
                                                                                                                                                                                                                                                                                4. \n", - "
                                                                                                                                                                                                                                                                                5. get_password – שמקבלת שני מספרים סידוריים של משתמשים ומחזירה את סיסמת ההתקשרות בינם.
                                                                                                                                                                                                                                                                                6. \n", - "
                                                                                                                                                                                                                                                                                7. decrypt_file – שמקבלת מפתח ונתיב לקובץ, ומפענחת אותו באמצעות הפונקציה decrypt.
                                                                                                                                                                                                                                                                                8. \n", + "
                                                                                                                                                                                                                                                                                9. get_user_id – שמקבלת את שם המשתמש, ומחזירה את מספר המשתמש שלו.
                                                                                                                                                                                                                                                                                10. \n", + "
                                                                                                                                                                                                                                                                                11. get_password – שמקבלת שני מספרים סידוריים של משתמשים ומחזירה את סיסמת ההתקשרות בינם.
                                                                                                                                                                                                                                                                                12. \n", + "
                                                                                                                                                                                                                                                                                13. decrypt_file – שמקבלת מפתח ונתיב לקובץ, ומפענחת אותו באמצעות הפונקציה decrypt.
                                                                                                                                                                                                                                                                                14. \n", "
                                                                                                                                                                                                                                                                                " ] }, @@ -1625,8 +1621,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " לצורך פתרון החידה, מצאו את סיסמת ההתקשרות של המשתמשים Zaphnath Paaneah ו־Gaius Iulius Caesar.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " לצורך פתרון החידה, מצאו את סיסמת ההתקשרות של המשתמשים Zaphnath Paaneah ו־Gaius Iulius Caesar.
                                                                                                                                                                                                                                                                                \n", " פענחו בעזרתה את המסר הסודי שבקובץ message.txt.\n", "

                                                                                                                                                                                                                                                                                " ] @@ -1635,7 +1631,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", " השתמשו בתרגיל כדי לתרגל את מה שלמדתם בנושא טיפול בחריגות.\n", "

                                                                                                                                                                                                                                                                                " ] diff --git a/week8/5_Summary.ipynb b/week8/5_Summary.ipynb index c67a98c..e6eee7e 100644 --- a/week8/5_Summary.ipynb +++ b/week8/5_Summary.ipynb @@ -4,31 +4,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\"לוגו" + "\"לוגו" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# תרגילים " + "# תרגילים " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## תרגיל מחשמל" + "## תרגיל מחשמל" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

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

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

                                                                                                                                                                                                                                                                                " ] @@ -37,10 +37,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " שער לוגי שוודאי יצא לכם לשמוע עליו הוא AND.
                                                                                                                                                                                                                                                                                \n", - " לשער הלוגי AND שתי כניסות. פלט השער יהיה True רק אם הקלט בשתי הכניסות הוא True, אחרת – יהיה הפלט False.
                                                                                                                                                                                                                                                                                \n", - " שער לוגי אחר שוודאי יצא לכם לשמוע עליו הוא NOT.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " שער לוגי שוודאי יצא לכם לשמוע עליו הוא AND.
                                                                                                                                                                                                                                                                                \n", + " לשער הלוגי AND שתי כניסות. פלט השער יהיה True רק אם הקלט בשתי הכניסות הוא True, אחרת – יהיה הפלט False.
                                                                                                                                                                                                                                                                                \n", + " שער לוגי אחר שוודאי יצא לכם לשמוע עליו הוא NOT.
                                                                                                                                                                                                                                                                                \n", " לשער הלוגי NOT כניסה אחת. פלט השער יהיה True אם הקלט הוא False, או False אם הקלט הוא True. \n", "

                                                                                                                                                                                                                                                                                " ] @@ -49,8 +49,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " שערים עם כניסה אחת נקראים שערים אוּנָרִיִּים (unary), ושערים עם שתי כניסות נקראים שערים בִּינָרִיִּים (binary).
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " שערים עם כניסה אחת נקראים שערים אוּנָרִיִּים (unary), ושערים עם שתי כניסות נקראים שערים בִּינָרִיִּים (binary).
                                                                                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                                                                                " ] }, @@ -58,8 +58,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " חיבור של כמה שערים לוגיים אחד לשני ייצור רכיב לוגי.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " חיבור של כמה שערים לוגיים אחד לשני ייצור רכיב לוגי.
                                                                                                                                                                                                                                                                                \n", " בדוגמה הבאה, הקלטים (מלמעלה למטה) True, False, False, True יניבו True.\n", "

                                                                                                                                                                                                                                                                                " ] @@ -69,8 +69,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                \n", - " \"דוגמה\n", - "
                                                                                                                                                                                                                                                                                \n", + "\"דוגמה\n", + "
                                                                                                                                                                                                                                                                                \n", " דוגמה לרכיב לוגי.\n", "
                                                                                                                                                                                                                                                                                \n", "
                                                                                                                                                                                                                                                                                " @@ -80,9 +80,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " צרו את המחלקות LogicGate, UnaryGate, BinaryGate ו־Connector.
                                                                                                                                                                                                                                                                                \n", - " כמו כן, צרו את המחלקות AndGate, NotGate, OrGate, NandGate ו־XorGate.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " צרו את המחלקות LogicGate, UnaryGate, BinaryGate ו־Connector.
                                                                                                                                                                                                                                                                                \n", + " כמו כן, צרו את המחלקות AndGate, NotGate, OrGate, NandGate ו־XorGate.
                                                                                                                                                                                                                                                                                \n", " במידת הצורך, קראו עוד על שערים לוגיים.\n", "

                                                                                                                                                                                                                                                                                " ] @@ -91,7 +91,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", "לאחר שכתבתם את הקוד, ודאו שהקוד הבא, שמדמה את המעגל מהאיור למעלה, מדפיס רק True:\n", "

                                                                                                                                                                                                                                                                                " ] @@ -118,7 +118,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", " בונוס: ודאו גם שהקוד הבא עובד ומדפיס True:\n", "

                                                                                                                                                                                                                                                                                " ] @@ -128,8 +128,8 @@ "metadata": {}, "source": [ "
                                                                                                                                                                                                                                                                                \n", - " \"החידוש\n", - "
                                                                                                                                                                                                                                                                                \n", + "\"החידוש\n", + "
                                                                                                                                                                                                                                                                                \n", " דוגמה לרכיב לוגי מורכב יותר.\n", "
                                                                                                                                                                                                                                                                                \n", "
                                                                                                                                                                                                                                                                                " @@ -161,26 +161,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ימצי" + "## ימצי" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " כתבו מחלקה המייצגת קובייה.
                                                                                                                                                                                                                                                                                \n", - " לכל קובייה יש צבע, מספר פאות וערכים שמופיעים על הפאות.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " כתבו מחלקה המייצגת קובייה.
                                                                                                                                                                                                                                                                                \n", + " לכל קובייה יש צבע, מספר פאות וערכים שמופיעים על הפאות.
                                                                                                                                                                                                                                                                                \n", " הטלה של קובייה תבחר באופן אקראי ערך מאחת מפאות הקובייה ותחזיר אותו.\n", "

                                                                                                                                                                                                                                                                                \n", - "\n", - "

                                                                                                                                                                                                                                                                                \n", - " על כל פאה של \"קובייה מספרית\" מופיע מספר שערכו בין 1 למספר הפאות בקובייה. כל מספר יופיע פעם אחת בלבד על הקובייה.
                                                                                                                                                                                                                                                                                \n", + "

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

                                                                                                                                                                                                                                                                                \n", - "\n", - "

                                                                                                                                                                                                                                                                                \n", - " שם הצבע של הקובייה חייב להיות מורכב מאותיות בלבד, סיכויי ההטלה חייבים להיות חיוביים ומספר הפאות חייב להיות תואם למספר הערכים המופיעים על הפאות.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " שם הצבע של הקובייה חייב להיות מורכב מאותיות בלבד, סיכויי ההטלה חייבים להיות חיוביים ומספר הפאות חייב להיות תואם למספר הערכים המופיעים על הפאות.
                                                                                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                                                                                \n" ] }, @@ -188,11 +186,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " במשחק \"Yamtzee\" יש שק גדול שמכיל המון \"קוביות אורך\", ושק גדול נוסף של קוביות לא מאוזנות בצבעים שונים שנקראות \"קוביות אות\".
                                                                                                                                                                                                                                                                                \n", - " 10% מהקוביות בכל שק הן אדומות, 25% הן ירוקות ו־65% הן כחולות.
                                                                                                                                                                                                                                                                                \n", - " קוביית אורך היא קובייה מספרית עם 10 פאות. אם הקובייה מורה 1, זורקים אותה שוב עד שיוצא מספר אחר.
                                                                                                                                                                                                                                                                                \n", - " קוביית אות היא קובייה לא מאוזנת עם 26 פאות, כאשר בכל פאה אות מהא\"ב האנגלי. סיכוי ההטלה עבור כל אחד מהערכים הוא לפי התדירות של האות.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " במשחק \"Yamtzee\" יש שק גדול שמכיל המון \"קוביות אורך\", ושק גדול נוסף של קוביות לא מאוזנות בצבעים שונים שנקראות \"קוביות אות\".
                                                                                                                                                                                                                                                                                \n", + " 10% מהקוביות בכל שק הן אדומות, 25% הן ירוקות ו־65% הן כחולות.
                                                                                                                                                                                                                                                                                \n", + " קוביית אורך היא קובייה מספרית עם 10 פאות. אם הקובייה מורה 1, זורקים אותה שוב עד שיוצא מספר אחר.
                                                                                                                                                                                                                                                                                \n", + " קוביית אות היא קובייה לא מאוזנת עם 26 פאות, כאשר בכל פאה אות מהא\"ב האנגלי. סיכוי ההטלה עבור כל אחד מהערכים הוא לפי התדירות של האות.
                                                                                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                                                                                " ] }, @@ -200,12 +198,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

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

                                                                                                                                                                                                                                                                                \n", + " בתחילת המשחק, המשתמש בוחר את מספר המשתתפים במשחק, ומה הניקוד שאליו צריך להגיע כדי שהמשחק יסתיים.
                                                                                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                                                                                \n", - "\n", - "

                                                                                                                                                                                                                                                                                \n", - " כל שחקן בתורו מטיל את קוביית האורך, ומטיל מספר קוביות אות הזהה למספר שהתקבל בקוביית האורך.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " כל שחקן בתורו מטיל את קוביית האורך, ומטיל מספר קוביות אות הזהה למספר שהתקבל בקוביית האורך.
                                                                                                                                                                                                                                                                                \n", " לדוגמה, אם קוביית האורך שהטלתי מורה 3, עליי להטיל 3 קוביות אות.\n", "

                                                                                                                                                                                                                                                                                " ] @@ -214,9 +211,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " המשתתף צריך להשתמש בקוביות האות שיצאו לו כדי ליצור מילה תקנית בשפה האנגלית, שאורכה 2 אותיות לפחות.
                                                                                                                                                                                                                                                                                \n", - " הוא יכול לסדר את הקוביות מחדש ולבחור שלא להשתמש בחלק מהן, אבל הוא לא יכול להשתמש באותה קוביית אות פעמיים.
                                                                                                                                                                                                                                                                                \n", + "

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

                                                                                                                                                                                                                                                                                " ] @@ -225,9 +222,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " אם המשתמש הצליח להרכיב מילה, עבור כל אות שבה השתמש הוא זוכה ב־$\\lfloor{\\frac{12}{\\lceil{f}\\rceil^{\\frac{3}{4}}}}\\rfloor$ נקודות, כאשר f זו תדירות האות בא\"ב האנגלי, מעוגלת כלפי מעלה.
                                                                                                                                                                                                                                                                                \n", - " במילים: 12 חלקי הביטוי הבא – הסיכוי שהאות תצא מעוגל כלפי מעלה, בחזקת 1.5 ואז להוציא מזה שורש. כל זה – מעוגל כלפי מטה.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " אם המשתמש הצליח להרכיב מילה, עבור כל אות שבה השתמש הוא זוכה ב־$\\lfloor{\\frac{12}{\\lceil{f}\\rceil^{\\frac{3}{4}}}}\\rfloor$ נקודות, כאשר f זו תדירות האות בא\"ב האנגלי, מעוגלת כלפי מעלה.
                                                                                                                                                                                                                                                                                \n", + " במילים: 12 חלקי הביטוי הבא – הסיכוי שהאות תצא מעוגל כלפי מעלה, בחזקת 1.5 ואז להוציא מזה שורש. כל זה – מעוגל כלפי מטה.
                                                                                                                                                                                                                                                                                \n", " לדוגמה, עבור המילה \"zone\" יזכה השחקן ב־17 נקודות לפי החישוב הזה:\n", "

                                                                                                                                                                                                                                                                                " ] @@ -248,10 +245,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " קוביית אורך אדומה מעניקה למשתתף שהטיל אותה עוד קוביית אות במתנה.
                                                                                                                                                                                                                                                                                \n", - " קוביית אות אדומה מאפשרת למשתתף להשתמש באות שמופיעה על הקובייה כמה פעמים שירצה.
                                                                                                                                                                                                                                                                                \n", - " קוביות ירוקות נותנות למשתתף את האפשרות לבחור אם להטילן מחדש.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " קוביית אורך אדומה מעניקה למשתתף שהטיל אותה עוד קוביית אות במתנה.
                                                                                                                                                                                                                                                                                \n", + " קוביית אות אדומה מאפשרת למשתתף להשתמש באות שמופיעה על הקובייה כמה פעמים שירצה.
                                                                                                                                                                                                                                                                                \n", + " קוביות ירוקות נותנות למשתתף את האפשרות לבחור אם להטילן מחדש.
                                                                                                                                                                                                                                                                                \n", "

                                                                                                                                                                                                                                                                                " ] }, @@ -259,8 +256,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

                                                                                                                                                                                                                                                                                \n", - " ממשו את Yamtzee.
                                                                                                                                                                                                                                                                                \n", + "

                                                                                                                                                                                                                                                                                \n", + " ממשו את Yamtzee.
                                                                                                                                                                                                                                                                                \n", " השתמשו ב־words.txt כדי לוודא שהמילים שהכניס המשתמש תקינות.\n", "

                                                                                                                                                                                                                                                                                " ]