西暦から元号を出力するPythonコード

どうもこんにちは、Megです。

Meg

機械学習を専門に勉強している、理系男子大学生です。

大学の学部では生命工学を学び、男子の中で成績1位を取るほどの勉強好き。

主に生機械学習と生活改善を中心に、日々の学びで得た知識やヒントをブログで共有していきます!

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()メソッドを使用 様々な条件でキーを抽出するサンプルコード なお、キーから値を取得するのは以下のようにキーを指定するだけでOK。キーから値を取得するにはget()メソッド...

for文でvalueに記載されている西暦を順次取り出し、入力された値より大きい西暦がきたら、差を計算しget_key_from_value()を用いてvakueからkeyを参照して出力します。

まとめ

こんな方法もあるんだな!


と思ってもらったら幸いです。
簡単な問題も自分流に取り組んでみるとプログラミング力が伸びていくと思います!

時間があったら、整数以外が入力されたらエラー文を返すのもsysモジュールとか使って実装しようかな

タイトルとURLをコピーしました