תודה לנגה אוסין, איתמר רביב ועידו אלקבץ על בניית השאלות הנוספות.
אין להגיש את התרגילים הללו, והם נטו לצורכי תרגול אישי נוסף וחיזוק היסודות.
מחברת 1
תרגיל 1 (נגה אוסין)
קראו את הקוד הבא וענו על השאלות שאחריו:
num = 0
con = num > 1
if con:
print(num <= 2)
else:
print(con)
- עבור איזה ערך יודפס True?
- עבור איזה ערך יודפס False?
- האם יכול להיות מודפס 3? למה?
תרגיל 2 (נגה אוסין)
דנה קיפאלי אוהבת רק תפוחים ירוקים.
כתבו עבורה קוד אשר ישאל את הירקן אם יש לו תפוחים היום, ואם כן, ישאל שוב אילו צבעים יש בהיצע.
אם יש לו תפוחים ירוקים, הדפיסו “Shigaon”. אחרת, הדפיסו “Boo”.
לדוגמה:
- אם לירקן יש תפוחים היום, ובהיצע יש “Red, Yellow, Green” – הדפיסו “Shigaon”.
- אם לירקן יש תפוחים היום, ובהיצע יש “Pink, Yellow, Red” – הדפיסו “Boo”.
- אם אין תפוחים, יודפס “Boo” והתוכנה תסתיים.
מחברת 2
תרגיל 1 (נגה אוסין)
ניתן לדרג את רמת הבשלות של בננה במספרים שלמים בין 1 ל־10.
- כאשר רמת הבשלות הנה בין 1–4 (כולל), זה אומר שהקליפה ירוקה ויש לחכות טרם אכילתה.
- כאשר רמת הבשלות הנה בין 5–7 (כולל), הקליפה צהובה וניתן לאכול אותה מייד.
- כאשר רמת הבשלות הנה בין 8–10 (כולל), הבננה כבר בשלה מדי לאכילה אך ניתן לאפות ממנה עוגה טעימה.
קבלו מהמשתמש את רמת הבשלות של הבננות שלו, ולפיה הדפיסו לו מה כדאי לו לעשות איתן. אם רמת הבשלות לא תקינה, הדפיסו לו הודעת שגיאה.
לדוגמה:
- עבור קלט 8, יודפס למשתמש שהוא יכול לאפות עוגת בננות.
- עבור קלט 300, תודפס למשתמש הודעת שגיאה.
תרגיל 2 (עידו אלקבץ)
בימי הקורונה הנוראיים היו לנו מספר מגבלות, חלקן מוצדקות וחלקן פחות…
קבלו קלט מהמשתמש עבור המרחק שלו מהבית והדפיסו:
- במידה והוא עד 100 מטר – הדפיסו “Stay safe!”
- במידה והוא עד 5000 מטר – הדפיסו “Put on a mask”
- אחרת – הדפיסו “You’ve been fined for 5,000 shekels”
תרגיל 3 (איתמר רביב)
דילמת האסיר היא בעיה מפורסמת מתורת המשחקים בה החלטה רציונלית של כל אחד מהשחקנים לא תניב את התוצאה הטובה ביותר.
הסיפור הוא על שני אסירים שנתפסים בביצוע פשע, ולמשטרה אין מספיק ראיות על מנת להעמיד אותם לדין.
היא מציעה לכל אסיר בנפרד להלשין על חברו ולקבל עונש מופחת.
- המשטרה מבהירה שאם שניהם ילשינו, שניהם ייכנסו לכלא לחמש שנים.
- אם אחד מהם ילשין והשני ישתוק – המלשין יצא לחופשי ואילו השותק ייכנס לכלא ל־15 שנים.
- אם שניהם ישתקו, למשטרה לא יהיו מספיק ראיות והם ישתחררו לאחר שנה.
כתבו קוד המקבל את החלטת כל אחד מהאסירים (speak או silent) ומדפיס את גורל כל אחד מהם.
לדוגמה, עבור הקלט:
prisoner one: silent
prisoner two: speak
הפלט הוא:
prisoner one is sentenced to 15 years.
prisoner two goes free.
מחברת 3
תרגיל 1 (ים מסיקה)
- כתבו פונקציה ללא פרמטרים, שמטרתה לקבל כקלט (בעזרת
input
) 3 מספרים מהמשתמש. - כתבו פונקציה נוספת שמקבלת 3 מספרים, ומחזירה את הגדול מביניהם.
- כתבו תוכנה שמשתמשת בשתי הפונקציות שבניתם, ומדפיסה את התוצאה של הפונקציה מסעיף 2.
לדוגמה:
- עבור הקלטים 3, 7 ו־9 התוכנית תדפיס 9.
- עבור הקלטים 1, 1 ו־1 התוכנית תדפיס 1.
תרגיל 2 (נגה אוסין)
סעיף 1
כתבו פונקציה (תוכלו לקרוא לה foo, אם תרצו) המחזירה ערך מספרי התלוי בתכונותיו של הקלט אותו היא מקבלת, לפי החוקיות הבאה:
- עבור קלט מסוג int, כפלו אותו בשתיים והחזירו אותו.
- עבור קלט מסוג string:
- אם המחרוזת היא בת 5 תווים או פחות, כפלו את אורכה בשתיים והחזירו אותו.
- אחרת, החזירו את אורך המחרוזת.
- עבור קלט מסוג bool, קרי ביטוי בוליאני, החזירו את הערך המספרי של הביטוי. (כן כן, נסו את זה!)
- אחרת, החזירו 1-.
דוגמאות:
- עבור
True
אוFalse
, הפונקציה תחזיר 1 או 0 (בהתאמה). - עבור 5, הפונקציה תחזיר 10.
- עבור “5”, הפונקציה תחזיר 2.
דוגמה נוספת שעושה קצת ספוילר
עבור {5}, הפונקציה תחזיר 1- .
סעיף 2:
נסו לכתוב את הפונקציה בלי להשתמש ב־elif או ב־else.
רמז: חשבו כיצד תכונותיה של מילת המפתח return תוכלנה לסייע במשימה.
מחברת 4
תרגיל 1 (נגה אוסין)
נמשיך עם הרפתקאות דנה קיפאלי, שבינתיים פיתחה אנינות טעם לתפוחים ירוקים טריים במיוחד.
לירקן יש לפחות שני סוגי תפוחים בכל יום. כתבו פונקציה אשר תקבל מהירקן רשימה המכילה את צבעי התפוחים, המסודרים לפי טריות בסדר יורד (כלומר הכי טרי יהיה במקום ראשון ברשימה, הכי פחות טרי יהיה במקום האחרון). זהו ירקן אמין מאוד ואין חשש לבעיות קלט.
ללא תלות באורך הרשימה, גב’ קיפאלי תסכים לקנות תפוחים באותו יום אך ורק אם יש תפוחים ירוקים במקום הראשון או השני. היא תתפשר על תפוחים אדומים, ובלבד שהם יהיו במקום הראשון.
הפונקציה תחזיר True אם גב’ קיפאלי תקנה תפוחים באותו יום, ו־False אם לא.
דוגמה:
- עבור הקלט [yellow’, ‘green’, ‘polka-dot’, ‘red’’] יוחזר True.
- עבור הקלט [‘blue’, ‘red’, ‘yellow’, ‘green’] יוחזר False.
- עבור הקלט [‘red’, ‘green’, ‘pink’] יוחזר True (חשבו: באיזה צבע תבחר?).
בונוס: במידה וגב’ קיפאלי תקנה תפוחים, החזירו כפלט את צבע התפוחים שתקנה.
בונוס קשה: חשבו איך לממש את הפונקציה גם אם ברשימה עלול להופיע איבר אחד.
תרגיל 2 (נגה אוסין)
צרו שתי רשימות ריקות, אחת למספרים חד־ספרתיים והשנייה למספרים דו־ספרתיים.
קבלו שני input־ים מהמשתמש; כרגע נניח שהוא יזין מספר חיובי ושלם, חד־ספרתי או דו־ספרתי, בכל אחת מהפעמים.
הוסיפו כל מספר לרשימה המתאימה לו. בסופו של דבר, צרו רשימה נוספת אשר תכיל את שתי הרשימות הקודמות, והדפיסו אותה למשתמש.
דוגמה:
- אם המשתמש הזין 33 ואז 3, יודפס:
[['3'], ['33']]
- אם המשתמש הזין 12 ואז 34, יודפס:
[[], ['12', '34']]
- אם המשתמש הזין 4 ואז 2, יודפס:
[['4', '2'], []]
רמז: חזרו במיוחד על השמה של רשימות.
מחברת 5
תרגיל 1 (ים מסיקה, איתמר רביב)
חניכים שצריכים להעלות תרגילים למערכת ההגשה נוטים לעשות טעויות רבות, ולהתלונן בפורום הקורסי על כך שההעלאה אינה עובדת.
כדי להשתמש במערכת ההעלאה, חניך צריך לכתוב בשורה הראשונה של התרגיל: # Upload X
, כאשר X
הוא בהכרח מספר.
כתבו פונקציה שמקבלת מחרוזת של הפתרון שהחניך מנסה להעלות, כולל שורת ה־# Upload
, ומדפיסה לו הודעה על איפה הטעות שביצע בהעלאת התרגיל.
הטעויות האפשריות שקורות לעתים קרובות הן:
- השורה הראשונה (ואולי גם השנייה, וכך הלאה) היא שורה ריקה במקום
# Upload
- החניך שכח לשים רווח אחרי תו הסולמית.
- החניך כתב upload, uPload או כל וריאציה אחרת במקום Upload באותיות גדולות.
- הנתון שמופיע לצד המילה
Upload
אינו מספרי. - השורה # Upload כלל לא מופיעה בקובץ בשום וריאציה הגיונית.
לדוגמה:
עבור הפתרון
#Upload a
a = 5
יודפס:
The # Upload line should be the first line
You forgot to put a space character after the #
‘a’ is not a valid exercise id.