Python | 1 日 60 分 × 7 日アプリ学習:Python文法を学ぶアプリ BMI計算編

Web APP Python
スポンサーリンク
スポンサーリンク

1日目のゴールと全体像

この7日間の学習では、Pythonで「BMI計算アプリ」を作りながら、文法の基礎を体に馴染ませていくことを目標にします。 1日目のテーマは、電卓のときと同じく、次の5つの柱です。

変数 条件分岐 繰り返し 関数 ファイル操作

ただし題材は「BMI」。 身長と体重から自分の体型の目安を計算する、現実に役立つ小さなアプリです。 この具体的なテーマを通して、「Pythonで何ができるのか」をイメージしやすくしていきます。

変数とは何か(BMIの“材料”を入れる箱として考える)

身長と体重を変数に入れる

変数は、プログラムの中で「値に名前をつけて覚えておくための箱」です。 BMI計算では、最低でも「身長」と「体重」を扱う必要があります。

例えば、次のように書きます。

height = 1.70  # メートル
weight = 65.0  # キログラム
Python

ここで重要なのは、heightweight という名前が「何を表しているか」をそのまま伝えていることです。 ab ではなく、意味のある名前にすることで、コードを読んだときに迷わなくなります。

BMIの計算式は「体重 ÷ 身長 ÷ 身長」です。 それを変数を使って書くと、次のようになります。

bmi = weight / (height * height)
print(bmi)
Python

bmi という変数は、「計算結果を覚えておく箱」です。 このように、BMIアプリでは、

身長を覚える変数 体重を覚える変数 BMIを覚える変数

という3つの“材料の箱”が登場します。

1日目では、「変数はただの箱ではなく、意味を持ったラベルである」という感覚を掴んでください。

条件分岐とは何か(BMIの“判定ロジック”として考える)

BMIの値から体型を判定する

BMIは、単に数値を出すだけでなく、「その数値がどんな状態なのか」を判定するところまで行くと、アプリとしてぐっと面白くなります。

例えば、次のようなざっくりした判定を考えます。

18.5 未満 → やせ 18.5 以上 25 未満 → 普通 25 以上 → 肥満

これを Python の条件分岐で書くと、次のようになります。

if bmi < 18.5:
    print("やせ気味です")
elif bmi < 25:
    print("標準です")
else:
    print("肥満気味です")
Python

ここで重要なのは、elif bmi < 25: の意味です。 elif は「それまでの条件に当てはまらなかった場合に、別の条件を試す」という流れを作ります。

この条件分岐は、次のようなストーリーになっています。

BMI が 18.5 未満なら「やせ」 そうでなくて 25 未満なら「標準」 それ以外は「肥満」

BMIアプリでは、この条件分岐が「判定ロジック」、つまりアプリの“頭脳”になります。 1日目では、「数値から意味を導き出す」という条件分岐の役割を、BMIという分かりやすい題材で体感していきます。

繰り返しとは何か(BMIを何度でも計算できる仕組みとして考える)

1回で終わらないBMI計算

BMIアプリを作るなら、「一度だけ計算して終わり」ではなく、何度でも使えるようにしたいはずです。 例えば、家族全員分を計算したい、過去の自分と今の自分を比べたい、など。

そこで使うのが「繰り返し」です。 Pythonでは while を使って、同じ処理を何度も実行できます。

簡単なテンプレートは次のようになります。

while True:
    height = float(input("身長をメートルで入力してください (例: 1.70): "))
    weight = float(input("体重をキログラムで入力してください (例: 65.0): "))

    bmi = weight / (height * height)
    print("あなたのBMIは:", bmi)

    if bmi < 18.5:
        print("やせ気味です")
    elif bmi < 25:
        print("標準です")
    else:
        print("肥満気味です")

    again = input("もう一度計算しますか? (y/n): ")
    if again != "y":
        print("終了します")
        break
Python

ここで深掘りしたいのは、while True:break の組み合わせです。 while True: は「永遠に繰り返す」という意味ですが、 break を使うことで「ユーザーがやめたいと言ったらループを抜ける」ことができます。

繰り返しは、BMIアプリを「一度きりの計算」から「何度でも使えるツール」に変えてくれる仕組みです。 1日目では、「ループの一回分が一つのストーリーになっているか」を意識してコードを眺めてみてください。

関数とは何か(BMI計算を“部品”として切り出す)

BMI計算と判定を関数にする

関数は、「まとまった処理に名前をつけて、何度でも呼び出せるようにする」ための仕組みです。 BMIアプリでは、「計算する部分」と「判定する部分」を関数にすると、コードがぐっと読みやすくなります。

まず、BMIを計算する関数を作ります。

def calculate_bmi(height, weight):
    return weight / (height * height)
Python

次に、BMIの値から判定を返す関数を作ります。

def judge_bmi(bmi):
    if bmi < 18.5:
        return "やせ気味です"
    elif bmi < 25:
        return "標準です"
    else:
        return "肥満気味です"
Python

これらを使って、メインの処理は次のように書けます。

height = float(input("身長をメートルで入力してください: "))
weight = float(input("体重をキログラムで入力してください: "))

bmi = calculate_bmi(height, weight)
print("あなたのBMIは:", bmi)

message = judge_bmi(bmi)
print(message)
Python

ここで重要なのは、関数を使うことで「計算のロジック」と「入力・出力の流れ」が分離されていることです。 BMIアプリの中で、

計算する部品 判定する部品 入力と表示を担当する部分

がそれぞれ独立しているため、後から修正したり機能を追加したりしやすくなります。

1日目では、「関数はアプリの部品である」という感覚を、BMIという具体的な処理を通して掴んでください。

ファイル操作とは何か(BMIの“履歴”を残す機能として考える)

計算結果をファイルに保存する

BMIアプリを少しだけ“実用的なツール”に近づけるなら、「計算履歴をファイルに残す」機能をつけると面白くなります。 Pythonでは、open を使ってファイルに書き込むことができます。

例えば、次のような関数を作ります。

def save_bmi_history(height, weight, bmi):
    with open("bmi_history.txt", "a", encoding="utf-8") as f:
        line = f"身長: {height}m, 体重: {weight}kg, BMI: {bmi}\n"
        f.write(line)
Python

ここで重要なのは、with open(..., "a") という書き方です。 "a" は「追記モード」を意味し、既存のファイルの末尾に新しい行を追加していきます。 with を使うことで、ファイルを開いたあと自動的に閉じてくれるため、安全に扱えます。

この関数をメインの処理に組み込むと、次のようになります。

height = float(input("身長をメートルで入力してください: "))
weight = float(input("体重をキログラムで入力してください: "))

bmi = calculate_bmi(height, weight)
print("あなたのBMIは:", bmi)

message = judge_bmi(bmi)
print(message)

save_bmi_history(height, weight, bmi)
Python

これで、BMIを計算するたびに bmi_history.txt に履歴が残っていきます。 後からファイルを開けば、自分の過去のBMIを一覧で見ることができます。

ファイル操作は、「プログラムの外にデータを残す」ための基本的な技術です。 BMIの履歴という具体的な形で、この技術を体に馴染ませていきましょう。

1日目で本当に掴んでほしいこと

1日目のゴールは、「BMI計算」という身近なテーマを通して、次の5つの柱を“意味付きで”理解することです。

身長・体重・BMIを変数として扱うことで、「値に名前をつける」感覚を掴む。 BMIの値から体型を判定する条件分岐で、「数値に意味を与える」ロジックを体験する。 何度でも計算できるようにする繰り返しで、「アプリとしての枠組み」を感じる。 計算と判定を関数に分けることで、「部品としてコードを設計する」感覚を育てる。 履歴をファイルに保存することで、「プログラムの外にデータを残す」技術に触れる。

BMIという一つのアプリの中に、Pythonの基礎がぎゅっと詰まっています。 2日目以降は、このBMIアプリを少しずつ拡張しながら、入力チェックやメニュー機能など、「実際に使えるアプリ」に近づけていきます。

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