現在の見出し:2.2節:年齢概算計算
見出し一覧
- 2.2節:年齢概算計算
- - 生年月日からの年齢計算実装
- - 年齢情報の表示改良
【PR】『Python』を学べる企業・個人向けのプログラミングコース
生年月日からの年齢計算実装
前節(第2章2.1節)で作成したコードを基盤として、生年月日からの年齢計算機能を追加します。これまでの日数差計算では任意の2つの日付間の差を求めていましたが、年齢計算では生年月日から現在日付までの年数を正確に算出する必要があります。年齢計算では単純な年の差だけでなく、月日の比較による年齢調整処理が重要になります。
年齢計算の実装では、まず現在日付と生年月日の入力を受け付け、算術演算子算術演算子は数値の計算を行うための記号や命令です。で基本的な年齢を計算します。その後、条件分岐条件分岐はプログラム内で指定した条件によって処理の分岐を行う制御構造です。を使用して現在の月日と誕生月日を比較し、まだ誕生日が来ていない場合は年齢を1減算する調整処理を行います。この処理により正確な年齢を計算できるようになります。
以下が前節で作成したコードに、生年月日からの年齢計算機能を追加したプログラムプログラムはコンピュータに対して何をすべきかを指示する一連の命令です。です。日数差計算と年齢計算の両方の機能を含む実用的な日付計算ツールが完成します。
# コード
print("=== 日付データ入力ツール ===")
year = int(input("年を入力してください: "))
month = int(input("月を入力してください: "))
day = int(input("日を入力してください: "))
print(f"入力された日付データ: {year}年{month}月{day}日")
print("\n=== 日付表示フォーマット ===")
print(f"標準形式: {year}/{month:02d}/{day:02d}")
print(f"ハイフン形式: {year}-{month:02d}-{day:02d}")
print(f"日本語形式: {year}年{month:02d}月{day:02d}日")
print(f"アメリカ形式: {month:02d}/{day:02d}/{year}")
print("\n=== 入力値検証 ===")
month_valid = month >= 1 and month <= 12
day_valid = day >= 1 and day <= 31
all_valid = month_valid and day_valid
if all_valid:
print(f"✓ 検証結果: 正常な日付です")
print(f"✓ 検証済み日付: {year}/{month:02d}/{day:02d}")
print(f"✓ この日付は日付計算処理で使用できます")
print("\n=== 日数差計算機能 ===")
target_year = int(input("比較対象の年を入力してください: "))
target_month = int(input("比較対象の月を入力してください: "))
target_day = int(input("比較対象の日を入力してください: "))
year_diff = target_year - year
month_diff = target_month - month
day_diff = target_day - day
total_days = year_diff * 365 + month_diff * 30 + day_diff
print(f"\n=== 日数差計算結果 ===")
print(f"開始日: {year}/{month:02d}/{day:02d}")
print(f"終了日: {target_year}/{target_month:02d}/{target_day:02d}")
print(f"\n=== 計算内訳 ===")
print(f"年差: {year_diff}年 → {year_diff * 365}日")
print(f"月差: {month_diff}月 → {month_diff * 30}日")
print(f"日差: {day_diff}日")
print(f"合計: {total_days}日")
print(f"\n=== 詳細結果 ===")
if total_days > 0:
print(f"結果: 終了日は開始日の{total_days}日後です")
elif total_days < 0:
abs_days = -total_days
print(f"結果: 終了日は開始日の{abs_days}日前です")
else:
print(f"結果: 2つの日付は同じ日です")
print("\n=== 年齢計算機能 ===")
birth_year = int(input("生年月日の年を入力してください: "))
birth_month = int(input("生年月日の月を入力してください: "))
birth_day = int(input("生年月日の日を入力してください: "))
current_year = int(input("現在日付の年を入力してください: "))
current_month = int(input("現在日付の月を入力してください: "))
current_day = int(input("現在日付の日を入力してください: "))
basic_age = current_year - birth_year
if current_month < birth_month:
age = basic_age - 1
elif current_month == birth_month and current_day < birth_day:
age = basic_age - 1
else:
age = basic_age
print(f"\n=== 年齢計算結果 ===")
print(f"生年月日: {birth_year}/{birth_month:02d}/{birth_day:02d}")
print(f"現在日付: {current_year}/{current_month:02d}/{current_day:02d}")
print(f"計算結果: {age}歳")
else:
print(f"✗ 検証結果: 無効な日付が入力されました")
print(f"✗ 入力値: {year}年{month}月{day}日")
if not month_valid and not day_valid:
print(f"✗ 複数エラー: 月と日の両方が無効です")
print(f" - 月: {month} → 1から12の範囲で入力してください")
print(f" - 日: {day} → 1から31の範囲で入力してください")
elif not month_valid:
print(f"✗ 月のエラー: {month}は無効です")
print(f" → 1から12の範囲で入力してください")
elif not day_valid:
print(f"✗ 日のエラー: {day}は無効です")
print(f" → 1から31の範囲で入力してください")
print(f"✗ 日付計算処理を実行できません")
# 実行結果
=== 日付データ入力ツール ===
年を入力してください: 2025
月を入力してください: 7
日を入力してください: 18
入力された日付データ: 2025年7月18日
=== 日付表示フォーマット ===
標準形式: 2025/07/18
ハイフン形式: 2025-07-18
日本語形式: 2025年07月18日
アメリカ形式: 07/18/2025
=== 入力値検証 ===
✓ 検証結果: 正常な日付です
✓ 検証済み日付: 2025/07/18
✓ この日付は日付計算処理で使用できます
=== 日数差計算機能 ===
比較対象の年を入力してください: 2025
比較対象の月を入力してください: 12
比較対象の日を入力してください: 25
=== 日数差計算結果 ===
開始日: 2025/07/18
終了日: 2025/12/25
=== 計算内訳 ===
年差: 0年 → 0日
月差: 5月 → 150日
日差: 7日
合計: 157日
=== 詳細結果 ===
結果: 終了日は開始日の157日後です
=== 年齢計算機能 ===
生年月日の年を入力してください: 2000
生年月日の月を入力してください: 10
生年月日の日を入力してください: 15
現在日付の年を入力してください: 2025
現在日付の月を入力してください: 7
現在日付の日を入力してください: 18
=== 年齢計算結果 ===
生年月日: 2000/10/15
現在日付: 2025/07/18
計算結果: 24歳
行数 | 種別 | コード | 解説 |
---|---|---|---|
45行目 | 新規 | print("\n=== 年齢計算機能 ===") |
年齢計算機能のセクション開始を示すタイトルを表示 |
46行目 | 新規 | birth_year = int(input("生年月日の年を入力してください: ")) |
input() 関数関数は一定の処理をまとめたプログラムの塊です。で生年月日の年を文字列文字列は文字の並びを表現するデータ型で、テキストデータを扱うための基本的な構造として広く使用されています。として入力し、int() 関数で整数型に変換してbirth_year 変数変数はデータを一時的に記憶しておく場所です。に代入代入は変数に値を割り当てる操作です。 |
47行目 | 新規 | birth_month = int(input("生年月日の月を入力してください: ")) |
input() 関数で生年月日の月を文字列として入力し、int() 関数で整数型に変換してbirth_month 変数に代入 |
48行目 | 新規 | birth_day = int(input("生年月日の日を入力してください: ")) |
input() 関数で生年月日の日を文字列として入力し、int() 関数で整数型に変換してbirth_day 変数に代入 |
50行目 | 新規 | current_year = int(input("現在日付の年を入力してください: ")) |
input() 関数で現在日付の年を文字列として入力し、int() 関数で整数型に変換してcurrent_year 変数に代入 |
51行目 | 新規 | current_month = int(input("現在日付の月を入力してください: ")) |
input() 関数で現在日付の月を文字列として入力し、int() 関数で整数型に変換してcurrent_month 変数に代入 |
52行目 | 新規 | current_day = int(input("現在日付の日を入力してください: ")) |
input() 関数で現在日付の日を文字列として入力し、int() 関数で整数型に変換してcurrent_day 変数に代入 |
54行目 | 新規 | basic_age = current_year - birth_year |
算術演算子の減算を使用して現在年から生年を引いた基本的な年齢を計算し、basic_age 変数に代入 |
56行目 | 新規 | if current_month < birth_month: |
if 文と比較演算子比較演算子は二つの値を比較する際に使用する記号です。を使用して現在月が誕生月より小さい場合の処理を開始 |
57行目 | 新規 | age = basic_age - 1 |
誕生月がまだ来ていない場合、算術演算子で基本年齢から1を減算してage 変数に代入 |
58行目 | 新規 | elif current_month == birth_month and current_day < birth_day: |
elif 文と比較演算子、論理演算子論理演算子は真偽値(True/False)を扱う際に用いられる記号やキーワードです。and を使用して現在月が誕生月と同じで現在日が誕生日より小さい場合の処理 |
59行目 | 新規 | age = basic_age - 1 |
誕生日がまだ来ていない場合、算術演算子で基本年齢から1を減算してage 変数に代入 |
60行目 | 新規 | else: |
else 文を使用して誕生日が既に過ぎている場合の処理を開始 |
61行目 | 新規 | age = basic_age |
誕生日が過ぎている場合、基本年齢をそのままage 変数に代入 |
63行目 | 新規 | print(f"\n=== 年齢計算結果 ===") |
年齢計算結果の表示セクション開始を示すタイトルを表示 |
64行目 | 新規 | print(f"生年月日: {birth_year}/{birth_month:02d}/{birth_day:02d}") |
f-stringと書式指定:02d を使用して生年月日を統一フォーマットで表示 |
65行目 | 新規 | print(f"現在日付: {current_year}/{current_month:02d}/{current_day:02d}") |
f-stringと書式指定:02d を使用して現在日付を統一フォーマットで表示 |
66行目 | 新規 | print(f"計算結果: {age}歳") |
f-stringを使用して計算された年齢を「○○歳」の形式で表示 |
- 変数と代入:Pythonマスター講座 第2章2.2節Pythonマスター講座第2章 2.2節では、Pythonの変数に関する内容を学べますで解説
- データ型データ型はプログラミングで変数やオブジェクトが保持できる値の種類を定義するもので、適切な選択によりメモリ使用量やプログラム効率を最適化できます。とリテラル:Pythonマスター講座 第2章2.3節Pythonマスター講座第2章 2.3節では、Pythonのデータ型に関する内容を学べますで解説
- 演算子演算子は数値や文字列などのデータを扱う際に使用される記号や記述方法です。と式:Pythonマスター講座 第2章2.4節Pythonマスター講座第2章 2.4節では、Pythonの演算子に関する内容を学べますで解説
- 文字列:Pythonマスター講座 第2章2.5節Pythonマスター講座第2章 2.5節では、Pythonの文字列操作に関する内容を学べますで解説
- 条件分岐(if文):Pythonマスター講座 第3章3.2節Pythonマスター講座第3章 3.2節では、Pythonの条件分岐に関する内容を学べますで解説