上級Python開発コース
チャプター
>
レベル
文字列と時間のモジュール
カレンダーモジュール
目的
Calendar モジュールを使用してカレンダーを確認し、配送スケジュールの日付を設定します。
複数の出荷物が到着し、予定された時刻表に合わせる必要があるため、新しい農場の建設周辺で配送されることになります。以前は発送ラベルの設定に date モジュールを使用していましたが、今回は calendar モジュールを使用して時刻表を設定します。モジュールのクラスと関数を利用するために、import calendar を使ってすべての関連素材をインポートしてください。
今回の目的では、次の calendar モジュールの関数を使用します:
calendar.calendar():年全体のカレンダーを表示します。表示したい年を引数として1つ(1)渡します。calendar.month():1ヶ月分のカレンダーを表示します。引数として年と月の2つ(2)を渡します。calendar.isleap():指定した年が閏年かどうかを確認します。確認する年を引数として1つ(1)渡します。calendar.leapdays():指定期間における閏日の合計数を確認します。期間を網羅する2つ(2)の年を引数として渡します。itermonthdays():Calendar()クラスを使用し、その月の日数すべてを反復処理します。引数として年と月の2つを渡します。itermonthdates():Calendar()クラスを使用し、その月の日付すべてを反復処理します。引数として年と月の2つを渡します。monthdayscalendar():Calendar()クラスを使用し、その月のすべての週を反復処理します。引数として年と月の2つを渡し、データは二重リストに格納されます。monthdays2calendar():前の関数と同様ですが、週と日を2次元リストとして一緒に格納します。
まず、金色の X マークまで歩いてカレンダーを確認し、cal という変数を作成して calendar.calendar() の値を格納します。引数として 2026 を追加し、以下のように記述します:
cal = calendar.calendar(2026)
用意された display() 関数を使用して、設定した cal 変数を表示してください。
カレンダーの確認と表示が完了したら、明るい X マークの場所へ行き、机の上のスプレッドシートを確認します。read() 関数を使用して、供給予定日(月)のメモをチェックしてください。year と month という2つの変数を作成し、読み取った情報でそれぞれを埋めてください。
次に、calendar_month という変数を作成し、作成した year と month 変数を引数として calendar.month() 関数の値を格納します。用意された display() 関数を利用して、配送時刻表の設定に使用するカレンダーの月を表示してください。
緑のカーペット越しの暗い X マークまで歩き、ここでは時刻表がずれていないことを確認するためのデータポイントを書き留めます。leap_year という変数と leap_days という変数の2つを作成してください。
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 変数に記録されたプロジェクトの平日の完全な名簿をカレンダー上に表示し、レベルを完成させてください。