見出し画像

考えよう! Pythonでプログラミング。

令和2年って西暦何年だろう?などたまにわからない時があります。

西暦から元号へ変換する方法を考えます。イメージは

西暦を入力、調べたい年数、例えば

2022

該当する元号

令和4年

単純に元号ごとに西暦の開始と終了を指定して、そこに合致したものを出力するようにコードを書いてみます。

year = int(input("西暦を入れてください : "))

if year >= 1912 and year <= 1925:
    print(f"{year}年は大正{ year-1911 }年です")

elif year>=1926 and year<=1988:
     print(f"{year}年は昭和{ year-1925 }年です")

elif year>=1989 and year<=2018:
     print(f"{year}年は平成{ year-1988 }年です")

elif year>=2019:
    print(f"{year}年は令和{ year-2018 }年です")

これで大正から令和までの元号が簡単にわかるようになりました。

他にどんな方法があるかをインターネットで検索してみます。

分かりやすそうです。さらに探します。

たった12行で!ということで簡単に判定。令和限定ですが。

そして

このサイトでは考え方が書いてあり、これも分かりやすいです。

そしてもう一つPythonではないですがJavaScript で西暦から和暦へ変換する方法が示されています。

これが一番単純に実装できそうなのでPythonで作ってみます。

まず、元号と西暦の最初の年を辞書でまとめます。

era = {
    "令和": 2019,
    "平成": 1989,
    "昭和": 1926,
    "大正": 1912,
    "明治": 1868
}

調べたい西暦を仮に2022年とします。

year = 2022

2022年が元号では何年になるかfor in文で一つずつ調べます。

for i,j in era.items():
      if (year >= j):
          print(i, year - j)

辞書eraのデータを元号を"i"、元号を"j"に取り出して"j"が調べたい西暦より大きければ、その元号と調べたい西暦から取り出したスタートの西暦を引いたもの、すなわち元号の数字を出力します。

出力は

令和 4
平成 34
昭和 97
大正 111
明治 155

実行した結果は以上となります。

現在の元号のみ取り出したいので

for i,j in era.items():
      if (year >= j):
          print(i, year - j)
          break

break

を入れてやれば最新のみとなります。この場合だと"令和 4"と出てきます。

これを関数かしてみます。

def eraFind(year):
    era = {
        "令和": 2019,
        "平成": 1989,
        "昭和": 1926,
        "大正": 1912,
        "明治": 1868
    
    }

    for i,j in era.items():
        if (year >= j):
            print(i, year - j + 1)
            break

使うときは

eraFind(1990)

として実行すると"平成 2"と出てきます。

関数にまとめておくと使い勝手が良くなりますね。

この記事が気に入ったらサポートをしてみませんか?