はじめに
これまでの学習では、
- 計算結果を
dictにまとめる - ログ出力を関数にして再利用する
といった形で、
「ログをきれいに出す仕組み」 を作ってきました。
今回は一歩進めて、
ログのレベル(OK / WARN / ERROR)を
数値から自動で切り替える
ことをテーマに学習します。
人が判断していた部分を
コードに任せる練習 です。

今回のゴール
今回の学習ゴールは以下です。
- 平均値(avg)を条件で判定する
- 条件に応じてログレベルを決める
stats['level']を自動で更新する- 既存のログ出力関数と組み合わせて使う
👉 「判断をコードにする」感覚をつかむこと が目的です。
使用するデータ
今回も、これまで使ってきた stats を利用します。
stats = {
'count': 20,
'sum': 980,
'avg': 49,
'level': 'WARN'
}
最初は level を仮で入れていますが、
最終的には avg の値から自動で決まる ようにします。
ログレベルの判定ルール
今回は次のルールで判定します。
| avg の値 | level |
|---|---|
| 70以上 | OK |
| 50以上 | WARN |
| 50未満 | ERROR |
このルールを if / elif / else で表現します。
ログレベルを自動で切り替えるコード
if stats['avg'] >= 70:
stats['level'] = 'OK'
elif stats['avg'] >= 50:
stats['level'] = 'WARN'
else:
stats['level'] = 'ERROR'
ポイント
stats['avg']の値を条件に使う- 条件に合った
levelを代入する - 人が判断せず、コードが決める
ログ出力関数と組み合わせる
前回作成したログ出力関数と組み合わせます。
def log_stats(stats):
message = f"[{stats['level']}]"
for key, value in stats.items():
if key != 'level':
message += f" {key}={value}"
print(message)
判定後に関数を呼び出します。
log_stats(stats)
出力例
[WARN] count=20 sum=980 avg=49
avg の値に応じて、
ログレベルが自動で切り替わっていることが分かります。
なぜ「自動で切り替える」のか
この仕組みを作ることで、
- 毎回レベルを手で決めなくていい
- 判断基準がコードに残る
- 同じルールで何度でも使える
というメリットがあります。
👉 「人が考える → コードが判断する」
これがプログラミングの大きな価値です。
今回の学び
- if 文で条件をコードに落とし込める
- 数値から状態(レベル)を決められる
- dict の値を書き換えることで状態管理ができる
- ログ出力がより実務っぽくなった
次回に向けて
次回は、
- 判定処理も関数にまとめる
- 複数データに使える形にする
- ログ設計をさらに整理する
などに進めそうです。
まとめ
- ログの「形」は関数で統一
- ログの「意味」は条件で自動判定
- 判断をコードに任せることで再利用性が上がる
少しずつですが、
実務で使われる考え方に近づいてきました。


コメント