sagantaf

なんでも自分の思ったこと、経験したことを書いて生きます。

【Python】単位変換機を作成してみた

 引き続き、「Pythonから始める数学入門」の問題をアレンジして、実際に作成していきます。
 
今回は、単位変換に関する問題です。
 
問題1−3 単位変換プログラムの拡張
 
「質量単位の変換(kgーlb(ポンド))と温度単位の変換(℃ー°F)ができるようにせよ。」
 
 
これをアレンジして、以下のように汎用的にしてみました。
 
「最初に単位変換のメニューを用意して、実施したい単位変換を選択できるようにせよ。その後、数値を入力できるようにし、実際に変換結果を表示せよ。」
 
メニューは、
 ・インチとメートル
 ・グラムとポンド
 ・華氏と摂氏
にしました。
 
 
def unit_change(menu):
    if menu == 1:
        orig = input("Please enter the distance you want to convert:")
        while True:
            try:
                orig = float(orig)
                break
            except ValueError:
                print("Please enter an number.")
 
        meter = orig * 0.0254
        inch = orig / 0.0254
        print("{0} inch -> {1} meter".format(orig,meter))
        print("{0} meter -> {1} inch".format(orig,inch))
 
    elif menu == 2:
        orig = input("Please enter the weight you want to convert:")
        while True:
            try:
                orig = float(orig)
                break
            except ValueError:
                print("Please enter an number.")
        gram = orig * 0.0454
        pond = orig / 0.0454
        print("{0} pond -> {1} gram".format(orig,gram))
        print("{0} gram -> {1} pond".format(orig,pond))
 
    elif menu == 3:
        orig = input("Please enter the temperature you want to convert:")
        while True:
            try:
                orig = float(orig)
                break
            except ValueError:
                print("Please enter an number.")
        F = orig * 3.4
        C = orig / 3.4
        print("{0} ℃ -> {1} ℉".format(orig,F))
        print("{0} ℉ -> {1} ℃".format(orig,C))
 
    else:
        print("unknows error occurred!")
 
 
if __name__ == '__main__':
    dict = {1:"distance", 2:"weight", 3:"temperature"}
    print("Please chose an unit which you want to convert.")
 
    while True:
        for k,v in dict.items():
            print("  {0}:{1}".format(k, v)) #menuを表示
 
        m = input("Enter an number:")
 
        try:
            m = int(m)
            if m in list(dict.keys()):
                break
            else:
                print("Plese choose the menu number.")
        except ValueError:
            print("Please enter an number.")
 
    unit_change(m)