現在の見出し:1.2節:日付データの検証
見出し一覧
- 1.2節:日付データの検証
- - 入力値検証処理の実装
- - エラーメッセージ表示の追加
【PR】『Python』を学べる企業・個人向けのプログラミングコース
入力値検証処理の実装
前節(第1章 1.1節)で作成したコードを基盤として、入力値検証処理を実装します。
現在のコードでは、ユーザーが「13月」や「32日」のような無効な値を入力しても、そのまま処理が続行されてしまいます。実用的な日付計算ツールを構築するためには、入力された値が適切な範囲内にあるかを検証する機能が必要です。
入力値検証処理では、比較演算子比較演算子は二つの値を比較する際に使用する記号です。とifif文はプログラムで条件分岐を行うための命令文です。文を使用して月の値が1から12の範囲内、日の値が1から31の範囲内にあることを確認します。論理演算子論理演算子は真偽値(True/False)を扱う際に用いられる記号やキーワードです。andを使用して複数の条件を組み合わせることで、より厳密な検証処理を実装できます。
# コード
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}")
else:
print(f"検証結果: 無効な日付です")
if not month_valid:
print(f"月のエラー: {month}は無効です(1-12で入力してください)")
if not day_valid:
print(f"日のエラー: {day}は無効です(1-31で入力してください)")
# 実行結果
=== 日付データ入力ツール ===
年を入力してください: 2025
月を入力してください: 13
日を入力してください: 32
入力された日付データ: 2025年13月32日
=== 日付表示フォーマット ===
標準形式: 2025/13/32
ハイフン形式: 2025-13-32
日本語形式: 2025年13月32日
アメリカ形式: 13/32/2025
=== 入力値検証 ===
検証結果: 無効な日付です
月のエラー: 13は無効です(1-12で入力してください)
日のエラー: 32は無効です(1-31で入力してください)
行数 | 種別 | コード | 解説 |
---|---|---|---|
14行目 | 新規 | month_valid = month >= 1 and month <= 12 |
比較演算子と論理演算子andを使用して月の値が1以上12以下の範囲内かを検証し、結果をbool型変数変数はデータを一時的に記憶しておく場所です。に格納 |
15行目 | 新規 | day_valid = day >= 1 and day <= 31 |
比較演算子と論理演算子andを使用して日の値が1以上31以下の範囲内かを検証し、結果をbool型変数に格納 |
16行目 | 新規 | all_valid = month_valid and day_valid |
論理演算子andを使用して月と日の両方が有効な場合のみTrueになる総合的な検証結果を作成 |
18行目 | 新規 | if all_valid: |
if文を使用して全ての検証が成功した場合の処理を開始 |
19行目 | 新規 | print(f"検証結果: 正常な日付です") |
f-stringを使用して検証成功時のメッセージを表示 |
20行目 | 新規 | print(f"検証済み日付: {year}/{month:02d}/{day:02d}") |
f-stringと書式指定:02dを使用して検証済みの日付を統一フォーマットで表示 |
21行目 | 新規 | else: |
else文を使用して検証が失敗した場合の処理を開始 |
22行目 | 新規 | print(f"検証結果: 無効な日付です") |
f-stringを使用して検証失敗時のメッセージを表示 |
23行目 | 新規 | if not month_valid: |
if文とnot演算子演算子は数値や文字列などのデータを扱う際に使用される記号や記述方法です。を使用して月の検証が失敗した場合の処理を開始 |
24行目 | 新規 | print(f"月のエラー: {month}は無効です(1-12で入力してください)") |
f-stringを使用して月の値が無効な場合の具体的なエラーメッセージを表示 |
25行目 | 新規 | if not day_valid: |
if文とnot演算子を使用して日の検証が失敗した場合の処理を開始 |
26行目 | 新規 | print(f"日のエラー: {day}は無効です(1-31で入力してください)") |
f-stringを使用して日の値が無効な場合の具体的なエラーメッセージを表示 |
- 演算子と式:Pythonマスター講座 第2章2.4節Pythonマスター講座第2章 2.4節では、Pythonの演算子に関する内容を学べますで解説
- 条件分岐条件分岐はプログラム内で指定した条件によって処理の分岐を行う制御構造です。(if文):Pythonマスター講座 第3章3.2節Pythonマスター講座第3章 3.2節では、Pythonの条件分岐に関する内容を学べますで解説
- 文字列文字列は文字の並びを表現するデータ型で、テキストデータを扱うための基本的な構造として広く使用されています。フォーマット「f-string」:Pythonマスター講座 第2章2.5節Pythonマスター講座第2章 2.5節では、Pythonの文字列操作に関する内容を学べますで解説