|
146 | 146 | " yield 2\n", |
147 | 147 | " number = number // 2\n", |
148 | 148 | " \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", |
150 | 150 | " # Skip even numbers. Square root is good upper limit, check\n", |
151 | 151 | " # https://math.stackexchange.com/a/1039525 for more info.\n", |
152 | 152 | " divisor = 3\n", |
|
158 | 158 | " else:\n", |
159 | 159 | " divisor += 2\n", |
160 | 160 | " \n", |
161 | | - " # If n is a prime, just print n.\n", |
| 161 | + " # If `number` is a prime, just print `number`.\n", |
162 | 162 | " # 1 is not a prime, 2 already taken care of.\n", |
163 | 163 | " if number > 2:\n", |
164 | 164 | " yield number\n", |
|
358 | 358 | " <li>קוד צריך להסביר את עצמו. אם הוספת הערות לקוד, סימן שהקוד לא מובן דיו, וזה מצב שיפגע במפתחי הקוד בעתיד.</li>\n", |
359 | 359 | " <li>הערות שמסבירות קוד יוצרות שכפול – ושכפול בקוד <a href=\"https://en.wikipedia.org/wiki/Don%27t_repeat_yourself\">זה רע</a>.</li>\n", |
360 | 360 | " <li>\n", |
361 | | - " הערות מצריכות תחזוקה בפני עצמן – שינוי של קוד יצריך לרוב שינוי של ההערה שמתייחסת אליו..<br>\n", |
| 361 | + " הערות מצריכות תחזוקה בפני עצמן – שינוי של קוד יצריך לרוב שינוי של ההערה שמתייחסת אליו.<br>\n", |
362 | 362 | " רוב המפתחים שוכחים לתחזק את ההערות, ולעיתים נשארות הערות שלא תואמות את הקוד עצמו.<br>\n", |
363 | 363 | " הערה שאומרת דבר לא נכון על הקוד גרועה בהרבה מחוסר הערה.\n", |
364 | 364 | " </li>\n", |
|
534 | 534 | "source": [ |
535 | 535 | "<ul style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n", |
536 | 536 | " <li>תיעוד של שורה אחת מיועד עבור מקרים ברורים במיוחד, כמו הפונקציה <var>add</var> שכתבנו.</li>\n", |
537 | | - " <li>התיעוד יבוא בשורה אחת, צמוד למירכאות, ללא שורות ריקות לפניו או אחריו.</li>\n", |
| 537 | + " <li>התיעוד ייכתב בשורה אחת, צמוד למירכאות, ללא שורות ריקות לפניו או אחריו.</li>\n", |
538 | 538 | " <li>התיעוד ינוסח בצורת פקודה ולא כסיפור (\"החזר את התוצאה\" ולא \"הפונקציה מחזירה...\").<br>\n", |
539 | 539 | " כלל אצבע טוב הוא לשמור על הצורה \"עשה X, החזר Y\" <span div=\"ltr\">(באנגלית: Do X, Return Y)</span>.</li>\n", |
540 | 540 | " <li>תיעוד של שורה אחת לא יכלול את סוג הפרמטרים (a או b, במקרה שלנו). הוא יכול לכלול את הסוג של ערך ההחזרה.</li>\n", |
|
760 | 760 | " \"\"\"Return the extension of the filename.\n", |
761 | 761 | " \n", |
762 | 762 | " If there is no extension, return an empty string.\n", |
| 763 | + " This does not include the leading period.\n", |
| 764 | + " For example: 'txt'\n", |
763 | 765 | " \"\"\"\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", |
767 | 772 | "\n", |
768 | 773 | " def is_exists(self):\n", |
769 | 774 | " \"\"\"Check if the path exists, return boolean value.\"\"\"\n", |
|
788 | 793 | " Should be used to easily print the details about the path.\n", |
789 | 794 | " \"\"\"\n", |
790 | 795 | " 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", |
797 | 802 | " \"\"\".strip()\n", |
798 | 803 | "\n", |
799 | 804 | " def __str__(self):\n", |
|
981 | 986 | "metadata": {}, |
982 | 987 | "source": [ |
983 | 988 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n", |
984 | | - " מלל שנכתב ב־reStructuredText יראה כך עבור מי שכתב אותו:\n", |
| 989 | + " מלל שנכתב ב־reStructuredText ייראה כך עבור מי שכתב אותו:\n", |
985 | 990 | "</p>" |
986 | 991 | ] |
987 | 992 | }, |
|
995 | 1000 | "\n", |
996 | 1001 | "* הדגשה, מלל מוטה וקו תחתון.\n", |
997 | 1002 | "* רשימות.\n", |
998 | | - "* סימון של קוד, כמו `print(\"Hello\")`.\n", |
| 1003 | + "* סימון של קוד, כמו `print(\"Hello World\")`.\n", |
999 | 1004 | "</pre>" |
1000 | 1005 | ] |
1001 | 1006 | }, |
|
1168 | 1173 | "metadata": {}, |
1169 | 1174 | "outputs": [], |
1170 | 1175 | "source": [ |
1171 | | - "import string\n", |
1172 | | - "import random\n", |
1173 | | - "\n", |
1174 | | - "\n", |
1175 | 1176 | "class PostOffice:\n", |
1176 | 1177 | " def __init__(self, usernames):\n", |
1177 | 1178 | " self.message_id = 0\n", |
|
1266 | 1267 | "metadata": {}, |
1267 | 1268 | "outputs": [], |
1268 | 1269 | "source": [ |
1269 | | - "import string\n", |
1270 | | - "import random\n", |
1271 | | - "\n", |
1272 | | - "\n", |
1273 | 1270 | "class PostOffice:\n", |
1274 | 1271 | " \"\"\"A Post Office class. Allows users to message each other.\n", |
1275 | 1272 | " \n", |
|
1292 | 1289 | " sender (str): The message sender's username.\n", |
1293 | 1290 | " recipient (str): The message recipient's username.\n", |
1294 | 1291 | " 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", |
1297 | 1294 | "\n", |
1298 | 1295 | " Returns:\n", |
1299 | 1296 | " int: The message ID, auto incremented number.\n", |
|
1307 | 1304 | " inbox.\n", |
1308 | 1305 | "\n", |
1309 | 1306 | " >>> 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", |
1312 | 1309 | " 1\n", |
1313 | 1310 | " >>> message_id\n", |
1314 | 1311 | " 1\n", |
|
1391 | 1388 | "metadata": {}, |
1392 | 1389 | "outputs": [], |
1393 | 1390 | "source": [ |
1394 | | - "import string\n", |
1395 | | - "import random\n", |
1396 | | - "\n", |
1397 | | - "\n", |
1398 | 1391 | "class PostOffice:\n", |
1399 | 1392 | " \"\"\"A Post Office class. Allows users to message each other.\n", |
1400 | 1393 | " \n", |
|
1426 | 1419 | " The message recipient's username.\n", |
1427 | 1420 | " message_body : str\n", |
1428 | 1421 | " The body of the message.\n", |
1429 | | - " urgency : str, optional\n", |
| 1422 | + " urgent : bool, optional\n", |
1430 | 1423 | " The urgency of the message.\n", |
1431 | 1424 | " Urgent messages appear first.\n", |
1432 | 1425 | "\n", |
|
1447 | 1440 | " inbox.\n", |
1448 | 1441 | "\n", |
1449 | 1442 | " >>> 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", |
1452 | 1445 | " 1\n", |
1453 | 1446 | " >>> message_id\n", |
1454 | 1447 | " 1\n", |
|
1492 | 1485 | "metadata": {}, |
1493 | 1486 | "outputs": [], |
1494 | 1487 | "source": [ |
1495 | | - "import string\n", |
1496 | | - "import random\n", |
1497 | | - "\n", |
1498 | | - "\n", |
1499 | 1488 | "class PostOffice:\n", |
1500 | 1489 | " \"\"\"A Post Office class. Allows users to message each other.\n", |
1501 | 1490 | "\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", |
1504 | 1493 | "\n", |
1505 | 1494 | " :ivar list usernames: Users for which we should create PO Boxes.\n", |
1506 | 1495 | " \"\"\"\n", |
|
1699 | 1688 | "metadata": {}, |
1700 | 1689 | "source": [ |
1701 | 1690 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n", |
1702 | | - " אם בעקבות פעולת התקפה שחקן מסוים הגיע הגיע ל־0 חיים או פחות מכך, הוא נחשב למת ברובו.<br>\n", |
| 1691 | + " אם בעקבות פעולת התקפה שחקן מסוים הגיע ל־0 חיים או פחות מכך, הוא נחשב למת ברובו.<br>\n", |
1703 | 1692 | " דאגו שהשחקן יעבור החייאה וצרפו את מי שהתקיף אותו לרשימת ה־<var>nemeses</var> של השחקן.\n", |
1704 | 1693 | "</p>" |
1705 | 1694 | ] |
|
0 commit comments