大さじ小さじとグラムを変換したい その5

前回でグラム→大さじ・小さじのプログラムは大体完成したので、今回からは大さじ・小さじ→グラムのプログラムを作っていこうと思います。
まあ前回までのコードを少し改変すればすぐにできます。

まずは入力をさせる部分。グラム→大さじ・小さじでは調味料の種類・大さじか小さじか・何杯分かを入力できるようにしましたが、大さじ・小さじ→グラムでは調味料の種類・何グラム分かだけを入力し、結果は大さじの場合・小さじの場合がともに表示されるようにします。
前回のコードはこんな感じ(関数名をstog()に変更しています)。

def stog():
   seasoning = input("何測る?")
   while seasoning != "塩" and "小麦粉" and "上白糖" and "グラニュー糖" and "ドライイースト":
       print("塩・小麦粉・上白糖・グラニュー糖・ドライイーストから選んでね")
       seasoning = input("何測る?")
   kind = input("大さじと小さじ、どっち?")
   while kind != "大さじ" and "小さじ":
       print("大さじか小さじか選んでね")
       kind = input("大さじと小さじ、どっち?")
   while True:
       try:
           spoon = int(input("何杯?"))
           break
       except ValueError:
           print("数字を入力してね")

大さじ・小さじの部分は削除で、“何杯?”を”何グラム?”にすれば完成ですね。

def gtos():
   seasoning = input("何測る?")
   while seasoning != "塩" and "小麦粉" and "上白糖" and "グラニュー糖" and "ドライイースト":
       print("塩・小麦粉・上白糖・グラニュー糖・ドライイーストから選んでね")
       seasoning = input("何測る?")
   while True:
       try:
           gram = int(input("何グラム?"))
           break
       except ValueError:
           print("数字を入力してね")

つぎに計算部分。例として塩の部分はこんな感じにしました。

    if seasoning == "塩":
       tsp = 5
       tbsp = 15
       tspg = gram/tsp
       tbspg = gram/tbsp
       print(seasoning+str(gram)+"グラムは"+"小さじ"+str(tspg)+"杯"+"大さじ"+str(tbspg)+"杯")

このままだと結果が10.6666666杯とかになることもあるので、何桁まで表すかは次回考えてみます。
最終的に次のようなコードになりました。

def gtos():
   seasoning = input("何測る?")
   while seasoning != "塩" and "小麦粉" and "上白糖" and "グラニュー糖" and "ドライイースト":
       print("塩・小麦粉・上白糖・グラニュー糖・ドライイーストから選んでね")
       seasoning = input("何測る?")
   while True:
       try:
           gram = int(input("何グラム?"))
           break
       except ValueError:
           print("数字を入力してね")
   if seasoning == "塩":
       tsp = 5
       tbsp = 15
       tspg = gram/tsp
       tbspg = gram/tbsp
       print(seasoning++str(gram)"グラムは"+"小さじ"+str(tspg)+"杯"+"大さじ"+str(tbspg)+"杯")
   elif seasoning == "小麦粉":
       tsp = 3
       tbsp = 8
       tspg = gram/tsp
       tbspg = gram/tbsp
       print(seasoning++str(gram)"グラムは"+"小さじ"+str(tspg)+"杯"+"大さじ"+str(tbspg)+"杯")
   elif seasoning == "上白糖":
       tsp = 3
       tbsp = 9
       tspg = gram/tsp
       tbspg = gram/tbsp
       print(seasoning+str(gram)+"グラムは"+"小さじ"+str(tspg)+"杯"+"大さじ"+str(tbspg)+"杯")
   elif seasoning == "グラニュー糖":
       tsp = 4
       tbsp = 12
       tspg = gram/tsp
       tbspg = gram/tbsp
       print(seasoning+str(gram)+"グラムは"+"小さじ"+str(tspg)+"杯"+"大さじ"+str(tbspg)+"杯")
   elif seasoning == "ドライイースト":
       tsp = 4
       tbsp = 12
       tspg = gram/tsp
       tbspg = gram/tbsp
       print(seasoning+str(gram)+"グラムは"+"小さじ"+str(tspg)+"杯"+"大さじ"+str(tbspg)+"杯")

動かしてみると、

>>> gtos()
何測る?塩
何グラム?123123グラムは小さじ24.6杯大さじ8.2

ちゃんと動きますね。

つづく。


この記事が気に入ったらサポートをしてみませんか?