この記事を読むとことで、
・うるう年をIF文と剰余演算子%で判定
・Forループ
・リスト
・リストの末尾に要素を追加
・西暦と和暦の対応
について学習できます。
うるう年はプログラミングを学ぶ上で重要な論点です。
Pythonのコードで、開始年から終了年までの間のうるう年を調べて、和暦と対応付けます。
例えば、私が生れた1977年から、この記事を書いている2025年まで、うるう年が何回あったのか、その年の西暦と和暦の対応を付けて元号も表示出来ます。
まず、うるう年の定義ですが、
4で割れて且つ100で割れない、または400で割れる
になります。
2025年(令和7年)は4で割れないので、うるう年ではありません。
2100年は4で割れますが、100で割れるのでうるう年ではありません。
具体的に、1977年(昭和52年)から2025年(令和7年)までの期間のうるう年を見ていきます。
標準入力を使って、開始年に1977、終了年に2025を入力します。
まず、標準入力で、開始年(yearStart)と終了年(yearLast)を入力するコードです。
#開始年の入力
print("開始年を西暦で入力して下さい -->>",end="")
yearStart=int(input())
#終了年の入力
print("終了年を西暦で入力して下さい -->>",end="")
yearLast=int(input())
次に、うるう年だった場合にリストleapArrayに追加するコードです。
この処理で、うるう年の条件に当てはまる、「4で割り切れて100で割れない」または、400で割れると言う条件が当てはまったら、その年をリストleapArrayに追加します。
リストに追加する部分のコードです。
leapArray.append(i)
また、len(leapArray)で配列の長さを求めることによって、うるう年が何回あったのかをカウントします。
#開始年の入力
print("開始年を西暦で入力して下さい -->>",end="")
yearStart=int(input())
#終了年の入力
print("終了年を西暦で入力して下さい -->>",end="")
yearLast=int(input())
#うるう年を格納するリストを用意
leapArray=[]
#ループでうるう年に該当する年をリストに格納する
for i in range(yearStart,yearLast+1):
if (i%4==0 and i%100!=0) or (i%400==0):
leapArray.append(i)
#リストの長さはうるう年が合った回数になる
num=len(leapArray)
#うるう年が追加されたリストを表示させる
for year in leapArray:
print(year)
print("うるう年は【"+str(num)+"】回ありました。")
ここまでの実行結果です。
最後に西暦年から和暦に変換する処理を行います。
昭和は1926年からなので、西暦年から1925を引きます。
平成は1989年からなので、西暦年から1988を引きます。
令和は2019年からなので、西暦年から2018を引きます。
西暦が格納されたyearから必要な年数を引いた分を変数japanに格納します。
便宜上、 昭和64年と平成31年はそれぞれ平成と令和の元年に致しました。
#開始年の入力
print("開始年を西暦で入力して下さい -->>",end="")
yearStart=int(input())
#終了年の入力
print("終了年を西暦で入力して下さい -->>",end="")
yearLast=int(input())
#うるう年を格納するリストを用意
leapArray=[]
#ループでうるう年に該当する年をリストに格納する
for i in range(yearStart,yearLast+1):
if (i%4==0 and i%100!=0) or (i%400==0):
leapArray.append(i)
#リストの長さはうるう年が合った回数になる
num=len(leapArray)
#うるう年が追加されたリストを西暦と和暦で表示する
for year in leapArray:
if year>=2019:
japan=year-2018
wareki="令和"
elif year>=1989 and year<2019:
japan=year-1988
wareki="平成"
else:
japan=year-1925
wareki="昭和"
print(str(year)+"年 "+"("+wareki+str(japan)+"年)")
print("うるう年は【"+str(num)+"】回ありました。")
実行結果です。
うるう年については他の言語でも記事を書きました。
アセンブラ(フローチャート付き)
C言語
お疲れ様でした。ブレイクタイムPhotoは、
いたばし花火大会2025です。
ご精読ありがとうございました。
■ 独習Python ■
Kindle版
単行本(ソフトカバー)