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ここで重要なのは、変数名が「何を表しているか」をそのまま伝えていることです。 y1 や m2 ではなく、birth_year や current_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日目以降は、この年齢計算アプリを少しずつ拡張しながら、入力チェックや現在日時の自動取得、複数人の一覧表示など、「実際に使えるアプリ」に近づけていきます。


