Skip to content

Commit 01d2a98

Browse files
committed
Add notebook 2 about classes (week7)
1 parent c3a3d00 commit 01d2a98

File tree

3 files changed

+2258
-44
lines changed

3 files changed

+2258
-44
lines changed

week7/1_Classes.ipynb

+11-3
Original file line numberDiff line numberDiff line change
@@ -1743,6 +1743,12 @@
17431743
" פעולה שרצה עם יצירת מופע חדש מתוך מחלקה.<br>\n",
17441744
" לרוב משתמשים בפעולה זו כדי להזין במופע ערכים התחלתיים.\n",
17451745
" </dd>\n",
1746+
" <dt>תכנות מונחה עצמים (Object Oriented Programming)</dt>\n",
1747+
" <dd>\n",
1748+
" פרדיגמת תכנות שמשתמשת במחלקות בקוד ככלי העיקרי להפשטה של העולם האמיתי.<br>\n",
1749+
" בפרדיגמה זו נהוג ליצור מחלקות המייצגות תבניות של עצמים, ולאפיין את העצמים באמצעות תכונות ופעולות.<br>\n",
1750+
" בעזרת המחלקות אפשר ליצור מופעים, שהם ייצוג של פריט בודד (עצם, אובייקט) שנוצר לפי תבנית המחלקה.\n",
1751+
" </dd>\n",
17461752
"</dl>"
17471753
]
17481754
},
@@ -1835,9 +1841,11 @@
18351841
" return self.parts[-1]\n",
18361842
"\n",
18371843
" def get_extension(self):\n",
1838-
" full_name = self.get_basename()\n",
1839-
" filename, _, extension = full_name.rpartition(\".\")\n",
1840-
" return extension\n",
1844+
" name = self.get_basename()\n",
1845+
" i = name.rfind('.')\n",
1846+
" if 0 < i < len(name) - 1:\n",
1847+
" return name[i + 1:]\n",
1848+
" return ''\n",
18411849
"\n",
18421850
" def is_exists(self):\n",
18431851
" return os.path.exists(str(self))\n",

week7/2_Documentation.ipynb

+30-41
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@
146146
" yield 2\n",
147147
" number = number // 2\n",
148148
" \n",
149-
" # n must be odd at this point (we've just factored 2 out).\n",
149+
" # `number` must be odd at this point (we've just factored 2 out).\n",
150150
" # Skip even numbers. Square root is good upper limit, check\n",
151151
" # https://math.stackexchange.com/a/1039525 for more info.\n",
152152
" divisor = 3\n",
@@ -158,7 +158,7 @@
158158
" else:\n",
159159
" divisor += 2\n",
160160
" \n",
161-
" # If n is a prime, just print n.\n",
161+
" # If `number` is a prime, just print `number`.\n",
162162
" # 1 is not a prime, 2 already taken care of.\n",
163163
" if number > 2:\n",
164164
" yield number\n",
@@ -358,7 +358,7 @@
358358
" <li>קוד צריך להסביר את עצמו. אם הוספת הערות לקוד, סימן שהקוד לא מובן דיו, וזה מצב שיפגע במפתחי הקוד בעתיד.</li>\n",
359359
" <li>הערות שמסבירות קוד יוצרות שכפול – ושכפול בקוד <a href=\"https://en.wikipedia.org/wiki/Don%27t_repeat_yourself\">זה רע</a>.</li>\n",
360360
" <li>\n",
361-
" הערות מצריכות תחזוקה בפני עצמן – שינוי של קוד יצריך לרוב שינוי של ההערה שמתייחסת אליו..<br>\n",
361+
" הערות מצריכות תחזוקה בפני עצמן – שינוי של קוד יצריך לרוב שינוי של ההערה שמתייחסת אליו.<br>\n",
362362
" רוב המפתחים שוכחים לתחזק את ההערות, ולעיתים נשארות הערות שלא תואמות את הקוד עצמו.<br>\n",
363363
" הערה שאומרת דבר לא נכון על הקוד גרועה בהרבה מחוסר הערה.\n",
364364
" </li>\n",
@@ -534,7 +534,7 @@
534534
"source": [
535535
"<ul style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
536536
" <li>תיעוד של שורה אחת מיועד עבור מקרים ברורים במיוחד, כמו הפונקציה <var>add</var> שכתבנו.</li>\n",
537-
" <li>התיעוד יבוא בשורה אחת, צמוד למירכאות, ללא שורות ריקות לפניו או אחריו.</li>\n",
537+
" <li>התיעוד ייכתב בשורה אחת, צמוד למירכאות, ללא שורות ריקות לפניו או אחריו.</li>\n",
538538
" <li>התיעוד ינוסח בצורת פקודה ולא כסיפור (\"החזר את התוצאה\" ולא \"הפונקציה מחזירה...\").<br>\n",
539539
" כלל אצבע טוב הוא לשמור על הצורה \"עשה X, החזר Y\" <span div=\"ltr\">(באנגלית: Do X, Return Y)</span>.</li>\n",
540540
" <li>תיעוד של שורה אחת לא יכלול את סוג הפרמטרים (a או b, במקרה שלנו). הוא יכול לכלול את הסוג של ערך ההחזרה.</li>\n",
@@ -760,10 +760,15 @@
760760
" \"\"\"Return the extension of the filename.\n",
761761
" \n",
762762
" If there is no extension, return an empty string.\n",
763+
" This does not include the leading period.\n",
764+
" For example: 'txt'\n",
763765
" \"\"\"\n",
764-
" full_name = self.get_basename()\n",
765-
" filename, _, extension = full_name.rpartition(\".\")\n",
766-
" return extension\n",
766+
" name = self.get_basename()\n",
767+
" i = name.rfind('.')\n",
768+
" if 0 < i < len(name) - 1:\n",
769+
" return name[i + 1:]\n",
770+
" return ''\n",
771+
"\n",
767772
"\n",
768773
" def is_exists(self):\n",
769774
" \"\"\"Check if the path exists, return boolean value.\"\"\"\n",
@@ -788,12 +793,12 @@
788793
" Should be used to easily print the details about the path.\n",
789794
" \"\"\"\n",
790795
" return f\"\"\"\n",
791-
" Some info about \"{path}\":\n",
792-
" Drive letter: {path.get_drive_letter()}\n",
793-
" Dirname: {path.get_dirname()}\n",
794-
" Last part of path: {path.get_basename()}\n",
795-
" File extension: {path.get_extension()}\n",
796-
" Is exists?: {path.is_exists()}\n",
796+
" Some info about \"{self}\":\n",
797+
" Drive letter: {self.get_drive_letter()}\n",
798+
" Dirname: {self.get_dirname()}\n",
799+
" Last part of path: {self.get_basename()}\n",
800+
" File extension: {self.get_extension()}\n",
801+
" Is exists?: {self.is_exists()}\n",
797802
" \"\"\".strip()\n",
798803
"\n",
799804
" def __str__(self):\n",
@@ -981,7 +986,7 @@
981986
"metadata": {},
982987
"source": [
983988
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
984-
" מלל שנכתב ב־reStructuredText יראה כך עבור מי שכתב אותו:\n",
989+
" מלל שנכתב ב־reStructuredText ייראה כך עבור מי שכתב אותו:\n",
985990
"</p>"
986991
]
987992
},
@@ -995,7 +1000,7 @@
9951000
"\n",
9961001
"* הדגשה, מלל מוטה וקו תחתון.\n",
9971002
"* רשימות.\n",
998-
"* סימון של קוד, כמו `print(\"Hello\")`.\n",
1003+
"* סימון של קוד, כמו `print(\"Hello World\")`.\n",
9991004
"</pre>"
10001005
]
10011006
},
@@ -1168,10 +1173,6 @@
11681173
"metadata": {},
11691174
"outputs": [],
11701175
"source": [
1171-
"import string\n",
1172-
"import random\n",
1173-
"\n",
1174-
"\n",
11751176
"class PostOffice:\n",
11761177
" def __init__(self, usernames):\n",
11771178
" self.message_id = 0\n",
@@ -1266,10 +1267,6 @@
12661267
"metadata": {},
12671268
"outputs": [],
12681269
"source": [
1269-
"import string\n",
1270-
"import random\n",
1271-
"\n",
1272-
"\n",
12731270
"class PostOffice:\n",
12741271
" \"\"\"A Post Office class. Allows users to message each other.\n",
12751272
" \n",
@@ -1292,8 +1289,8 @@
12921289
" sender (str): The message sender's username.\n",
12931290
" recipient (str): The message recipient's username.\n",
12941291
" message_body (str): The body of the message.\n",
1295-
" urgency (str, optional): The urgency of the message.\n",
1296-
" Urgent messages appear first.\n",
1292+
" urgent (bool, optional): The urgency of the message.\n",
1293+
" Urgent messages appear first.\n",
12971294
"\n",
12981295
" Returns:\n",
12991296
" int: The message ID, auto incremented number.\n",
@@ -1307,8 +1304,8 @@
13071304
" inbox.\n",
13081305
"\n",
13091306
" >>> po_box = PostOffice(['a', 'b'])\n",
1310-
" >>> message_id = po_box.send('a', 'b', 'Hello!')\n",
1311-
" >>> len(pobox['b'])\n",
1307+
" >>> message_id = po_box.send_message('a', 'b', 'Hello!')\n",
1308+
" >>> len(po_box.boxes['b'])\n",
13121309
" 1\n",
13131310
" >>> message_id\n",
13141311
" 1\n",
@@ -1391,10 +1388,6 @@
13911388
"metadata": {},
13921389
"outputs": [],
13931390
"source": [
1394-
"import string\n",
1395-
"import random\n",
1396-
"\n",
1397-
"\n",
13981391
"class PostOffice:\n",
13991392
" \"\"\"A Post Office class. Allows users to message each other.\n",
14001393
" \n",
@@ -1426,7 +1419,7 @@
14261419
" The message recipient's username.\n",
14271420
" message_body : str\n",
14281421
" The body of the message.\n",
1429-
" urgency : str, optional\n",
1422+
" urgent : bool, optional\n",
14301423
" The urgency of the message.\n",
14311424
" Urgent messages appear first.\n",
14321425
"\n",
@@ -1447,8 +1440,8 @@
14471440
" inbox.\n",
14481441
"\n",
14491442
" >>> po_box = PostOffice(['a', 'b'])\n",
1450-
" >>> message_id = po_box.send('a', 'b', 'Hello!')\n",
1451-
" >>> len(pobox['b'])\n",
1443+
" >>> message_id = po_box.send_message('a', 'b', 'Hello!')\n",
1444+
" >>> len(po_box.boxes['b'])\n",
14521445
" 1\n",
14531446
" >>> message_id\n",
14541447
" 1\n",
@@ -1492,15 +1485,11 @@
14921485
"metadata": {},
14931486
"outputs": [],
14941487
"source": [
1495-
"import string\n",
1496-
"import random\n",
1497-
"\n",
1498-
"\n",
14991488
"class PostOffice:\n",
15001489
" \"\"\"A Post Office class. Allows users to message each other.\n",
15011490
"\n",
1502-
" :param str message_id: Incremental id of the last message sent.\n",
1503-
" :param str boxes: Users' inboxes.\n",
1491+
" :param int message_id: Incremental id of the last message sent.\n",
1492+
" :param dict boxes: Users' inboxes.\n",
15041493
"\n",
15051494
" :ivar list usernames: Users for which we should create PO Boxes.\n",
15061495
" \"\"\"\n",
@@ -1699,7 +1688,7 @@
16991688
"metadata": {},
17001689
"source": [
17011690
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
1702-
" אם בעקבות פעולת התקפה שחקן מסוים הגיע הגיע ל־0 חיים או פחות מכך, הוא נחשב למת ברובו.<br>\n",
1691+
" אם בעקבות פעולת התקפה שחקן מסוים הגיע ל־0 חיים או פחות מכך, הוא נחשב למת ברובו.<br>\n",
17031692
" דאגו שהשחקן יעבור החייאה וצרפו את מי שהתקיף אותו לרשימת ה־<var>nemeses</var> של השחקן.\n",
17041693
"</p>"
17051694
]

0 commit comments

Comments
 (0)