任意の年の日付の処理

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、指定された年のすべての日曜日を出力するPythonスクリプトを作成する方法を学びます。これは、プログラミングプロジェクトで日付や時間関連のタスクを扱う必要がある人にとって役立つスキルです。

👀 プレビュー

python Sunday.py 2022
2022-01-02
2022-01-09
2022-01-16
2022-01-23
2022-01-30
2022-02-06
2022-02-13
2022-02-20
...

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • Pythonのdatetimecalendarモジュールを使用して日付を扱う方法
  • 指定された年のすべての日曜日のリストを計算して返す関数を書く方法
  • Pythonスクリプトでユーザー入力とコマンドライン引数を扱う方法
  • スクリプトを拡張してカスタマイズし、より柔軟でユーザーフレンドリーにする方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • Pythonで日付と時間を扱う方法を理解する
  • 指定された年のすべての日曜日を出力するスクリプトを書く
  • 異なる年やユーザー入力を処理するようにスクリプトをカスタマイズする
  • 新しく学んだ知識をプログラミングプロジェクトの他の日付関連のタスクに適用する

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/PythonStandardLibraryGroup -.-> python/date_time("Date and Time") subgraph Lab Skills python/conditional_statements -.-> lab-302733{{"任意の年の日付の処理"}} python/arguments_return -.-> lab-302733{{"任意の年の日付の処理"}} python/standard_libraries -.-> lab-302733{{"任意の年の日付の処理"}} python/date_time -.-> lab-302733{{"任意の年の日付の処理"}} end

Sunday.py ファイルを作成する

このステップでは、Sunday.py ファイルを作成し、スクリプトの初期構造を設定します。

  1. ~/project ディレクトリに Sunday.py ファイルを作成します。
cd ~/project
touch Sunday.py
  1. ファイルに以下のコードを追加します。
import datetime
import sys


## 指定された年のすべての日曜日を出力する関数
def print_sundays(year):
    sundays = []  ## 日曜日を格納するリスト
    date = datetime.date(year, 1, 1)  ## 指定された年の1月1日から始める
    delta = datetime.timedelta(days=1)  ## 1日の時間間隔を定義する

    ## 年の最初の日曜日を見つける
    while date.weekday()!= 6:  ## 6は日曜日を表します(月曜日が0で日曜日が6)
        date += delta  ## 次の日に移動する

    ## 年のすべての日曜日を出力する
    while date.year == year:  ## 年が変わるまでループする
        sundays.append(
            date.strftime("%Y-%m-%d")
        )  ## 日曜日をリストに追加する(YYYY-MM-DD形式)
        date += datetime.timedelta(
            weeks=1
        )  ## 次の日曜日に移動する(1週間増やす)

    return sundays  ## 日曜日のリストを返す


## コマンドライン引数から年を読み取る
if len(sys.argv) > 1:
    year = int(sys.argv[1])  ## コマンドライン引数を整数に変換する
    sundays = print_sundays(year)  ## 日曜日のリストを取得する関数を呼び出す
    for sunday in sundays:
        print(sunday)  ## 各日曜日を出力する
else:
    print(
        "Please provide a year as a command-line argument."
    )  ## 年が指定されていない場合、エラーメッセージを表示する

このコードは、Sunday.py スクリプトの基本構造を設定します。これには、print_sundays() 関数とコマンドライン引数の処理が含まれています。

コードを理解する

このステップでは、Sunday.py ファイルのコードの目的と機能を理解します。

  1. print_sundays() 関数は year パラメータを受け取り、その年のすべての日曜日のリストを返します。
  2. この関数は、与えられた year とその年の最初の日(1月1日)を持つ datetime.date オブジェクトを作成することから始まります。
  3. その後、曜日が6(日曜日)になるまで日付を繰り返して、その年の最初の日曜日を見つけます。
  4. 最初の日曜日が見つかると、関数は年末まで続くループに入ります。各反復では、現在の日曜日を sundays リストに追加し、次の日曜日に移動します(1週間の時間間隔を追加することで)。
  5. 最後に、関数は日曜日のリストを返します。
  6. スクリプトのメイン部分は、コマンドライン引数から年を読み取り、提供された年で print_sundays() 関数を呼び出します。そして、リスト内の各日曜日を出力します。
  7. コマンドライン引数が提供されない場合、スクリプトはエラーメッセージを表示します。

スクリプトを実行する

このステップでは、Sunday.py スクリプトを実行して出力を確認します。

  1. ターミナルを開き、/home/labex/project ディレクトリに移動します。
  2. 特定の年をコマンドライン引数として Sunday.py スクリプトを実行します。
python Sunday.py 2022

以下の出力が表示されるはずです。

2022-01-02
2022-01-09
2022-01-16
2022-01-23
2022-01-30
2022-02-06
2022-02-13
2022-02-20
2022-02-27
2022-03-06
2022-03-13
2022-03-20
2022-03-27
2022-04-03
2022-04-10
2022-04-17
2022-04-24
2022-05-01
2022-05-08
2022-05-15
2022-05-22
2022-05-29
2022-06-05
2022-06-12
2022-06-19
2022-06-26
2022-07-03
2022-07-10
2022-07-17
2022-07-24
2022-07-31
2022-08-07
2022-08-14
2022-08-21
2022-08-28
2022-09-04
2022-09-11
2022-09-18
2022-09-25
2022-10-02
2022-10-09
2022-10-16
2022-10-23
2022-10-30
2022-11-06
2022-11-13
2022-11-20
2022-11-27
2022-12-04
2022-12-11
2022-12-18
2022-12-25

出力は2022年のすべての日曜日を表示しています。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabExでさらに多くの実験を行って練習してください。