Coding for KidsCoding for Kids
クリエイティブレベル挑戦教師ガイド
機能に投票
上級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() 関数を使用して、供給予定日(月)のメモをチェックしてください。yearmonth という2つの変数を作成し、読み取った情報でそれぞれを埋めてください。

次に、calendar_month という変数を作成し、作成した yearmonth 変数を引数として calendar.month() 関数の値を格納します。用意された display() 関数を利用して、配送時刻表の設定に使用するカレンダーの月を表示してください。

緑のカーペット越しの暗い X マークまで歩き、ここでは時刻表がずれていないことを確認するためのデータポイントを書き留めます。leap_year という変数と leap_days という変数の2つを作成してください。

leap_year 変数には calendar.isleap() の結果を格納し、引数に 2026 を設定します。これにより、現在のプロジェクト年が閏年かどうかを確認できます。

leap_days 変数には calendar.leapdays() の値を格納し、引数として 20202027 を追加してください。これにより、プロジェクト期間全体で発生した閏日の総数が確認できます。

用意された write() 関数を使用して、leap_yearleap_days のデータを書き留めてください。

赤いカーペット越しの暗い X マークまで歩き、机に向かってください。ここでは月のスケジュールを概説します。date という変数を作成し、calendar.Calendar() の値を格納します。これにより、後で参照できるクラスオブジェクトが作成されます。

さらに、day_roster という変数を作成し、空の文字列を設定してください。これにより、日付の名簿を文字列として保存できます。以下のように記述します:

day_roster = ""

エディターには、カレンダーの日付を概説する for ループが事前に記述されています。itermonthdays() 関数を使用し、先に作成した yearmonth 変数を引数として渡してください。不足している項目は必要に応じて追加し、名簿の合計を完成させます。

for day in dates.itermonthdays(-insert value-, -insert value-): entry = "Day: %s \n" % (day) day_roster += entry

ループの設定が完了したら、このループの複製を作成し、itermonthdays() 関数を itermonthdates() に置き換えて、引数として yearmonth 変数を追加してください。entry 変数には次のようにデータを記録させます:

entry = "%s \n" % (day)

これにより、プロジェクト期間の完全な日付が得られます。用意された display() 関数を使用して、day_roster 変数に記録されたプロジェクトの日付の完全な名簿をカレンダー上に表示してください。

青いカーペット越しの暗い X マークまで歩き、メモに向かってください。ここでは、リストに分類されたプロジェクトのフォローアップ作業週を設定します。weeks という変数を作成し、calendar.Calendar() の値を格納してください。これにより、関数とともに参照できるクラスオブジェクトが作成されます。作業中の時刻表を前倒しするため、month 変数の値を 7 に置き換えます。以下のように記述してください:

month = 7

次に、week_roster という変数を作成し、空の文字列を設定します。これにより、週の名簿を文字列として保存できます。以下のように記述します:

week_roster = ""

エディターには、カレンダーの平日を概説する for ループが事前に記述されています。monthdayscalendar() 関数を使用し、作成した yearmonth 変数を引数として渡してください。不足している項目は必要に応じて追加し、名簿の合計を完成させます。

for day in weeks.monthdayscalendar(-insert value-, -insert value-): entry = "%s \n" % (day) week_roster += entry

ループの設定が完了したら、このループの複製を作成し、monthdayscalendar() 関数を monthdays2calendar() に置き換えて、引数として yearmonth 変数を追加してください。これにより、プロジェクト期間の完全な日付が得られます。用意された display() 関数を使用して、week_roster 変数に記録されたプロジェクトの平日の完全な名簿をカレンダー上に表示し、レベルを完成させてください。

コードブック