בתרגיל הזה נכתוב מערכת מעט חכמה יותר לבנק.
נבנה אותה בשלבים באמצעות חלוקה לפונקציות.
בשלב הראשון נבנה פונקציה למחולל סיסמאות, שמקבלת שם משתמש ומחזירה סיסמה.
הסיסמה תורכב כך עבור שם משתמש נתון:
שימו לב כי שם המשתמש יכול לכלול ספרות וסימנים, נוסף על אותיות.
כמו כן, לא נאפשר שם משתמש שהוא מחרוזת ריקה. במקרה זה החזירו מחרוזת ריקה.
לדוגמה, עבור שם המשתמש 'stam' המחולל יחזיר את הסיסמה: 'stamSTAMXXXX'
הריצו את הפונקציה על 4 דוגמאות נוספות לפחות, באורכים שונים, ובדקו שקיבלתם פלט כמצופה.
In [ ]:
# כתבו את הפונקציה שלכם כאן
הריצו את הפונקציה כך: password_generator('stam')
כעת נקבל שם משתמש וסיסמה, ונבדוק אם השילוב הוא נכון. בדקו באמצעות מחולל הסיסמאות מהסעיף הקודם אם הסיסמה של המשתמש תואמת את הסיסמה שיוצר המחולל. הדפיסו "ברוך הבא" אם הסיסמה נכונה, אחרת הדפיסו "סיסמה שגויה".
login('stam', 'stamSTAMXXXX')
login('stam', 'mats')
In [ ]:
# כתבו את הפונקציה שלכם כאן
כתבו פונקציה שמחזירה True
אם בוצע חיבור מוצלח, אחרת החזירו False
.
פונקציה זו דומה מאוד לפונקציה הקודמת שכתבתם, רק שהיא אינה מדפיסה דבר.
במקום ההדפסה יוחזר ערך בוליאני מתאים.
לדוגמה:
login('stam', 'stamSTAMXXXX')
login('stam', 'mats')
In [ ]:
# כתבו את הפונקציה שלכם כאן
כעת ענו על השאלה הקודמת באמצעות הפונקציה שכתבתם בסעיף זה, כלומר כתבו פונקציה שמשתמשת בפונקציה המחזירה ערך בוליאני ומדפיסה בהתאם להוראת מהסעיף הקודם.
רמז: השתמשו בערך ההחזרה של הפונקציה מהסעיף הקודם, בתוך if.
In [ ]:
# כתבו את הפונקציה שלכם כאן
כעת נרחיב את מערכת הבנק שלנו.
נניח כי לכל לקוח יש בחשבון הבנק 500 ש"ח.
באמצעות הפוקנציות הקודמות שכתבנו נממש את התוכנית הבאה:
ציירו תחילה על דף תרשים זרימה של הקוד – תרשים מעויינים ללא קוד. זה יעזור לכם במימוש.</p
Insert username: stam
Insert password: stamSTAMXXXX
Login succeeded. How much you'd like to withdraw? 200
Please take your money (200NIS). Your balance is: 300NIS.
דוגמה לסיסמה שגויה:
Insert username: stam
Insert password: mats
Login failed.
דוגמה למשיכה לא חוקית:
Insert username: stam
Insert password: stamSTAMXXXX
Login succeeded. How much you'd like to withdraw? 600
Withdrawal denied.
דוגמה למשיכה של 0 ש"ח:
Insert username: stam
Insert password: stamSTAMXXXX
Login succeeded. How much you'd like to withdraw? 0
Invalid amount.
In [ ]:
# כתבו את הפונקציה שלכם כאן
לאחרונה עלתה דרישה לשכלל את הבנק שלנו, כך שרק מספר מצומצם של לקוחות יוכלו לגשת לבנק.
הגדירו רשימה של שמות של לקוחות שעבורם יתאפשר החיבור.
עבור לקוחות שאינם ברשימה יכתוב הבנק You are not a customer of the bank.
In [ ]:
# כתבו את הפונקציה שלכם כאן
ניזכר בכמה פעולות של מחרוזות:
לכל אחד מהתרגילים הבאים הריצו את הדוגמה וכתבו בעצמכם 3 דוגמאות נוספות. הסבירו לעצמכם מה עושה כל מתודה למחרוזת שהיא מקבלת.
אם תרצו להיזכר מה עושה מתודה מסוימת תוכלו להריץ אותה כך:
str.method-name?
לדוגמה:
str.split?
הריצו את התא הבא לקבלת מידע על המתודה split:
In [ ]:
str.split?
In [ ]:
"abcdef:ghijk:xyz".split(":")
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
"543".zfill(4)
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
"now i am a lowercase string, one day i will be upper".upper()
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
"I AM AN UPPERCASE STRING. I AM AFRAID TO BE LOWERED!".lower()
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
"wow!_I_am_using_underscore_as_space!".replace("_", " ")
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
" i need some spaceeeeeeee ".strip()
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
"i^wonder&if@all##characters$in%%%this string are alpha-numeric???".isalnum()
In [ ]:
"onlylettersandnumbers2342343".isalnum()
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
"lettersonly".isalpha()
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
"4535354353".isdecimal()
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
In [ ]:
# כתבו דוגמה למתודה זו
בשאלה זו נכתוב גרסה של שעון עולמי התומך ב־4 אזורי זמן:
אם נקבל תל אביב, נחזיר את השעה בתוספת 3 שעות.
אם נקבל ניו יורק נחזיר את השעה פחות 4.
אם נקבל טוקיו נחזיר את השעה ועוד 9.
בכל מקרה אחר נחזיר את השעה כמו שקיבלנו אותה.
השעון שלנו בתרגיל זה הוא שעון 24 שעות בפורמט HH:MM.
תחילה, כתבו פונקציה המקבלת את השעה בפורמט HH:MM, ומקבלת את מספר השעות שיש להוסיף או להוריד מהשעה הנתונה, ומחזירה את השעה המעודכנת.
time_shift("08:44", 1)
time_shift("07:31", -2)
כמו כן עליכם לוודא שמוכנסת שעה חוקית, ולהדפיס שגיאה אם לא:
time_shift("32:12", 4)
נוסף לכך, עליכם לתמוך במעברים בין יממות. כלומר עליכם לבצע נכון פעולות מסוג זה:
time_shift("23:30", 2)
time_shift("04:13", -5)
In [ ]:
# כתבו את הפונקציה שלכם כאן
פונקציות שימושיות:
split – מתודה של string.
האופרטור % (מודולו) – חשבו עם איזה מספר צריך לעשות מודולו.
zfill – השתמשו בה במקרה שהשעה חד־ספרתית (לדוגמה 1:05 תהפוך ל־01:05)
רמזים נוספים:
מומלץ להמיר את השעה מ־string ל־int ואז לבצע את פעולות החשבון, ולבסוף להמיר חזרה ל־string
כעת כתבו פונקציה המקבלת שני פרמטרים – שעה ואזור זמן ובאמצעות הפונקציה מהתרגיל הקודם מחזירה את השעה באזור הזמן המבוקש.
לדוגמה:
convert_to_timezone("10:34", "TLV")
"13:34"
In [ ]:
# כתבו את הפונקציה שלכם כאן
כתבו תוכנית שמקבלת 2 רשימות שונות, ומדפיסה:
לדוגמה – אם קיבלנו 2 רשימות ריקות, נדפיס:
"Got empty list"
"Got empty list"
"Same length"
In [ ]:
# כתבו את הפונקציה שלכם כאן
כתבו פונקציה שמקבלת רשימה של רשימות.
אם הרשימה החיצונית לא באורך 6, הפונקציה תדפיס Only lists of length 6 are allowed.
הפונקציה תדפיס "Yes!" אם אחד מהבאים מתקיים:
הפונקציה תדפיס "Yes!" עבור כל תנאי שמתקיים, גם אם קיים יותר מאחד כזה.
לדוגמה, עבור:
multi = [[0], [1], [2], [3], [4], [5]]
כל התנאים מתקיימים, ולכן נדפיס "Yes!" 3 פעמים.
כתבו לפחות 3 דוגמאות שונות שמדגימות:
In [ ]:
# כתבו את הפונקציה שלכם כאן