考えよう! Pythonでプログラミング。
令和2年って西暦何年だろう?などたまにわからない時があります。
西暦から元号へ変換する方法を考えます。イメージは
西暦を入力、調べたい年数、例えば
該当する元号
単純に元号ごとに西暦の開始と終了を指定して、そこに合致したものを出力するようにコードを書いてみます。
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
を入れてやれば最新のみとなります。この場合だと"令和 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"と出てきます。
関数にまとめておくと使い勝手が良くなりますね。
この記事が気に入ったらサポートをしてみませんか?