קורס פיתוח מתקדם בפייתון
פרק
>
רמה
מודולי מחרוזת וזמן
מודול לוח שנה
מטרה
בדוק את לוח השנה וקבע תאריכים עבור חלק משלבי האספקה באמצעות מודול Calendar.
ישנם מספר משלוחים שהגיעו ולוחות זמנים שעליהם להתמלא כדי שיוכל להתבצע ההפצה סביב הבנייה של החווה החדשה. בעבר השתמשנו במודול date כדי להגדיר תוויות משלוח, וכאן נשתמש במודול calendar לקביעת לוחות הזמנים. כדי להשתמש במחלקות ובפונקציות של המודול, השתמש ב-import calendar לייבוא כל החומרים הרלוונטיים.
לצורכינו, נשתמש בפונקציות הבאות ממודול calendar:
calendar.calendar():מציג את לוח השנה המלא עבור השנה, מקבל פרמטר אחד (1), שהוא השנה אותה תרצה להציג.calendar.month():מציג לוח שנה של חודש אחד, מקבל שני (2) פרמטרים, השנה והחודש.calendar.isleap():בודק האם שנת מסוימת היא שנת מעוברת, מקבל פרמטר אחד (1), שהוא השנה לבדיקה.calendar.leapdays():בודק את מספר ימי המעובר שהצטברו על פני שנים, מקבל שני (2) ארגומנטים, השנים המגדרות את התקופה אותה תרצה לבדוק.itermonthdays():משתמש ב-Calendar()class, עובר על כל הימים בחודש, מקבל שני ארגומנטים, השנה והחודש.itermonthdates():משתמש ב-Calendar()class, עובר על כל התאריכים בחודש, מקבל שני ארגומנטים, השנה והחודש.monthdayscalendar():משתמש ב-Calendar()class, עובר על כל השבועות בחודש, מקבל שני ארגומנטים, השנה והחודש. מאחסן את הנתונים ברשימה מקוננת.monthdays2calendar():דומה לפונקציה הקודמת אך מאחסן שבועות וימים יחד ברשימה דו-ממדית.
כדי להתחיל, לך לסימן X הזהב ובדוק את לוח השנה, צור משתנה בשם cal ואחסן בו את הערך של calendar.calendar() והוסף את השנה 2026 כארגומנט, כך: cal = calendar.calendar(2026) . השתמש בפונקציה display() כדי להציג את המשתנה cal שהגדרת זה עתה.
לאחר בדיקת והצגת לוח השנה, עבור לסימן X הבהיר ובדוק את גיליון האקסל על השולחן. השתמש בפונקציה read() כדי לבדוק את הפתק עבור חודש התאריך המתוכנן של האספקה. צור שני משתנים, אחד בשם year ואחר בשם month ומלא אותם במידע שקראת.
צור משתנה בשם calendar_month ואחסן בו את הערך של הפונקציה calendar.month() תוך שימוש במשתנים year ו-month כארגומנטים. השתמש בפונקציה display() כדי להציג את לוח השנה של החודש שישמש לקביעת לוחות הזמנים להפצה.
לך לסימן X הכהה על פני השטיח הירוק, כאן נרשום כמה נקודות נתונים כדי לוודא שלא תהיה סטייה בלוחות הזמנים. צור שני משתנים, אחד בשם leap_year ואחד בשם leap_days. עבור המשתנה leap_year אחסן את התוצאה של calendar.isleap() והגדר 2026 כארגומנט. זה יאפשר לך לאמת אם שנת הפרויקט הנוכחית היא שנת מעוברת. עבור המשתנה leap_days, אחסן את הערך של calendar.leapdays() והוסף את הערכים: 2020 ו-2027 כארגומנטים. כך תאמת את מספר ימי המעובר שהתרחשו במהלך כל משך הפרויקט. השתמש בפונקציה write() המוכנה מראש והוסף את leap_year ו-leap_days לרישום הנתונים.
לך לסימן X הכהה על פני השטיח האדום ופנה לשולחן, כאן נתאר את לוח הזמנים של החודש. צור משתנה בשם date ואחסן בו את הערך של calendar.Calendar(), אשר יוצר אובייקט מחלקה שאליו נוכל להתייחס בהמשך. צור משתנה נוסף בשם day_roster והגדר אותו כמחרוזת ריקה, כך שתוכל לאחסן את רשימת הימים כמחרוזת. כך: day_roster = "" .
כתוב מראש בעורך לולאת for העוברת בלוח השנה ומפרטת את התאריכים. השתמש בפונקציה itermonthdays() והוסף את המשתנים year ו-month שיצרת מוקדם יותר כארגומנטים. הוסף פריטים חסרים ככל הנדרש לסיכום הרשימה.
for day in dates.itermonthdays(-insert value-, -insert value-): entry = "Day: %s \n" % (day) day_roster += entry
לאחר שהלולאה מוגדרת, המשך על ידי יצירת כפילות שלה, אולם החלף את הפונקציה itermonthdays() ב-itermonthdates() והוסף את המשתנים year ו-month כארגומנטים. עבור המשתנה entry, רשום את הנתונים כך: entry = "%s \n" % (day). כך תקבל את התאריכים המלאים של משך הפרויקט. השתמש בפונקציה display() המוכנה מראש עם המשתנה day_roster כדי להציג את רשימת כל ימי הפרויקט בלוח השנה.
לך לסימן X הכהה על פני השטיח הכחול ופנה לפתק, כאן נקים את שבועות המשך הפרויקט הממוינים ברשימות. צור משתנה בשם weeks ואחסן בו את הערך של calendar.Calendar(), אשר יוצר אובייקט מחלקה שאליו נוכל להתייחס באמצעות הפונקציות. החלף את ערך המשתנה month ל-7 כדי להתאים את לוח הזמנים שעליו אנו עובדים, כך: month = 7 .
צור משתנה בשם week_roster והגדר אותו כמחרוזת ריקה, כך שתוכל לאחסן את רשימת השבועות כמחרוזת. כך: week_roster = "" .
כתוב מראש בעורך לולאת for העוברת בלוח השנה ומפרטת את ימי השבוע. השתמש בפונקציה monthdayscalendar() והוסף את המשתנים year ו-month שיצרת מוקדם יותר כארגומנטים. הוסף פריטים חסרים ככל הנדרש לסיכום הרשימה.
for day in weeks.monthdayscalendar(-insert value-, -insert value-): entry = "%s \n" % (day) week_roster += entry
לאחר שהלולאה מוגדרת, המשך על ידי יצירת כפילות שלה, אולם החלף את הפונקציה monthdayscalendar() ב-monthdays2calendar() והוסף את המשתנים year ו-month כארגומנטים. כך תקבל את התאריכים המלאים של משך הפרויקט. השתמש בפונקציה display() המוכנה מראש עם המשתנה week_roster כדי להציג את רשימת ימי השבוע המלאה של הפרויקט בלוח השנה, ובכך להשלים את השלב.