Skip to content

Commit d9e2a3c

Browse files
authored
Merge pull request #31 from PythonFreeCourse/week4-fixes
Week4 fixes
2 parents c227280 + b7df2c3 commit d9e2a3c

File tree

7 files changed

+385
-406
lines changed

7 files changed

+385
-406
lines changed

week4/1_For_Loops.ipynb

Lines changed: 72 additions & 61 deletions
Large diffs are not rendered by default.

week4/2_Dictionaries.ipynb

Lines changed: 105 additions & 83 deletions
Large diffs are not rendered by default.

week4/3_Dictionaries_part2.ipynb

Lines changed: 63 additions & 43 deletions
Large diffs are not rendered by default.

week4/4_Unpacking.ipynb

Lines changed: 54 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"metadata": {},
2727
"source": [
2828
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
29-
" הנה שורה שתראה לנו קצת שונה תחבירית מכל מה שהכרנו עד עכשיו:\n",
29+
" הנה שורה שתיראה לנו קצת שונה תחבירית מכל מה שהכרנו עד עכשיו:\n",
3030
"</p>"
3131
]
3232
},
@@ -45,7 +45,7 @@
4545
"source": [
4646
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
4747
" בצד ימין יש tuple שמכיל שני איברים, ואנחנו מבצעים השמה לשני משתנים ששמותיהם <var>country</var> ו־<var>population</var>.<br>\n",
48-
" אמנם לא הייתי נותן לפיסת הקוד הזו את תואר פיסת הקוד הנאה בעולם, אבל נראה שפייתון יודע להריץ אותה:<br>\n",
48+
" אומנם לא הייתי מעניק לפיסת הקוד הזו את תואר פיסת הקוד הנאה בעולם, אבל נראה שפייתון יודעת להריץ אותה:<br>\n",
4949
"</p>"
5050
]
5151
},
@@ -80,7 +80,7 @@
8080
"metadata": {},
8181
"source": [
8282
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
83-
" התחביר שמאפשר לפייתון לפרק מבנה ולבצע השמה של האיברים שבו לכמה שמות משתנים במקביל, קיבל את השם <dfn>unpacking</dfn>.\n",
83+
" התחביר שמאפשר לפייתון לפרק מבנה ולבצע השמה של האיברים שבו לכמה שמות משתנים בו־זמנית, קיבל את השם <dfn>unpacking</dfn>.\n",
8484
"</p>"
8585
]
8686
},
@@ -103,8 +103,8 @@
103103
"metadata": {},
104104
"source": [
105105
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
106-
" מתכנתים רבים מנצלים את הנוחות שב־unpacking, מה שגורם לו להופיע בקוד שתמצאו \"בעולם האמיתי\" פעמים רבות.<br>\n",
107-
" ניתן לבצע השמה לכמה משתנים שנרצה במקביל:\n",
106+
" מתכנתים רבים מנצלים את הנוחות שב־unpacking, ולכן תמצאו שהוא מופיע פעמים רבות בקוד \"בעולם האמיתי\".<br>\n",
107+
" אפשר לבצע השמה לכמה משתנים שנרצה בו־זמנית:\n",
108108
"</p>"
109109
]
110110
},
@@ -195,8 +195,8 @@
195195
"metadata": {},
196196
"source": [
197197
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
198-
" שימוש מקובל מאוד ל־unpacking אותו כבר הספקתם לראות בעבר, מתרחש בלולאות for.<br>\n",
199-
" ניצור רשימה של tuple־ים, בה כל tuple ייצג מדינה ואת כמות האנשים החיים בה:\n",
198+
" שימוש מקובל מאוד ל־unpacking, שאותו כבר הספקתם לראות בעבר, מתרחש בלולאות for.<br>\n",
199+
" ניצור רשימה של tuple־ים, שבה כל tuple ייצג מדינה ואת מספר האנשים החיים בה:\n",
200200
"</p>"
201201
]
202202
},
@@ -219,7 +219,7 @@
219219
"metadata": {},
220220
"source": [
221221
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
222-
"בעולם ללא unpacking, היינו צריכים לכתוב את הקוד הבא:\n",
222+
"בעולם ללא unpacking, היינו צריכים לכתוב כך:\n",
223223
"</p>"
224224
]
225225
},
@@ -259,7 +259,7 @@
259259
"metadata": {},
260260
"source": [
261261
"<table style=\"font-size: 1.5rem; border: 0px solid black; border-spacing: 0px;\">\n",
262-
" <caption style=\"direction: rtl; text-align: center;\">תצוגה על המשתנה <var>countries_with_population</var> ועל צורת הפירוק שלו</caption>\n",
262+
" <caption style=\"direction: rtl; text-align: center;\">תצוגה של המשתנה <var>countries_with_population</var> ושל צורת הפירוק שלו</caption>\n",
263263
" <tr>\n",
264264
" <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",
265265
" <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",
@@ -357,7 +357,7 @@
357357
"source": [
358358
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
359359
" באיור למעלה, התאים האדומים מפורקים לתוך המשתנה <var>country</var> והתאים הירוקים לתוך המשתנה <var>population</var>.<br>\n",
360-
" כל איטרציה של הלולאה תגרום לפירוק של צמד אחד מתוך הרשימה, והשמתם בהתאמה לתוך צמד המשתנים שבראש לולאת ה־for.\n",
360+
" כל איטרציה של הלולאה תגרום לפירוק של צמד אחד מתוך הרשימה, ולהשמתו בהתאמה לתוך צמד המשתנים שבראש לולאת ה־for.\n",
361361
"</p>"
362362
]
363363
},
@@ -373,7 +373,7 @@
373373
"metadata": {},
374374
"source": [
375375
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
376-
" הרעיון של unpacking הופך להיות שימושי מאוד כשאנחנו רוצים לעבור על המפתח והערך של מילון בו זמנית.<br>\n",
376+
" הרעיון של unpacking נעשה שימושי מאוד כשאנחנו רוצים לעבור בו־זמנית על המפתח ועל הערך של מילון.<br>\n",
377377
" כל שנצטרך לעשות כדי לקבל את המפתח לצד הערך בכל איטרציה, זה להשתמש בפעולה <code>items</code> על המילון:\n",
378378
"</p>"
379379
]
@@ -414,8 +414,8 @@
414414
"metadata": {},
415415
"source": [
416416
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
417-
" המקרה הזה לא שונה מהמקרים הקודמים שראינו, אבל חשבתי שיהיה נחמד לראות אותו במפורש.<br>\n",
418-
" הפעם נקח פונקציה שמחזירה tuple, ונשתמש ב־unpacking כדי לפרק את הערכים שהיא מחזירה למשתנים.<br>\n",
417+
" המקרה הזה לא שונה מהמקרים הקודמים שראינו, אבל חשבתי שיהיה נחמד לראות אותו מפורשות.<br>\n",
418+
" הפעם ניקח פונקציה שמחזירה tuple, ונשתמש ב־unpacking כדי לפרק את הערכים שהיא מחזירה למשתנים.<br>\n",
419419
"</p>"
420420
]
421421
},
@@ -503,8 +503,8 @@
503503
"source": [
504504
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
505505
" הגדרנו פונקציה שמדפיסה לנו יפה מיקומים לפי x ו־y שהיא מקבלת.<br>\n",
506-
" המימוש הגיוני, אבל אוי א בראך! השימוש מאוד לא נוח!<br>\n",
507-
" כל פעם אנחנו צריכים לפרק את ה־tuple שמכיל את המיקום ל־2 איברים, ולשלוח כל אחד מהם בנפרד.\n",
506+
" המימוש הגיוני, אבל אוי א בראך! השימוש לא מאוד נוח!<br>\n",
507+
" בכל פעם אנחנו צריכים לפרק את ה־tuple שמכיל את המיקום ל־2 איברים, ולשלוח כל אחד מהם בנפרד.\n",
508508
"</p>"
509509
]
510510
},
@@ -542,7 +542,7 @@
542542
"metadata": {},
543543
"source": [
544544
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
545-
" נראה מוזר? זו לא טעות, זהו באמת תחביר שמעולם לא ראינו עדיין!<br>\n",
545+
" נראה מוזר? זו לא טעות, זהו באמת תחביר שעדיין לא ראינו!<br>\n",
546546
" הכוכבית מפרקת את ה־tuple שהגדרנו, <var>treasure_location</var>, ושולחת לארגומנט <var>x</var> את הערך הראשון ולארגומנט <var>y</var> את הערך השני.\n",
547547
"</p>"
548548
]
@@ -640,7 +640,7 @@
640640
"metadata": {},
641641
"source": [
642642
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
643-
" אין מנוס, דנו אותנו לחיי עבדות של פירוק מילונים ושליחת ערכיהם לפונקציות! 😢\n",
643+
" אין מנוס, דנו אותנו לחיי עבדות של פירוק מילונים ולשליחת ערכיהם לפונקציות! 😢\n",
644644
"</p>"
645645
]
646646
},
@@ -671,7 +671,7 @@
671671
"metadata": {},
672672
"source": [
673673
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
674-
" במקרה המאוד מיוחד של מילון, ניתן לשלוח לפונקציה את הפרמטרים בעזרת unpacking עם שתי כוכביות.<br>\n",
674+
" במקרה המיוחד מאוד של מילון, אפשר לשלוח לפונקציה את הפרמטרים בעזרת unpacking עם שתי כוכביות.<br>\n",
675675
" המפתחות של המילון צריכים לציין את שם הפרמטרים של הפונקציה, והערכים במילון יהיו הערך שיועבר לאותם פרמטרים:\n",
676676
"</p>"
677677
]
@@ -704,7 +704,7 @@
704704
" מה קרה פה?<br>\n",
705705
" באיטרציה הראשונה <var>location</var> היה <code>{'x': 36.671111, 'y': 65.808056}</code>.<br>\n",
706706
" הפונקציה <code>print_treasure_locations</code> מחכה שיעבירו לה ערך לפרמטר <var>x</var> ולפרמטר <var>y</var>.<br>\n",
707-
" ה־unpacking שעשינו בעזרת שתי הכוכביות העביר את הערך של המפתח <code>'x'</code> במילון לפרמטר <var>x</var>, ואת הערך שהיה תחת המפתח <code>'y'</code> במילון לפרמטר <var>y</var>.\n",
707+
" ה־unpacking שעשינו בעזרת שתי הכוכביות העביר את הערך של המפתח <code>'x'</code> במילון לפרמטר <var>x</var>, ואת הערך של המפתח <code>'y'</code> במילון לפרמטר <var>y</var>.\n",
708708
"</p>"
709709
]
710710
},
@@ -742,7 +742,7 @@
742742
"metadata": {},
743743
"source": [
744744
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
745-
" אנחנו רגילים שפייתון די מתירני, אבל על unpacking תקין הוא לא מוותר.<br>\n",
745+
" אנחנו רגילים שפייתון די סובלנית, אבל על unpacking תקין היא לא מוותרת.<br>\n",
746746
" בדוגמה הבאה אנחנו מנסים לחלץ שני איברים לתוך שלושה משתנים, וזה לא נגמר טוב:\n",
747747
"</p>"
748748
]
@@ -761,7 +761,7 @@
761761
"metadata": {},
762762
"source": [
763763
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
764-
" נקבל שגיאה דומה אך שונה כשננסה לחלץ מספר לא נכון של ארגומנטים לתוך פונקציה:\n",
764+
" נקבל שגיאה דומה, אך שונה, כשננסה לחלץ מספר לא נכון של ארגומנטים לתוך פונקציה:\n",
765765
"</p>"
766766
]
767767
},
@@ -814,14 +814,22 @@
814814
"</p>"
815815
]
816816
},
817+
{
818+
"cell_type": "markdown",
819+
"metadata": {},
820+
"source": [
821+
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
822+
"הפונקציה בלי unpacking:\n",
823+
"</p>"
824+
]
825+
},
817826
{
818827
"cell_type": "code",
819828
"execution_count": null,
820829
"metadata": {},
821830
"outputs": [],
822831
"source": [
823832
"def fibonacci_no_unpacking(number):\n",
824-
" # הפונקציה בלי unpacking\n",
825833
" a = 1\n",
826834
" b = 1\n",
827835
" total = 0\n",
@@ -830,11 +838,25 @@
830838
" temp = a\n",
831839
" a = b\n",
832840
" b = temp + b\n",
833-
" return total\n",
834-
"\n",
835-
"\n",
841+
" return total"
842+
]
843+
},
844+
{
845+
"cell_type": "markdown",
846+
"metadata": {},
847+
"source": [
848+
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
849+
"הפונקציה עם unpacking:\n",
850+
"</p>"
851+
]
852+
},
853+
{
854+
"cell_type": "code",
855+
"execution_count": null,
856+
"metadata": {},
857+
"outputs": [],
858+
"source": [
836859
"def fibonacci_sum(number):\n",
837-
" # הפונקציה עם unpacking\n",
838860
" a, b = 1, 1\n",
839861
" total = 0\n",
840862
" while a <= number:\n",
@@ -864,10 +886,10 @@
864886
"metadata": {},
865887
"source": [
866888
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
867-
" לפניכם tuple המכיל מספר מילונים, כאשר כל מילון מייצג דמות חשודה ברצח.<br>\n",
889+
" לפניכם tuple המכיל כמה מילונים, כאשר כל מילון מייצג דמות חשודה ברצח.<br>\n",
868890
" בתוך כל אחד מהמילונים, תחת המפתח <em>evidences</em>, ישנו tuple שבו שני איברים.<br>\n",
869-
" האיבר הראשון הוא הנשק שנתפס על ידי המשטרה, והאיבר השני הוא המיקום המרכזי בו הדמות הייתה באותו יום.<br>\n",
870-
" בהנתן שהרצח בוצע על ידי אקדח דרינגר (derringer) ב־Petersen House, הדפיסו רק את שמות האנשים שעדיין חשודים ברצח.<br>\n",
891+
" האיבר הראשון הוא הנשק שתפסה המשטרה, והאיבר השני הוא המיקום המרכזי שבו הייתה הדמות באותו היום.<br>\n",
892+
" בהינתן שהרוצח השתמש באקדח דרינגר (derringer) ב־Petersen House, הדפיסו רק את שמות האנשים שעדיין חשודים ברצח.<br>\n",
871893
" השתדלו להשתמש ב־unpacking לפחות פעמיים.\n",
872894
"</p>"
873895
]
@@ -890,13 +912,13 @@
890912
"metadata": {},
891913
"source": [
892914
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
893-
" לנוחיותכם, הנה פונקציה שמקבלת כלי נשק ומיקום, ובודקת האם הראיות תואמות:\n",
915+
" לנוחיותכם, הנה פונקציה שמקבלת כלי נשק ומיקום, ובודקת אם הראיות תואמות:\n",
894916
"</p>"
895917
]
896918
},
897919
{
898920
"cell_type": "code",
899-
"execution_count": 189,
921+
"execution_count": null,
900922
"metadata": {},
901923
"outputs": [],
902924
"source": [
@@ -921,7 +943,7 @@
921943
"name": "python",
922944
"nbconvert_exporter": "python",
923945
"pygments_lexer": "ipython3",
924-
"version": "3.7.4"
946+
"version": "3.7.6"
925947
}
926948
},
927949
"nbformat": 4,

0 commit comments

Comments
 (0)