はじめに
このプロジェクトでは、指定された年のすべての日曜日を出力する 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 の
datetimeとcalendarモジュールを使用して日付を扱う方法 - 指定された年のすべての日曜日のリストを計算して返す関数を書く方法
- Python スクリプトでユーザー入力とコマンドライン引数を扱う方法
- スクリプトを拡張してカスタマイズし、より柔軟でユーザーフレンドリーにする方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- Python で日付と時間を扱う方法を理解する
- 指定された年のすべての日曜日を出力するスクリプトを書く
- 異なる年やユーザー入力を処理するようにスクリプトをカスタマイズする
- 新しく学んだ知識をプログラミングプロジェクトの他の日付関連のタスクに適用する
Sunday.py ファイルを作成する
このステップでは、Sunday.py ファイルを作成し、スクリプトの初期構造を設定します。
~/projectディレクトリにSunday.pyファイルを作成します。
cd ~/project
touch Sunday.py
- ファイルに以下のコードを追加します。
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 ファイルのコードの目的と機能を理解します。
print_sundays()関数はyearパラメータを受け取り、その年のすべての日曜日のリストを返します。- この関数は、与えられた
yearとその年の最初の日(1 月 1 日)を持つdatetime.dateオブジェクトを作成することから始まります。 - その後、曜日が 6(日曜日)になるまで日付を繰り返して、その年の最初の日曜日を見つけます。
- 最初の日曜日が見つかると、関数は年末まで続くループに入ります。各反復では、現在の日曜日を
sundaysリストに追加し、次の日曜日に移動します(1 週間の時間間隔を追加することで)。 - 最後に、関数は日曜日のリストを返します。
- スクリプトのメイン部分は、コマンドライン引数から年を読み取り、提供された年で
print_sundays()関数を呼び出します。そして、リスト内の各日曜日を出力します。 - コマンドライン引数が提供されない場合、スクリプトはエラーメッセージを表示します。
スクリプトを実行する
このステップでは、Sunday.py スクリプトを実行して出力を確認します。
- ターミナルを開き、
/home/labex/projectディレクトリに移動します。 - 特定の年をコマンドライン引数として
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 でさらに多くの実験を行って練習してください。



