ログアウト中 ログイン

学習パッケージを選択

【Python】日付計算ツール開発講座 第2章2.2節「年齢概算計算」




現在の見出し: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を使用して計算された年齢を「○○歳」の形式で表示
年齢情報の表示改良

第2章2.2節「年齢情報の表示改良」の続きを見る


すべてのカリキュラムを無料登録で学ぶ

プログラミング・マーケティング・AI活用方法を
今すぐ無料登録すると、全てのコンテンツが視聴可能になります。