Skip to content

Week4 fixes #31

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Apr 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 72 additions & 61 deletions week4/1_For_Loops.ipynb

Large diffs are not rendered by default.

188 changes: 105 additions & 83 deletions week4/2_Dictionaries.ipynb

Large diffs are not rendered by default.

106 changes: 63 additions & 43 deletions week4/3_Dictionaries_part2.ipynb

Large diffs are not rendered by default.

86 changes: 54 additions & 32 deletions week4/4_Unpacking.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" הנה שורה שתראה לנו קצת שונה תחבירית מכל מה שהכרנו עד עכשיו:\n",
" הנה שורה שתיראה לנו קצת שונה תחבירית מכל מה שהכרנו עד עכשיו:\n",
"</p>"
]
},
Expand All @@ -45,7 +45,7 @@
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" בצד ימין יש tuple שמכיל שני איברים, ואנחנו מבצעים השמה לשני משתנים ששמותיהם <var>country</var> ו־<var>population</var>.<br>\n",
" אמנם לא הייתי נותן לפיסת הקוד הזו את תואר פיסת הקוד הנאה בעולם, אבל נראה שפייתון יודע להריץ אותה:<br>\n",
" אומנם לא הייתי מעניק לפיסת הקוד הזו את תואר פיסת הקוד הנאה בעולם, אבל נראה שפייתון יודעת להריץ אותה:<br>\n",
"</p>"
]
},
Expand Down Expand Up @@ -80,7 +80,7 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" התחביר שמאפשר לפייתון לפרק מבנה ולבצע השמה של האיברים שבו לכמה שמות משתנים במקביל, קיבל את השם <dfn>unpacking</dfn>.\n",
" התחביר שמאפשר לפייתון לפרק מבנה ולבצע השמה של האיברים שבו לכמה שמות משתנים בו־זמנית, קיבל את השם <dfn>unpacking</dfn>.\n",
"</p>"
]
},
Expand All @@ -103,8 +103,8 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" מתכנתים רבים מנצלים את הנוחות שב־unpacking, מה שגורם לו להופיע בקוד שתמצאו \"בעולם האמיתי\" פעמים רבות.<br>\n",
" ניתן לבצע השמה לכמה משתנים שנרצה במקביל:\n",
" מתכנתים רבים מנצלים את הנוחות שב־unpacking, ולכן תמצאו שהוא מופיע פעמים רבות בקוד \"בעולם האמיתי\".<br>\n",
" אפשר לבצע השמה לכמה משתנים שנרצה בו־זמנית:\n",
"</p>"
]
},
Expand Down Expand Up @@ -195,8 +195,8 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" שימוש מקובל מאוד ל־unpacking אותו כבר הספקתם לראות בעבר, מתרחש בלולאות for.<br>\n",
" ניצור רשימה של tuple־ים, בה כל tuple ייצג מדינה ואת כמות האנשים החיים בה:\n",
" שימוש מקובל מאוד ל־unpacking, שאותו כבר הספקתם לראות בעבר, מתרחש בלולאות for.<br>\n",
" ניצור רשימה של tuple־ים, שבה כל tuple ייצג מדינה ואת מספר האנשים החיים בה:\n",
"</p>"
]
},
Expand All @@ -219,7 +219,7 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
"בעולם ללא unpacking, היינו צריכים לכתוב את הקוד הבא:\n",
"בעולם ללא unpacking, היינו צריכים לכתוב כך:\n",
"</p>"
]
},
Expand Down Expand Up @@ -259,7 +259,7 @@
"metadata": {},
"source": [
"<table style=\"font-size: 1.5rem; border: 0px solid black; border-spacing: 0px;\">\n",
" <caption style=\"direction: rtl; text-align: center;\">תצוגה על המשתנה <var>countries_with_population</var> ועל צורת הפירוק שלו</caption>\n",
" <caption style=\"direction: rtl; text-align: center;\">תצוגה של המשתנה <var>countries_with_population</var> ושל צורת הפירוק שלו</caption>\n",
" <tr>\n",
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: left; border-bottom: 1px solid;\">0</td>\n",
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: left; border-left: 1px solid #555555; border-bottom: 1px solid;\">1</td>\n",
Expand Down Expand Up @@ -357,7 +357,7 @@
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" באיור למעלה, התאים האדומים מפורקים לתוך המשתנה <var>country</var> והתאים הירוקים לתוך המשתנה <var>population</var>.<br>\n",
" כל איטרציה של הלולאה תגרום לפירוק של צמד אחד מתוך הרשימה, והשמתם בהתאמה לתוך צמד המשתנים שבראש לולאת ה־for.\n",
" כל איטרציה של הלולאה תגרום לפירוק של צמד אחד מתוך הרשימה, ולהשמתו בהתאמה לתוך צמד המשתנים שבראש לולאת ה־for.\n",
"</p>"
]
},
Expand All @@ -373,7 +373,7 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" הרעיון של unpacking הופך להיות שימושי מאוד כשאנחנו רוצים לעבור על המפתח והערך של מילון בו זמנית.<br>\n",
" הרעיון של unpacking נעשה שימושי מאוד כשאנחנו רוצים לעבור בו־זמנית על המפתח ועל הערך של מילון.<br>\n",
" כל שנצטרך לעשות כדי לקבל את המפתח לצד הערך בכל איטרציה, זה להשתמש בפעולה <code>items</code> על המילון:\n",
"</p>"
]
Expand Down Expand Up @@ -414,8 +414,8 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" המקרה הזה לא שונה מהמקרים הקודמים שראינו, אבל חשבתי שיהיה נחמד לראות אותו במפורש.<br>\n",
" הפעם נקח פונקציה שמחזירה tuple, ונשתמש ב־unpacking כדי לפרק את הערכים שהיא מחזירה למשתנים.<br>\n",
" המקרה הזה לא שונה מהמקרים הקודמים שראינו, אבל חשבתי שיהיה נחמד לראות אותו מפורשות.<br>\n",
" הפעם ניקח פונקציה שמחזירה tuple, ונשתמש ב־unpacking כדי לפרק את הערכים שהיא מחזירה למשתנים.<br>\n",
"</p>"
]
},
Expand Down Expand Up @@ -503,8 +503,8 @@
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" הגדרנו פונקציה שמדפיסה לנו יפה מיקומים לפי x ו־y שהיא מקבלת.<br>\n",
" המימוש הגיוני, אבל אוי א בראך! השימוש מאוד לא נוח!<br>\n",
" כל פעם אנחנו צריכים לפרק את ה־tuple שמכיל את המיקום ל־2 איברים, ולשלוח כל אחד מהם בנפרד.\n",
" המימוש הגיוני, אבל אוי א בראך! השימוש לא מאוד נוח!<br>\n",
" בכל פעם אנחנו צריכים לפרק את ה־tuple שמכיל את המיקום ל־2 איברים, ולשלוח כל אחד מהם בנפרד.\n",
"</p>"
]
},
Expand Down Expand Up @@ -542,7 +542,7 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" נראה מוזר? זו לא טעות, זהו באמת תחביר שמעולם לא ראינו עדיין!<br>\n",
" נראה מוזר? זו לא טעות, זהו באמת תחביר שעדיין לא ראינו!<br>\n",
" הכוכבית מפרקת את ה־tuple שהגדרנו, <var>treasure_location</var>, ושולחת לארגומנט <var>x</var> את הערך הראשון ולארגומנט <var>y</var> את הערך השני.\n",
"</p>"
]
Expand Down Expand Up @@ -640,7 +640,7 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" אין מנוס, דנו אותנו לחיי עבדות של פירוק מילונים ושליחת ערכיהם לפונקציות! 😢\n",
" אין מנוס, דנו אותנו לחיי עבדות של פירוק מילונים ולשליחת ערכיהם לפונקציות! 😢\n",
"</p>"
]
},
Expand Down Expand Up @@ -671,7 +671,7 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" במקרה המאוד מיוחד של מילון, ניתן לשלוח לפונקציה את הפרמטרים בעזרת unpacking עם שתי כוכביות.<br>\n",
" במקרה המיוחד מאוד של מילון, אפשר לשלוח לפונקציה את הפרמטרים בעזרת unpacking עם שתי כוכביות.<br>\n",
" המפתחות של המילון צריכים לציין את שם הפרמטרים של הפונקציה, והערכים במילון יהיו הערך שיועבר לאותם פרמטרים:\n",
"</p>"
]
Expand Down Expand Up @@ -704,7 +704,7 @@
" מה קרה פה?<br>\n",
" באיטרציה הראשונה <var>location</var> היה <code>{'x': 36.671111, 'y': 65.808056}</code>.<br>\n",
" הפונקציה <code>print_treasure_locations</code> מחכה שיעבירו לה ערך לפרמטר <var>x</var> ולפרמטר <var>y</var>.<br>\n",
" ה־unpacking שעשינו בעזרת שתי הכוכביות העביר את הערך של המפתח <code>'x'</code> במילון לפרמטר <var>x</var>, ואת הערך שהיה תחת המפתח <code>'y'</code> במילון לפרמטר <var>y</var>.\n",
" ה־unpacking שעשינו בעזרת שתי הכוכביות העביר את הערך של המפתח <code>'x'</code> במילון לפרמטר <var>x</var>, ואת הערך של המפתח <code>'y'</code> במילון לפרמטר <var>y</var>.\n",
"</p>"
]
},
Expand Down Expand Up @@ -742,7 +742,7 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" אנחנו רגילים שפייתון די מתירני, אבל על unpacking תקין הוא לא מוותר.<br>\n",
" אנחנו רגילים שפייתון די סובלנית, אבל על unpacking תקין היא לא מוותרת.<br>\n",
" בדוגמה הבאה אנחנו מנסים לחלץ שני איברים לתוך שלושה משתנים, וזה לא נגמר טוב:\n",
"</p>"
]
Expand All @@ -761,7 +761,7 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" נקבל שגיאה דומה אך שונה כשננסה לחלץ מספר לא נכון של ארגומנטים לתוך פונקציה:\n",
" נקבל שגיאה דומה, אך שונה, כשננסה לחלץ מספר לא נכון של ארגומנטים לתוך פונקציה:\n",
"</p>"
]
},
Expand Down Expand Up @@ -814,14 +814,22 @@
"</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
"הפונקציה בלי unpacking:\n",
"</p>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def fibonacci_no_unpacking(number):\n",
" # הפונקציה בלי unpacking\n",
" a = 1\n",
" b = 1\n",
" total = 0\n",
Expand All @@ -830,11 +838,25 @@
" temp = a\n",
" a = b\n",
" b = temp + b\n",
" return total\n",
"\n",
"\n",
" return total"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
"הפונקציה עם unpacking:\n",
"</p>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def fibonacci_sum(number):\n",
" # הפונקציה עם unpacking\n",
" a, b = 1, 1\n",
" total = 0\n",
" while a <= number:\n",
Expand Down Expand Up @@ -864,10 +886,10 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" לפניכם tuple המכיל מספר מילונים, כאשר כל מילון מייצג דמות חשודה ברצח.<br>\n",
" לפניכם tuple המכיל כמה מילונים, כאשר כל מילון מייצג דמות חשודה ברצח.<br>\n",
" בתוך כל אחד מהמילונים, תחת המפתח <em>evidences</em>, ישנו tuple שבו שני איברים.<br>\n",
" האיבר הראשון הוא הנשק שנתפס על ידי המשטרה, והאיבר השני הוא המיקום המרכזי בו הדמות הייתה באותו יום.<br>\n",
" בהנתן שהרצח בוצע על ידי אקדח דרינגר (derringer) ב־Petersen House, הדפיסו רק את שמות האנשים שעדיין חשודים ברצח.<br>\n",
" האיבר הראשון הוא הנשק שתפסה המשטרה, והאיבר השני הוא המיקום המרכזי שבו הייתה הדמות באותו היום.<br>\n",
" בהינתן שהרוצח השתמש באקדח דרינגר (derringer) ב־Petersen House, הדפיסו רק את שמות האנשים שעדיין חשודים ברצח.<br>\n",
" השתדלו להשתמש ב־unpacking לפחות פעמיים.\n",
"</p>"
]
Expand All @@ -890,13 +912,13 @@
"metadata": {},
"source": [
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
" לנוחיותכם, הנה פונקציה שמקבלת כלי נשק ומיקום, ובודקת האם הראיות תואמות:\n",
" לנוחיותכם, הנה פונקציה שמקבלת כלי נשק ומיקום, ובודקת אם הראיות תואמות:\n",
"</p>"
]
},
{
"cell_type": "code",
"execution_count": 189,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -921,7 +943,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
"version": "3.7.6"
}
},
"nbformat": 4,
Expand Down
Loading