הסמכה לתעודה במקרים חריגים

צוהריים טובים וברכות לכלל באי הקורס ומסיימי השבוע השלישי.

לאחר התדיינות מעמיקה שהתרחשה בסגל הקורס, הוחלט לפנים משורת הדין להתחשב במקרי אי־הגשה שחרגו אך במעט מהמותר לצורך קבלת תעודה.
ההקלות הן רק עבור פספוס הגשה של תרגילים בודדים, ונועדו להתמודד עם מצב חריג שבו חניך העלה בטעות, באופן חד פעמי, תרגיל לא תקין או לא מלא.

להלן נוסח ההקלות:

  1. כל משתתף רשאי, במהלך הקורס כולו, לפספס הגשה של עד 3 תרגילים במערכת התרגילים. תרגילים שהוגשו אך אינם ניתנים להרצה בפייתון, תרגילים שמקפיצים שגיאה בעת הרצתם, תרגילים ריקים, תרגילים שהוגש רק חלק מהקוד שלהם או חלק מהקוד שלהם כלל לא עובד, ותרגילים שלא עובדים כלל נחשבים במניין זה.
  2. כדי לשמור על כשירות פדגוגית של המשתתף, הוא מתבקש לפתור ולהגיש “תרגיל השלמה” עבור כל הגשה שהפסיד. תרגיל השלמה הוא תרגיל נוסף, ברמת קושי גבוהה, שיפורסם לאחר סגירת האפשרות להגיש תרגילים באותו שבוע.
  3. על תרגיל ההשלמה להיות מוגש תוך 72 שעות מרגע סגירת הגשת התרגילים באותו שבוע.
  4. תרגילי ההשלמה יפורסמו מספר שעות אחרי סגירת ההגשה. למרות זאת, 72 השעות יחלו מרגע סגירת ההגשה ולא מרגע פרסום תרגילי ההשלמה.
  5. לא תהיה התחשבות מכל סוג בזמני ההגשה של תרגיל ההשלמה. אם תרגיל ההשלמה המאתגר לא יוגש תוך 72 שעות מרגע סיום ההגשה – לא תינתן תעודה בסיום הקורס.

בנוסף:

  1. מכיוון שלא יעלה בידינו לבדוק את נסיבות כל אחד מהמקרים ואין לנו יכולת לשפוט את כל אחד מהמקרים בנפרד, הכללים הללו מוחלים על כל משתתפי הקורס ללא חריגות. מלבד הקלה זו לא תינתנה הקלות נוספות במדיניות האיחורים, לכן השתמשו בהקלה זו בתבונה.
  2. המלצת הסגל היא לא להשתמש באיחורים כלל, כדי שבמקרה ויתרחש מקרה קיצון משמעותי שלא יאפשר לכם להגיש בזמן, תוכלו להשתמש במנגנון החסד שהוצע כאן.
  3. זה נוסח ההקלות שהתקבלו. לא יתבצעו הרחבות למקרים נוספים בשום מקרה ואופן ולא יינתנו הקלות נוספות.

חשוב לי להדגיש שאין בהקלות האלו כדי להכשיר איחורים או אי־הגשות, ותרגילי ההשלמה תמיד יהיו קשים יותר מהתרגילים שפורסמו בפועל.
התעודה עבורי היא חותמת אישית שלי על העמידה במסלול הקורסי שעיצבתי, ואני לא מתפשר בשום צורה ובשום שלב על הסטנדרט של יוצאי הקורס הזה.

בהצלחה בהמשך הקורס.

24 לייקים

תרגילי השלמה לשבוע 3 – באופן חד פעמי תקפים גם עבור פספוסי תרגילים משבוע 2 ומשבוע 1.

המפספסים תרגיל 1 בלבד – מתבקשים לפתור רק את תרגיל מספר 1.
המפספסים שני תרגילים – מתבקשים לפתור את תרגיל 1 ואת תרגיל 2.
המפספסים שלושה תרגילים – מתבקשים לפתור את כל תרגילי ההשלמה.

כל התרגילים לקוחים או נעזרים בתרגילים המופיעים באשכול התרגול הנוסף:

  1. תרגיל “איחוד CSV” מאשכול התרגול הנוסף.
  2. כתבו פונקציה המקבלת נתיב לקובץ טקסטואלי, ומחזירה את 5 המילים הנפוצות ביותר בקובץ. לצורך ההדגמה, השתמשו בקובץ הקלט המופיע בתרגיל של אליס בארץ הפלאות.
  3. תרגיל “פוקר” מאשכול התרגול הנוסף.

סגירת תרגילי ההשלמה תתבצע ביום ה־29/04 בשעה 21:00, ולא דקה אחרי.

5 לייקים

תרגילי השלמה לשבוע 4

  1. המפספסים תרגיל 1 בלבד – מתבקשים לפתור רק את תרגיל מספר 1.
  2. המפספסים שני תרגילים – מתבקשים לפתור את תרגיל 1 ואת תרגיל 2.

תרגיל 1

עץ פילוגנטי או עץ אבולוציוני הוא גרף בצורת עץ המייצג את היחסים ההיסטוריים-אבולוציונים המשוערים בין מינים ביולוגים שונים על סמך דמיון גנטי או מורפולוגי ביניהם. (ויקיפדיה)

נסמן את האב המשותף הקדמון ביותר בתור המילה LUCA, ונביט על העץ הפילוגנטי הבא (הפרחים והתודות לוויקיפדיה):

בתרשים זה, נוכל להגיד ש־Chlorobacteria יורשת ישירות מ־LUCA, וכך גם Gracilicutes ו־Eurybacteria.
לעומת זאת, Endobacteria יורשת ישירות מ־Eurybacteria אך יורשת בעקיפין מ־LUCA.
אפשר להגיד על Neomura שהיא יורשת ישירות מ־Actinobacteria, ויורשת בעקיפין מ־Eurybacteria ומ־LUCA.

נתאר את העץ בעזרת הקובץ הבא:

Chlorobacteria -> LUCA
Hadobacteria -> LUCA
Cynaobacteria -> LUCA
Gracilicutes -> LUCA
Eurybacteria -> LUCA
Endobacteria -> Eurybacteria
Actinobacteria -> Eurybacteria
Neomura -> Actinobacteria
Eukarya -> Neomura
Archaea -> Neomura
  1. קבלו נתיב לקובץ בתצורה שהודגמה מעלה, שמתאר עץ פילוגנטי. הקובץ יכול להכיל עד 1000 שורות. מצאו כמה ירושות עקיפות יש בסך הכל בקובץ. לדוגמה, בעץ שהוצג מעלה יש 10 ירושות עקיפות.
  2. המרחק בין Eukarya לבין Endobacteria הוא 3 פסיעות. המרחק בין Eukarya ו־Chlorobacteria הוא 4 פסיעות. המרחק בין Gracilicutes לבין Hadobacteria הוא פסיעה אחת (בייצוג עצי תקין, בניגוד לתמונה, שניהם יוצאים מ־LUCA). כתבו פונקציה שמקבלת שמות של 2 מינים ביולוגיים ומוצאת את המרחק ביניהם.

שימו לב: השאלה תוקנה ב־2020-05-08. מי שפתר בדרך הישנה – גם תשובתו תתקבל.

תרגיל 2

(תודה לנגה אוסין)

אתם אחראיים על השידור החי של “ג’וק, סמור, בֹּנֶה”, אשר יוקרן לקהל עצום על מספר ענקי של מסכי טלוויזיה שהוצמדו אחד לשני מבעוד מועד. על מנת לעשות קצת סדר, חילקתם את המסכים בין מפעילים שונים, כשלכל אחד תחום אחריות משלו. בתחילת ההקרנה, כל המפעילים ידליקו את המסכים שתחת אחריותם בו־זמנית.

אך אבוי! רגע לפני השידור, שמתם לב שחלק מהאזורים חופפים, כלומר מסכים מסוימים יקבלו פקודה משני מפעילים בו זמנית. אם דבר כזה יקרה, המסך ישבוק חיים וכל השידור עלול להיהרס. על מנת להבין את היקף הבעיה, ממשו פונקציה אשר מחזירה את מספר מסכי הטלוויזיה אשר צפויים לא לעבוד. הכל תלוי בכם!

הרישום של איזה מפעיל אחראי על איזה אזור נראה כך:

1,3: 4x4
3,1: 4x4
5,5: 2x2

בצורת כתיבה זו, נסתכל על צד שמאל (1,3 בשורה הראשונה) בתור נקודת ההתחלה. ניתן לדמיין אותה בתור ראשית הצירים, ואת מסכי הטלוויזיה בתור הרביע הרביעי. בדוגמה מעלינו, המלבן יתחיל פסיעה אחת ימינה מנקודת ההתחלה, ושלוש פסיעות למטה .
צד ימין (4x4 בשורה הראשונה) יציג את רוחבו וגובהו של המלבן, כאשר הרוחב משמאל ל־x והגובה מימינו.
ראוי לציין כי כל האזורים המוקצים הנם מלבניים, וכולם מורכבים ממסכי טלוויזיה בגודל 1x1.

האם שמתם לב להתנגשות בין האזורים בדוגמה למעלה?
ננסה לצייר כל תחום, כאשר המסכים מסומנים בהתאמה למספר השורה שבדוגמה:

........
...2222.
...2222.
.11XX22.
.11XX22.
.111133.
.111133.
........

כמו שוודאי ראיתם, ישנו ריבוע במרכז אשר מורכב מאיקסים. במקרה זה, הוא מייצג את התנגשות המלבנים המוגדרים בשורה הראשונה ובשנייה.

הרישום שתעשו בפועל, כמובן, יהיה הרבה יותר גדול מזה.

שימו לב! מספר מסכי הטלוויזיה אינו ידוע, ואין להגדיר גודל קבוע למען פתרון התרגיל.

בחנו את עצמכם: מספר המסכים אשר יקבלו יותר מפקודה אחת הוא 701 (תיקנו, תודה).

9,222: 19x20
62,876: 28x29
8,156: 17x18
73,337: 24x24
13,834: 20x23
75,523: 20x13
7,7: 11x27
2,512: 11x17
07,525: 27x20
47,742: 21x25
154,740: 28x25
808,793: 28x24
249,936: 13x11
93,400: 8x9
295,894: 17x22
535,885: 8x5
878,268: 13x11
152,685: 28x24
152,639: 22x26
905,560: 23x27
962,104: 19x12
125,145: 19x22
260,488: 13x21
179,815: 12x24
661,595: 4x6
584,97: 10x15
869,842: 11x19
491,825: 19x25
639,935: 10x28
583,26: 11x13
956,264: 22x17
168,706: 22x21
10,81: 29x18
751,214: 16x21
830,200: 17x20
587,580: 18x20
749,587: 10x13
546,376: 28x25
222,945: 11x28
43,937: 14x27
53,108: 25x21
669,894: 28x28
598,390: 23x25
440,136: 24x28
657,50: 16x13
134,155: 15x28
873,580: 28x16
519,287: 23x24
283,691: 12x20
78,660: 11x23
220,650: 24x21
722,671: 11x11
130,554: 12x26
248,423: 28x20
545,884: 10x3
926,657: 21x13
207,925: 22x27
813,292: 17x24
951,143: 23x25
582,397: 18x19
947,119: 14x24
874,701: 12x10
57,682: 10x18
450,510: 11x28
820,700: 27x17
231,114: 13x15
434,283: 22x18
489,743: 23x28
608,782: 10x24
297,896: 23x29
240,664: 13x29
96,953: 26x28
520,21: 21x25
878,207: 16x21
31,408: 19x26
846,419: 6x19
754,602: 17x29
95,621: 27x27
50,391: 10x24
915,362: 27x22
743,524: 25x23
41,58: 11x26
242,800: 27x21
525,652: 15x26
507,865: 18x26
855,272: 29x28
343,718: 12x13
405,628: 18x28
479,608: 20x13
752,934: 26x24
25,99: 14x12
909,952: 25x26
425,523: 27x12
345,586: 29x27
642,240: 16x10
369,567: 26x24
483,770: 23x10
745,683: 27x19
601,817: 16x21
793,153: 13x23

סגירת תרגילי ההשלמה תתבצע בראשון בשעה 18:00, ולא דקה אחרי.

תרגילי השלמה לשבוע 5

  1. המפספסים תרגיל 1 בלבד – מתבקשים לפתור רק את תרגיל מספר 1.
  2. המפספסים שני תרגילים – מתבקשים לפתור את תרגיל 1 ואת תרגיל 2.

תרגיל 1 – מרטינגל

הקדמה

בגלגל סטנדרטי של רולטה יש 37 מספרים – 0 עד 36.
לכל מספר יש צבע – אדום או שחור, חוץ מלמספר 0 שמוגדר כחסר צבע.

במסגרת המשחק המהמר יכול לשים סכום הימור לבחירתו על מספר או על צבע.
לאחר שהמהמר בחר באיזה על מה הוא מהמר ובאיזה סכום, מגלגלים כדור לתוך גלגל מסתובב.
כשהגלגל המסתובב עוצר, הכדור “נופל” על אחד המספרים.

המהמר מפסיד את כספו אם המספר והצבע שעליהם נחת הכדור אינם תואמים את ההימורים שלו.
אם הצבע של המספר שיצא זהה לצבע שהוא בחר – המהמר מכפיל את סכום הכסף שעליו הימר.
אם המספר שיצא זהה למספר שהוא בחר – המהמר מרוויח את הסכום שעליו הימר כפול 36.

לדוגמה, אם המהמר שם 50 ש"ח על הצבע “אדום”, והמספר שיצא בגלגל הרולטה הוא 27, שצבעו אדום – המהמר יזכה ב־100 ש"ח.
לעומת זאת, אם המהמר שם 50 ש"ח על הצבע “אדום”, והמספר שיצא בגלגל הרולטה הוא 28, שצבעו שחור – המהמר יפסיד את ה־50 ש"ח שעליהם הימר.

השיטה

לפי שיטת מרטינגל, שנועדה “להכות את הקזינו”, מהמר מתחיל בלשים דולר בודד על אדום.
אם הפסיד, הוא יכפיל את סכום ההימור עד סיבוב שבו הוא ינצח.
כאשר המהמר מנצח הוא לוקח את הכסף מהזכייה, ומהמר שוב על דולר בודד.
בשיטה זו, כביכול, המהמר ירוויח בכל סדרת סיבובים שכזו דולר בודד.

לדוגמה, מהמר שם דולר בודד על הצבע אדום:

  1. הוא מפסיד, ובסיבוב הבא הוא מעלה את סכום ההימור שלו ל־2 דולרים.
  2. אותו דבר קורה ב־4 דולרים וב־8 דולרים, אבל בסיבוב שבו הוא מהמר על 16 דולרים הרולטה מגרילה מספר אדום והוא זוכה.
  3. ניתן לראות שסכום הוצאותיו ( 1+2+4+8+16=31 ) קטן מסכום הזכייה שלו (16\cdot2=32) בדולר בודד.
  4. כעת המהמר יהמר שוב על דולר בודד, ויכפיל את סכום ההימור עד שינצח שוב.

השאלה

כתבו תוכנה שמעריכה את סיכויי ההצלחה של מהמר מרטינגל.
על התוכנית לממש סימולציה של משחק רולטה:
המהמר נכנס לקזינו עם סכום מוגדר מראש (נניח, 500 דולר), ומשתמש בשיטת מרטינגל כדי להשקיע את כספו ולהרוויח כסף.
נסו לשחק 10,000 סיבובים בשיטה זו – כמה כסף נשאר לכם לאחר שסיימתם לשחק?

כדי לממש את הרולטה בצורה אמיתית כמה שאפשר, תנו לכל מספר צבע לפי השיטה הבאה:

  • בטווח המספרים 1–10 ובטווח המספרים 19–28 המספרים הזוגיים צבועים בשחור והמספרים האי־זוגיים צבועים באדום.
  • בטווחים 11–18 ו־29–36, המספרים הזוגיים הם אדומים בזמן שהאי־זוגיים שחורים.
  • המספר 0 צבוע בירוק.

השתמשו בספרייה החיצונית matplotlib כדי להציג למשתמש גרף של זכיותיו כפונקציה של זמן לפי שיטת מרטינגל.
ציר ה־x של הגרף ייצג את כמות הסיבובים שעברו מאז כניסתו של המהמר לקזינו.
ציר ה־y של הגרף ייצג את כמות הכסף שנשאר למהמר המרטינגל.

הבהרות לתרגיל

  1. דאגו שהמהמר לא יוכל להיכנס למינוס (אי אפשר להמר על כסף שאין לך). אם המהמר נכנס למינוס, סיימו את הסימולציה.
  2. ברוב הרולטות יש סכום הימור מרבי. שמרו אותו כקבוע (500$, לדוגמה), ודאגו שלא יהיה אפשר להמר מעליו.

תרגיל 2 – מ.ס.ס (תודה לנגה אוסין)

נניח ושכחתם את הסיסמה שלכם לאתר שלא מציע שירות שחזור סיסמה.

למזלכם, שמתם לב לחולשה רצינית במערכת ההזדהות של האתר. המערכת הפגומה עובדת כך:

  1. ראשית, היא משווה את אורכי הסיסמאות. אם הסיסמה שהוזנה אינה באורך הנכון – המערכת מחזירה False.
  2. המערכת משווה את הסיסמה האמיתית לסיסמה המוזנת, תו אחר תו, ומחזירה False ברגע שאחד התווים שהוזנו לא תואם את התו השמור במערכת. עיבוד כל תו לוקח כ־2 עשיריות השנייה.
  3. אין הגבלה למספר הפעמים שניתן להזין סיסמה שגוייה. כך, תוכלו לחשב מהי הספרה הבאה בסיסמתכם לפי כמה זמן לוקח לפונקציה לרוץ.
  4. סיסמה באתר יכולה להיות מורכבת מאותיות גדולות, קטנות וספרות.

הזנתם את הדואר האלקטרוני שלכם, וכעת המערכת זוכרת את הססמה שלכם. היא שמורה כקבוע בשם PASSWORD.

העתיקו את הקוד הבא למחברתכם:

import base64
import time


PASSWORD = b'UHl0aG9uUnVseg=='


def check_password(user_attempt):
    real_password = base64.b64decode(PASSWORD).decode('utf-8')
    if len(user_attempt) != len(real_password):
        return False
    for x, y in zip(real_password, user_attempt):
        time.sleep(0.2)
        if x != y:
            return False
    return True
  • ממשו פונקציה בשם crack_password, אשר מחזירה את ססמתכם המקורית, באמצעות שימוש ב־check_password. הבהרה: אין לשנות את check_password בשום צורה.
  • על מנת שמשתמשים אחרים לא יוכלו לפרוץ את הססמה כמו שעשיתם אתם, דיווחתם על החולשה לחברה (כל הכבוד לכם!), וגויסתם אליה.
    כעת, עליכם לשנות את check_password, כך שלא יוכלו לפרוץ אותה שוב בדרך זו. הניחו שהפונקציה חייבת להשוות את שתי הססמאות תו אחר תו, ושאורך כל חישוב לוקח כשתי עשיריות השנייה. במילים אחרות: אין לשנות את השורה המדמה את זמן החישוב (time.sleep), או את השורות המשוות כל אות בנפרד (לולאת ה־for).

סגירת תרגילי ההשלמה תתבצע ביום שבת, ה־23/05 בשעה 21:00, ולא דקה אחרי.

3 לייקים

תרגילי השלמה לשבוע 6

  1. המפספסים תרגיל 1 בלבד – מתבקשים לפתור רק את תרגיל מספר 1.
  2. המפספסים שני תרגילים – מתבקשים לפתור את תרגיל 1 ואת תרגיל 2.

תרגיל 1 – 6 דרגות של ויקיפדיה

’שש דרגות של הפרדה" (או “חוק 6 לחיצות הידיים”) הוא מושג בתפישה הפופולרית של מדעי החברה המתאר את הרעיון שלפיו כל שני אנשים בעולם מקושרים ביניהם על ידי חמישה אנשים אחרים לכל היותר.
לדוגמה, אם ארצה לבחון את הקשר שלי לדונאלד־טראמפ – יתכן שיש לי חבר שעבד במיקרוסופט (קשר #1), ולו יש בוס (קשר #2) שראש המחלקה שלו (קשר #3) עבד עם ביל גייטס (קשר #4). ביל גייטס מכיר באופן אישי את דונאלד טראמפ (קשר #5), ולכן חוק 6 לחיצות הידיים מתקיים לגביי ולגבי דונאלד־טראמפ.

חוק דומה לחוק 6 דרגות של הפרדה הוא “6 דרגות של ויקיפדיה”. לפי חוק זה, ניתן להגיע מכל ערך מסוים לערך אחר בעזרת לחיצה על 5 קישורים בלבד.
לדוגמה, נבדוק את המרחק בין הכוכב אורנוס לבין הערך על הפרדה גזעית.
מהערך Uranus ניתן להגיע לערך Helium, ממנו ניתן להגיע לערך אוקלהומה וממנו לערך על הפרדה גזעית. במקרה זה יש 5 דרגות של הפרדה.

כתבו פונקציה שמקבלת שמות 2 ערכים בוויקיפדיה (X, Y) ומרחק הפרדה מקסימלי N.
הפונקציה תבדוק האם ניתן ללחוץ על N - 1 קישורים החל מהערך X כדי להגיע לערך Y.

תרגיל 2 – נקמת ה־Leveraging Simple Dictionaries

בהמשך לקוד שכתבתם בתרגיל Leveraging Simple Dictionaries, כתבו תוכנה שיודעת לשרטט גרף של האוטומט שקראתם מהקובץ.

סגירת תרגילי ההשלמה תתבצע ביום שבת, ה־06/06 בשעה 21:00, ולא דקה אחרי.

5 לייקים

תרגילי השלמה לשבוע 7

  1. המפספסים תרגיל 1 בלבד – מתבקשים לפתור רק את תרגיל מספר 1.
  2. המפספסים שני תרגילים – מתבקשים לפתור את תרגיל 1 ואת תרגיל 2.

תרגיל 1 – טריוויה

ממשו רובוט טריוויה לטלגרם.

הרובוט יטען שאלות טריוויה מקובץ טקסט, בו בכל שורה יש שאלה ותשובה אליה. השאלה מופרדת מהתשובה בתו כוכבית.
השאלות יאוחסנו במופעים מסוג Question שבהם המאפיינים הם מספר שאלה, מלל השאלה ומלל התשובה.
המחלקה Question תכיל את הפעולה is_correct. הפעולה תחזיר True אם התשובה היא נכונה או “כמעט נכונה”.
תשובה “כמעט נכונה” היא כל תשובה שמרחק לוינשטיין המירבי שלה מהתשובה המקורית הוא 2.

הרובוט ידע להתחבר לערוץ טלגרם, לשלוח ולקבל בו הודעות.
בעת הפעלת הרובוט על ידי כתיבת ההודעה !start בערוץ הטלגרם, הרובוט יודיע על תחילת המשחק.
כל מי שנמצא בערוץ יוכל לנסות לענות על שאלות, והראשון שעונה תשובה נכונה או כמעט נכונה מקבל נקודה.
אם אין אף אחד שענה תשובה נכונה או כמעט נכונה תוך 60 שניות, אפשרו למשתמשים לכתוב !next כדי לעבור לשאלה הבאה.
הפקודה לא תעבוד אם לא עברו 60 שניות.

כברירת מחדל, סיום המשחק יגיע כאשר אחד המשתתפים משיג 5 נקודות.
מי שהפעיל את הבוט יכול להחליט על משחק ארוך יותר אם יספק מספר אחרי פקודת ההתחלה, לדוגמה, אם יכתוב !start 50.
במקרה כזה, המשחק יארוך עד שאחד המשתתפים ישיג 50 נקודות.

בסוף המשחק, תודפס הטבלה של 5 השחקנים שהשיגו הכי הרבה נקודות בסיבוב ותהיה הכרזה חגיגית על המנצח.

תוכלו למצוא קובץ שאלות לדוגמה פה.

תרגיל 2 – פורום

ממשו את פורום הקורס.

בפורום יהיו:

  1. קטגוריות. לכל קטגוריה יש שם ותיאור.
  2. אשכולות. לכל אשכול יש שם, קטגוריה אליו הוא משתייך, המשתמש שפתח את האשכול, מספר הצפיות באשכול ותאריך פתיחה.
  3. תגובות. לכל תגובה יש אשכול אליו היא שייכת, תאריך תגובה, המשתמש המגיב ותוכן מילולי.
  4. משתמשים. לכל משתמש יש שם משתמש, דרגת אמון וכתובת דואר־אלקטרוני.

לכל קטגוריה יש תכונה של solveable.
אם התכונה מוגדרת כ־True, המשתמש שפתח את האשכול יכול לסמן אחת מהתגובות לאשכול כ"פתרון".
לא יכול להיות יותר מפתרון אחד לכל אשכול. אם משתמש יסמן תגובה אחרת כפתרון – סימון הפתרון על התגובה השנייה ימחק.
אם התכונה מוגדרת כ־False, לא יתאפשר סימון תגובות כ"פתרון".

לכל קטגוריה יש את הפעולה list_topics, שמחזירה כרשימה את האשכולות לפי תאריך התגובה האחרונה.
אם ל־list_topics מועבר הפרמטר sort, רשימת האשכולות תסודר בסדר שונה:

  1. אם הפרמטר sort הוא by_activity_volume, רשימת האשכולות תסודר לפי כמות התגובות בהם.
  2. אם הפרמטר sort הוא by_views, רשימת האשכולות תסודר לפי כמות כמות הצפיות באשכול.2
  3. כברירת מחדל, הפרמטר sort הוא by_last_reply, קרי, לפי תאריך התגובה האחרונה.

בקטגוריה יוגדרו 3 סוגי הרשאות:
מי יכול לפתוח נושא (open_permission), מי יכול להגיב (reply_permission) ומי יכול לראות את רשימת האשכולות (view_permission).
ערך התכונה תהיה דרגת האמון המינימלית שצריכה להיות למשתמש כדי לבצע את הפעולה הרלוונטית.

לכל אשכול יש תכונה של locked ו־pinned.
אם אשכול הוא locked, משתמשים לא יוכלו להגיב באשכול.
אם אשכול הוא pinned, הוא יוצג למשתמש ראשון ברשימת האשכולות לא משנה מה.
אם יש מספר אשכולות שהם pinned, הם יוצגו ראשונים אך הסדר ביניהם יהיה הסדר שהועבר ל־list_topics כפרמטר.

משתמש חדש שיווצר יהיה בדרגת אמון 1, יעלה לדרגת אמון 2 כשיש לו 25 תגובות שסומנו כפתרונות ולדרגת אמון 3 כשיש לו 75 תגובות שסומנו כפתרונות.

ממשו גם את הפעולות reply עבור אשכול, ו־open_topic עבור קטגוריה.
דאגו שתהיה הדפסה ראויה לפרטים של משתמש, של אשכול ושל קטגוריה.

סגירת תרגילי ההשלמה תתבצע ביום שני, ה־29/06 בשעה 19:00, ולא דקה אחרי.

6 לייקים

תרגילי השלמה לשבוע 8

  1. המפספסים תרגיל 1 בלבד – מתבקשים לפתור רק את תרגיל מספר 1.
  2. המפספסים שני תרגילים – מתבקשים לפתור את תרגיל 1 ואת תרגיל 2.

תרגיל 1 – UNO

קראו את החוקים של המשחק UNO וממשו אותו. לצורך התרגיל הזה, אין צורך להתחשב ב"חוקי הבית".
תמכו במספר שחקנים שבין 2 ל־10, ותמכו במצב המיוחד של 2 שחקנים.

תרגיל 2 – סטרטגו

קראו את החוקים של המשחק סטרטגו וממשו אותו.
תמכו בחוקי “סטרטגו” המקורי, ולא בגרסאות הישראליות.

סגירת תרגילי ההשלמה תתבצע ביום שני, ה־03/08 בשעה 19:00, ולא דקה אחרי.

תרגילי השלמה לשבוע 9

  1. המפספסים תרגיל 1 בלבד – מתבקשים לפתור רק את תרגיל מספר 1.
  2. המפספסים שני תרגילים – מתבקשים לפתור את תרגיל 1 ואת תרגיל 2.

תרגיל 1 – אבידות ומציאות

בנו שני Decorators: האחד בשם find והשני בשם use.

ה־decorator ששמו find יקבל כפרמטר תבנית אחת או יותר של שם קובץ.
הוא ימצא בתיקייה הנוכחית או בתתי התיקיות שלה את כל הקבצים ששמם תואם לתבנית הזו.
לאחר מכן, הוא יקרא לפונקציה אותה הוא עוטף, ויעביר לה כפרמטר בשם files את רשימת כל הקבצים שמצא.

לדוגמה, הקוד הבא ידפיס את כל קובצי הפייתון וכל קובצי הטקסט תחת התיקייה ותתי התיקיות במיקום שממנו הוא רץ:

@find('*.py', '*.txt')
def file_printer(files):
    print(files)

ה־decorator ששמו use יקבל בפרמטר files שלו רשימת קבצים.
הוא יפתח את כל הקבצים, ויקרא את תוכנם.
לאחר מכן, הוא יקרא לפונקציה אותה הוא עוטף, ויעביר לה כפרמטר בשם content מילון, בו המפתח הוא שם הקובץ והערך הוא תוכן הקובץ.
אם הפונקציה use תכתב מיד אחרי ה־decorator files, לא יהיה צריך לציין במפורש את רשימת הקבצים שהיא תקרא.
הפונקציה use תוכל להופיע לבדה, או מיד אחרי ה־decorator find באופן הבא:

@find('*.py', '*.txt')
@use
def file_printer(content):
    print(content)

הפונקציה המופיעה מעלה תדפיס את נתיבי הקבצים ואת התוכן שלהם.

תרגיל 2 – קריאות או לא להיות

הוסיפו Type Annotations לתרגיל 1.

סגירת תרגילי ההשלמה תתבצע ביום שני, ה־24/08 בשעה 19:00, ולא דקה אחרי.

תרגילי השלמה לשבוע 10

  1. המפספסים תרגיל 1 בלבד – מתבקשים לפתור רק את תרגיל מספר 1.
  2. המפספסים שני תרגילים – מתבקשים לפתור את תרגיל 1 ואת תרגיל 2.

תרגיל 1 – עכשיו זה אינטגרלי

חקרו כיצד עובדת הפקודה diff ב־git. ממשו את אותה פקודה עבור wit.
ודאו ש־diff יודעת לקבל פרמטר אחד או שניים, ואת הפרמטר --cached.
חקרו כיצד היא אמורה להתנהג בכל אחד מהמקרים בעזרת git.

תרגיל 2 – אגריפס הראשון

במקום לקרוא ישירות מ־sys.argv,
השתמשו ב־argparse או במודול אחר לעיבוד פרמטרים ודגלים משורת הפקודה.
שנו את הקוד כך שיפעל תחת argparse.

סגירת תרגילי ההשלמה תתבצע ביום שני, ה־14/09 בשעה 19:00, ולא דקה אחרי.

לייק 1

תרגילי השלמה לשבוע 11

  1. המפספסים עד 3 תרגילים באותו יום – מתבקשים להשלים 3 פרויקטים באזור Responsive Web Projects של freeCodeCamp.
  2. המפספסים עד 2 תרגילים ביום מסוים, ועד 3 תרגילים ביום אחר – מתבקשים להשלים 5 פרויקטים באזור Responsive Web Projects של freeCodeCamp.

האזור נמצא תחת הכותרת “Responsive Web Design Certification (300 hours)”.

סגירת תרגילי ההשלמה תתבצע ביום שישי, ה־09/10 בשעה 19:00, ולא דקה אחרי.

לייק 1

תרגילי השלמה לשבוע 12

  1. המפספסים אחד או שניים מהתרגילים, מתבקשים:
    1.1 – להעלות Mockup + את האתר המוכן (Flask וכד’) וקישור לאתר ה־Heroku.
    1.2 – בנוסף, מתבקשים לבחור בין:
    1.2.1 – להשלים פרויקט נוסף לבחירתם
    1.2.2 – או לפתור את אחד מה־issues ממערכת התרגילים.
  2. המפספסים את כל התרגילים, מתבקשים:
    2.1 – להעלות Mockup + את האתר המוכן (Flask וכד’) וקישור לאתר ה־Heroku.
    2.2 – מתבקשים להשלים פרויקט נוסף לבחירתם
    2.3 – גם לפתור את אחד מה־issues ממערכת התרגילים.

סגירת תרגילי ההשלמה תתבצע ביום רביעי, ה־28/10 בשעה 19:00, ולא דקה אחרי.

לייק 1

תרגילי השלמה לשבוע 14

מי שפספס את הגשת הפרויקט, מתבקש להגיש את הפרויקט עם התנאים ההכרחיים הבאים:

  1. לפחות 4 טבלאות, כולן מקושרות אחת לשנייה בדרך זו או אחרת.
  2. לפחות קשר רבים לרבים אחד.
  3. לשלב JavaScript לפחות במקום אחד באתר: לחיצה על כפתור או קישור מסוים תציג למשתמש פידבק בדף, ללא טעינה מחדש של העמוד. הלחיצה תבצע שינוי כלשהו במסד הנתונים. לצורך המטלה הזו, קראו על AJAX או על fetch. אם תצטרכו חיזוקים נוספים ב¯JavaScript, גשו ל¯JavaScript.info.

סגירת תרגילי ההשלמה תתבצע בין יום ראשון לשני, ה־14/10 בשעה 00:00, ולא דקה אחרי.