どうもこんにちは、Megです。
今回は「西暦を元号に変更する」という問題を、Pythonを用いて実装したので簡単に解説したいと思います。
ちょっと変わった実装したのでプログのネタにしてみる
実装コード
では早速実装したコードを見てみましょう。
year = int(input("元号を知りたい西暦を入力してください:"))
year_dict = {"令和":2019, "平成":1989, "昭和":1926, "大正":1912,"明治":1868}
def get_key_from_value(d, val):
keys = [k for k, v in d.items() if v == val]
if keys:
return keys[0]
return None
for v in year_dict.values():
if year < v:
pass
else:
ans = str(year - v + 1)
if ans == '1':
ans = "元"
print(get_key_from_value(year_dict, v) + ans + "年")
break
基本的にif~else文
で記述していくのが王道かなと思うのですが、今回はPythonの辞書を使ってみました。
元号をkey
に、その元号が始まった西暦をvalue
にした辞書を作成します。
関数get_key_from_value()
は、任意の辞書に対してvalueからkeyを逆引きする関数です。
こちらのサイトに記載していったものを流用させていただきました。
Pythonで辞書の値からキーを抽出 | note.nkmk.me
Pythonで辞書(dict型オブジェクト)の値valueからキーkeyを抽出する方法を説明する。様々な条件で抽出できる。 リスト内包表記とitemsメソッドで辞書の値からキーを抽出 様々な条件でキーを抽出するサンプルコード ...
for文でvalueに記載されている西暦を順次取り出し、入力された値より大きい西暦がきたら、差を計算しget_key_from_value()
を用いてvakueからkeyを参照して出力します。
まとめ
こんな方法もあるんだな!
と思ってもらったら幸いです。
簡単な問題も自分流に取り組んでみるとプログラミング力が伸びていくと思います!
時間があったら、整数以外が入力されたらエラー文を返すのもsys
モジュールとか使って実装しようかな