ChatGPTに、飲酒後のアルコール分解にかかる時間を計算するPythonコードを書いてもらった

ChatGPTに、飲酒後のアルコール分解にかかる時間を計算するPythonコードを書いてもらいました。体重と飲んだお酒の種類、量を標準入力して、計算結果を表示するという単純なものです。

 

指示文(プロンプト):

飲酒後にアルコールが分解されるまでの時間を概算するPythonアプリを作りたいです。
以下の仕様に沿ったコードを提示してください。

仕様:
・標準入力で、体重を指定する
・標準入力で、飲んだお酒と量を指定する
・アルコール量(g) = 飲んだお酒の量(ml) × アルコール度数(%) × 0.8 ÷ 100
・1時間で分解できるアルコール量を計算する。計算式は「 体重 (kg) × 0.1 = 1時間で分解できるアルコール量(g) 」
・選択肢として表示する飲んだ酒の種類、量、含まれるアルコール量は別に定義。定義内容は、酒の種類×単位(本、杯など)
・最後に摂取したアルコール量と分解にかかる時間(時間単位)で表示してください。

 

回答:

def calculate_time_to_breakdown_alcohol():
    weight = float(input("体重を入力してください(kg): "))
    
    # アルコール度数
    alcohol_type = {"ビール": 5, "日本酒": 15, "焼酎": 25, "ワイン": 12} 

    # アルコール摂取単位(ml)
    alcohol_amount = {"ビール": 500, "日本酒": 180, "焼酎": 180, "ワイン": 100} 
    
    alcohol_list = []

    while True:
        alcohol = input("飲んだお酒を選択してください(ビール、日本酒、焼酎、ワイン)。終了する場合は「q」を入力してください: ")
        if alcohol == "q":
            break
        amount = float(input(f"{alcohol}の飲んだ量を入力してください(単位:ビールなら中瓶の本数、日本酒なら合、焼酎・ワインなら杯): "))
        alcohol_list.append((alcohol, amount))

    # 飲んだアルコール量(g)
    alcohol_content = sum([alcohol_amount[alcohol] * alcohol_type[alcohol] * amount for alcohol, amount in alcohol_list]) * 0.8 / 100 

    # 1時間で分解できるアルコール量(g)
    breakdown_alcohol_content = weight * 0.1

    # アルコールが分解されるまでの時間(時)
    breakdown_time = (alcohol_content / (breakdown_alcohol_content))
    
    # 結果出力
    print(f"飲んだアルコール量は{alcohol_content:.2f}gです。")
    print(f"アルコールが分解されるまでの時間は{breakdown_time:.2f}時間です。")

    
#実行
calculate_time_to_breakdown_alcohol()
    
結果:

以下のように成功しました。アルコールの度数、単位がコードに直接定義されているので、ここは外部化したほうが良さそうですね。

ただ、最初に提示されたコードの計算式が間違っていて、アルコール摂取単位をmlで定義しているのに飲んだ量もmlで入力させるようになっていたので、ビール1本でアルコール量が7000gとかになってしまったため、プロンプトで訂正も面倒だったので手動で訂正してます。