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

close up of computer screen
Photo by Marc Mueller on Pexels.com

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

Meg
Meg

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

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

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

Please follow me!

今回は「西暦を元号に変更する」という問題を、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メソッドで辞書の値からキーを抽出 様々な条件でキーを抽出するサンプルコード 反対に、キーkeyから値valueを取得したい場合は以下の記事を参照。関連記事: Pythonの...

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

まとめ

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


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

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

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