Skip to content

Commit 66748f5

Browse files
committed
Add for + unpacking, start dictionary
1 parent cf14294 commit 66748f5

File tree

5 files changed

+2116
-0
lines changed

5 files changed

+2116
-0
lines changed

week4/1_For_Loops.ipynb

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,6 +781,237 @@
781781
"</div>"
782782
]
783783
},
784+
{
785+
"cell_type": "markdown",
786+
"metadata": {},
787+
"source": [
788+
"### <span style=\"text-align: right; direction: rtl; float: right;\">מבנים מורכבים</span>"
789+
]
790+
},
791+
{
792+
"cell_type": "markdown",
793+
"metadata": {},
794+
"source": [
795+
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
796+
"הרשימה הבאה מכילה tupleים בגודל 2 איברים:\n",
797+
"</p>"
798+
]
799+
},
800+
{
801+
"cell_type": "code",
802+
"execution_count": 91,
803+
"metadata": {},
804+
"outputs": [],
805+
"source": [
806+
"words = [('star', 'rats'), ('wolf', 'flow'), ('racecar', 'racecar'), ('ekans', 'snake')]"
807+
]
808+
},
809+
{
810+
"cell_type": "markdown",
811+
"metadata": {},
812+
"source": [
813+
"<div class=\"align-center\" style=\"display: flex; text-align: right; direction: rtl; clear: both;\">\n",
814+
" <div style=\"display: flex; width: 10%; float: right; clear: both;\">\n",
815+
" <img src=\"images/exercise.svg\" style=\"height: 50px !important;\" alt=\"תרגול\"> \n",
816+
" </div>\n",
817+
" <div style=\"width: 70%\">\n",
818+
" <p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
819+
" כתבו לולאת <code>for</code> שתדפיס עבור כל זוג מחרוזות ברשימה: <samp dir=\"ltr\" style=\"direction: ltr\">Reverse \"X\" to get \"Y\"</samp>.<br>\n",
820+
" לדוגמה, עבור הזוג האחרון מתוך 4 הזוגות, היא תדפיס: <samp dir=\"ltr\" style=\"direction: ltr\">Reverse \"ekans\" to get \"snake\"</samp>.\n",
821+
" </p>\n",
822+
" </div>\n",
823+
" <div style=\"display: flex; width: 20%; border-right: 0.1rem solid #A5A5A5; padding: 1rem 2rem;\">\n",
824+
" <p style=\"text-align: center; direction: rtl; justify-content: center; align-items: center; clear: both;\">\n",
825+
" <strong>חשוב!</strong><br>\n",
826+
" פתרו לפני שתמשיכו!\n",
827+
" </p>\n",
828+
" </div>\n",
829+
"</div>"
830+
]
831+
},
832+
{
833+
"cell_type": "markdown",
834+
"metadata": {},
835+
"source": [
836+
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
837+
"על־מנת לפתור את התרגיל, כתבתם קוד שהשתמש במיקום של הערך הראשון (0) ושל הערך השני (1).<br>\n",
838+
"הנה דוגמה לצורה שבה אני פתרתי אותו:\n",
839+
"</p>"
840+
]
841+
},
842+
{
843+
"cell_type": "code",
844+
"execution_count": 105,
845+
"metadata": {},
846+
"outputs": [
847+
{
848+
"name": "stdout",
849+
"output_type": "stream",
850+
"text": [
851+
"Reverse \"star\" to get \"rats\".\n",
852+
"Reverse \"wolf\" to get \"flow\".\n",
853+
"Reverse \"racecar\" to get \"racecar\".\n",
854+
"Reverse \"ekans\" to get \"snake\".\n"
855+
]
856+
}
857+
],
858+
"source": [
859+
"for word_and_reversed_word in words:\n",
860+
" word = word_and_reversed_word[0]\n",
861+
" reversed_word = word_and_reversed_word[1]\n",
862+
" print(f'Reverse \"{word}\" to get \"{reversed_word}\".')"
863+
]
864+
},
865+
{
866+
"cell_type": "markdown",
867+
"metadata": {},
868+
"source": [
869+
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
870+
"נראה דרך נוספת לפתור את התרגיל, רק שהפעם נשתמש בטריק שנקרא <dfn>unpacking</dfn> (או \"<dfn>פירוק</dfn>\").<br>\n",
871+
"מכיוון שכל tuple ברשימת <var>words</var> מכיל 2 איברים, נוכל לתת להם שמות כבר בראש הלולאה ולחלץ אותם מה־tuple:\n",
872+
"</p>"
873+
]
874+
},
875+
{
876+
"cell_type": "code",
877+
"execution_count": 102,
878+
"metadata": {},
879+
"outputs": [
880+
{
881+
"name": "stdout",
882+
"output_type": "stream",
883+
"text": [
884+
"Reverse \"star\" to get \"rats\".\n",
885+
"Reverse \"wolf\" to get \"flow\".\n",
886+
"Reverse \"racecar\" to get \"racecar\".\n",
887+
"Reverse \"ekans\" to get \"snake\".\n"
888+
]
889+
}
890+
],
891+
"source": [
892+
"for word, reversed_word in words:\n",
893+
" print(f'Reverse \"{word}\" to get \"{reversed_word}\".')"
894+
]
895+
},
896+
{
897+
"cell_type": "markdown",
898+
"metadata": {},
899+
"source": [
900+
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
901+
"בכל חזרור של הלולאה שכתובה למעלה, ה־<code>for</code> יעבור על tuple בודד, בדיוק כמו שקרה עד עכשיו.<br>\n",
902+
"השינוי הוא שבמקום שה־tuple ישמר כמו שהוא במשתנה בודד שהוגדר בראש הלולאה, הערכים שבו \"יחולצו\" למשתנים בראש הלולאה.<br>\n",
903+
"זה יכול לעבוד מכיוון שבראש הלולאה כתבנו מספר משתנים שזהה למספר הערכים בכל tuple.\n",
904+
"</p>"
905+
]
906+
},
907+
{
908+
"cell_type": "markdown",
909+
"metadata": {},
910+
"source": [
911+
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
912+
"לפניכם תרשים המתאר את תוכן המשתנה <var>words</var>.<br>\n",
913+
"הטבלה הגדולה מייצגת את הרשימה <var>words</var>, וכל אחת מהטבלאות הקטנות מייצגת tuple בתוך הרשימה.<br>\n",
914+
"בכל חזרור של ה־<code>for</code> המופיע למעלה, המשתנה <var>word</var> יקבל ערך שמסומן באדום, והמשתנה <var>reversed_word</var> יקבל את הערך הירוק התואם. \n",
915+
"</p>"
916+
]
917+
},
918+
{
919+
"cell_type": "markdown",
920+
"metadata": {},
921+
"source": [
922+
"<table style=\"font-size: 1.5rem; border: 0px solid black; border-spacing: 0px;\">\n",
923+
" <caption style=\"direction: rtl; text-align: center;\">תצוגה על המשתנה <var>words</var> ועל צורת הפירוק שלו</caption>\n",
924+
" <tr>\n",
925+
" <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",
926+
" <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",
927+
" <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;\">2</td>\n",
928+
" <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;\">3</td>\n",
929+
" </tr>\n",
930+
" <tbody>\n",
931+
" <tr>\n",
932+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid;\">\n",
933+
"<table style=\"font-size: 1.5rem; border: 0px solid black; border-spacing: 0px;\">\n",
934+
" <tr>\n",
935+
" <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",
936+
" <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",
937+
" </tr>\n",
938+
" <tbody>\n",
939+
" <tr>\n",
940+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid; background-color: #FF8578;\">\"star\"</td>\n",
941+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid; background-color: #98FB98;\">\"rats\"</td>\n",
942+
" </tr>\n",
943+
" <tr style=\"background: #f5f5f5;\">\n",
944+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right;\">-2</td>\n",
945+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right; border-left: 1px solid #555555;\">-1</td>\n",
946+
" </tr>\n",
947+
" </tbody>\n",
948+
"</table>\n",
949+
" </td>\n",
950+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid;\">\n",
951+
"<table style=\"font-size: 1.5rem; border: 0px solid black; border-spacing: 0px;\">\n",
952+
" <tr>\n",
953+
" <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",
954+
" <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",
955+
" </tr>\n",
956+
" <tbody>\n",
957+
" <tr>\n",
958+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid; background-color: #FF8578;\">\"wolf\"</td>\n",
959+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid; background-color: #98FB98;\">\"flow\"</td>\n",
960+
" </tr>\n",
961+
" <tr style=\"background: #f5f5f5;\">\n",
962+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right;\">-2</td>\n",
963+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right; border-left: 1px solid #555555;\">-1</td>\n",
964+
" </tr>\n",
965+
" </tbody>\n",
966+
"</table> \n",
967+
" </td>\n",
968+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid;\">\n",
969+
"<table style=\"font-size: 1.5rem; border: 0px solid black; border-spacing: 0px;\">\n",
970+
" <tr>\n",
971+
" <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",
972+
" <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",
973+
" </tr>\n",
974+
" <tbody>\n",
975+
" <tr>\n",
976+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid; background-color: #FF8578;\">\"racecar\"</td>\n",
977+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid; background-color: #98FB98;\">\"racecar\"</td>\n",
978+
" </tr>\n",
979+
" <tr style=\"background: #f5f5f5;\">\n",
980+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right;\">-2</td>\n",
981+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right; border-left: 1px solid #555555;\">-1</td>\n",
982+
" </tr>\n",
983+
" </tbody>\n",
984+
"</table>\n",
985+
" </td>\n",
986+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid;\">\n",
987+
"<table style=\"font-size: 1.5rem; border: 0px solid black; border-spacing: 0px;\">\n",
988+
" <tr>\n",
989+
" <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",
990+
" <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",
991+
" </tr>\n",
992+
" <tbody>\n",
993+
" <tr>\n",
994+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid; background-color: #FF8578;\">\"ekans\"</td>\n",
995+
" <td style=\"padding-top: 8px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; vertical-align: bottom; border: 2px solid; background-color: #98FB98;\">\"snake\"</td>\n",
996+
" </tr>\n",
997+
" <tr style=\"background: #f5f5f5;\">\n",
998+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right;\">-2</td>\n",
999+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right; border-left: 1px solid #555555;\">-1</td>\n",
1000+
" </tr>\n",
1001+
" </tbody>\n",
1002+
"</table>\n",
1003+
" </td>\n",
1004+
" </tr>\n",
1005+
" <tr style=\"background: #f5f5f5;\">\n",
1006+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right;\">-4</td>\n",
1007+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right; border-left: 1px solid #555555;\">-3</td>\n",
1008+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right; border-left: 1px solid #555555;\">-2</td>\n",
1009+
" <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: right; border-left: 1px solid #555555;\">-1</td>\n",
1010+
" </tr>\n",
1011+
" </tbody>\n",
1012+
"</table>"
1013+
]
1014+
},
7841015
{
7851016
"cell_type": "markdown",
7861017
"metadata": {},

0 commit comments

Comments
 (0)