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

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

1日目のゴールと全体像

この7日間の新しいテーマは「年齢計算アプリ」です。 生年月日から現在の年齢を計算する、小さくて身近なアプリを題材にして、Python文法の基礎をもう一度、別の角度から体に馴染ませていきます。

1日目のゴールは、次の5つを「年齢計算」という具体的な流れの中でイメージできるようになることです。

  • 変数:生年月日や今日の日付、年齢を入れる“意味のある箱”
  • 条件分岐:誕生日が来ているかどうかで年齢を調整する“頭脳”
  • 繰り返し:何度でも年齢を計算できる“枠組み”
  • 関数:年齢計算を部品として切り出す“再利用可能なパーツ”
  • ファイル操作:計算結果を記録として残す“アプリの記憶”

電卓や BMI と同じく、「年齢」という誰にでも関係のあるテーマを使うことで、Python の抽象的な概念を、生活に近い形で理解していきます。

変数とは何か(生年月日と今日の日付を入れる箱)

年齢計算に必要な“材料”を変数で表す

年齢を計算するには、最低限次の2つの情報が必要です。

  • 生まれた日(生年月日)
  • 今日の日付

これを Python の変数で表現すると、例えば次のようになります。

birth_year = 1990
birth_month = 5
birth_day = 10

current_year = 2026
current_month = 8
current_day = 2
Python

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

年齢の“ざっくり計算”は、まず次のようにできます。

age = current_year - birth_year
print("ざっくりした年齢:", age)
Python

しかし、これだけでは「誕生日を迎えたかどうか」が考慮されていません。 例えば、

  • 生年月日:1990年12月10日
  • 今日:2026年8月2日

の場合、単純に 2026 - 1990 = 36 ですが、まだ誕生日が来ていないので実際の年齢は 35 歳です。

ここで「年齢」という変数は、

  • まずは「年の差」でざっくり計算する
  • その後、条件分岐で調整する

という2段階の意味を持つようになります。

1日目では、「変数はただの箱ではなく、計算のストーリーの中で役割を持つ登場人物だ」という感覚を、年齢という身近な題材で掴んでください。

条件分岐とは何か(誕生日が来ているかどうかを判断する頭脳)

誕生日を迎えているかどうかで年齢を調整する

年齢計算で一番大事なロジックが、「誕生日を迎えているかどうか」の判定です。 ここで条件分岐が登場します。

ざっくり計算した年齢を age として、次のような考え方をします。

  • 今年の誕生日がまだ来ていない → 年齢を 1 引く
  • 今年の誕生日が来ている → そのまま

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

age = current_year - birth_year

if (current_month, current_day) < (birth_month, birth_day):
    age = age - 1

print("正しい年齢:", age)
Python

ここで重要なのは、

(current_month, current_day) < (birth_month, birth_day)
Python

という比較です。 これは「今日の月日が、誕生日の月日より前かどうか」をまとめて判定しています。

  • 今日が 8月2日、生まれた日が 12月10日 → (8, 2) < (12, 10) は True → 誕生日前 → 年齢を 1 引く
  • 今日が 12月20日、生まれた日が 12月10日 → (12, 20) < (12, 10) は False → 誕生日後 → 年齢そのまま

条件分岐は、ここで「年齢を調整する頭脳」として働いています。

さらに、あり得ない入力に対しても条件分岐でガードを作ることができます。

if birth_year > current_year:
    print("未来の生年月日になっています。入力を確認してください。")
Python

このように、条件分岐は

  • 正しい年齢を導き出すためのロジック
  • おかしな状態を止めるための安全装置

という二つの役割を持つことができます。

1日目では、「条件分岐は単なる if ではなく、年齢計算の“頭脳”だ」という意識でコードを眺めてみてください。

繰り返しとは何か(何度でも年齢を計算できる枠組み)

家族や友人の分も連続して計算できるようにする

年齢計算アプリを作るなら、「一度だけ計算して終わり」ではなく、何度でも使えるようにしたいはずです。 例えば、家族全員分の年齢を計算したい、クラス全員分を確認したい、など。

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

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

while True:
    print("=== 年齢計算を始めます ===")
    birth_year = int(input("生まれた年を入力してください (例: 1990): "))
    birth_month = int(input("生まれた月を入力してください (例: 5): "))
    birth_day = int(input("生まれた日を入力してください (例: 10): "))

    current_year = int(input("今年の年を入力してください (例: 2026): "))
    current_month = int(input("今の月を入力してください (例: 8): "))
    current_day = int(input("今日の日付を入力してください (例: 2): "))

    age = current_year - birth_year
    if (current_month, current_day) < (birth_month, birth_day):
        age = age - 1

    print("あなたの年齢は", age, "歳です。")

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

ここで深掘りしたいのは、while True:break の組み合わせです。

  • while True: は「永遠に繰り返す」という意味
  • break は「ループを抜ける」命令

ユーザーが y を入力している間は何度でも計算を続け、n を入力したらループを抜けて終了します。

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

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

年齢計算ロジックを関数にまとめる

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

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

def calculate_age(birth_year, birth_month, birth_day,
                  current_year, current_month, current_day):
    age = current_year - birth_year
    if (current_month, current_day) < (birth_month, birth_day):
        age = age - 1
    return age
Python

この関数は、「生年月日」と「今日の日付」を受け取り、「正しい年齢」を返す部品です。

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

birth_year = int(input("生まれた年を入力してください: "))
birth_month = int(input("生まれた月を入力してください: "))
birth_day = int(input("生まれた日を入力してください: "))

current_year = int(input("今年の年を入力してください: "))
current_month = int(input("今の月を入力してください: "))
current_day = int(input("今日の日付を入力してください: "))

age = calculate_age(birth_year, birth_month, birth_day,
                    current_year, current_month, current_day)

print("あなたの年齢は", age, "歳です。")
Python

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

  • calculate_age は「年齢をどう計算するか」だけを担当
  • メインのコードは「何を入力して、何を表示するか」を担当

このように役割を分けることで、後から「年齢の計算方法を変えたい」「入力の方法を変えたい」といったときに、直す場所がはっきり分かります。

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

ファイル操作とは何か(年齢計算の“履歴”を残す機能)

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

年齢計算アプリを少しだけ“実用的なツール”に近づけるなら、「計算履歴をファイルに残す」機能をつけると面白くなります。 例えば、家族全員の年齢を計算して、その結果を一覧として残しておきたい場合などです。

Pythonでは、open を使ってファイルに書き込むことができます。

次のような関数を作ってみます。

def save_age_history(birth_year, birth_month, birth_day,
                     current_year, current_month, current_day,
                     age):
    with open("age_history.txt", "a", encoding="utf-8") as f:
        line = (
            f"生年月日: {birth_year}{birth_month}{birth_day}日, "
            f"基準日: {current_year}{current_month}{current_day}日, "
            f"年齢: {age}\n"
        )
        f.write(line)
Python

ここで重要なのは、"a" モードを使っていることです。

  • "a" は「追記モード」
  • 既存のファイルの末尾に新しい行を追加していく

これにより、年齢を計算するたびに履歴が一行ずつ増えていきます。

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

age = calculate_age(birth_year, birth_month, birth_day,
                    current_year, current_month, current_day)

print("あなたの年齢は", age, "歳です。")

save_age_history(birth_year, birth_month, birth_day,
                 current_year, current_month, current_day,
                 age)
Python

これで、age_history.txt というファイルに、計算した年齢の履歴が残っていきます。 後からファイルを開けば、「誰がいつ生まれて、いつの時点で何歳だったか」を一覧で見ることができます。

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

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

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

  • 生年月日と今日の日付を変数として扱うことで、「値に名前をつける」感覚を掴む。
  • 誕生日が来ているかどうかを条件分岐で判定し、「数値から意味を導き出す」ロジックを体験する。
  • 何度でも年齢を計算できるようにする繰り返しで、「アプリとしての枠組み」を感じる。
  • 年齢計算を関数に分けることで、「部品としてコードを設計する」感覚を育てる。
  • 履歴をファイルに保存することで、「プログラムの外にデータを残す」技術に触れる。

年齢という一つのアプリの中に、Pythonの基礎がぎゅっと詰まっています。 2日目以降は、この年齢計算アプリを少しずつ拡張しながら、入力チェックや現在日時の自動取得、複数人の一覧表示など、「実際に使えるアプリ」に近づけていきます。

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