【第5回】if文とfor文:ログから「意味」をすくい取る

Python入門

第3回では「変数とデータ型」で、コーヒー1杯分・釣り1回分のログを1件のデータとして表現しました。
第4回では「リストと辞書」で、複数件のログを「辞書のリスト」としてまとめて扱うところまで進みました。

ここまで来ると、Pythonの中にはたくさんの情報がたまっていきます。

  • 最近飲んだコーヒーたち
  • シーズン中の釣りログ

しかし、ただ溜めておくだけ ではちょっともったいない。
せっかくなら、

  • 「自分が本当に気に入ったコーヒーだけを見返したい」
  • 「50cm以上のブラウンだけを一覧にしたい」

そんな “意味のある切り取り方” をしたくなります。

そのときに活躍するのが、

  • if文(条件分岐)
  • for文(繰り返し)

という2つの構文です。

今回のゴールは、

「if × for を使って、ログから『自分にとって意味のあるものだけ』をすくい取れるようになること。」

難しい数式は一切出てきません。
湖のほとりで「これは残しておきたいな」と感じる瞬間と同じように、
データの中から「残したいもの」を選ぶ感覚を身につけていきます。

この回のゴールと全体像

第5回でできるようになってほしいことは、次の4つです。

  1. if文の基本的な書き方と「条件」の考え方がわかる
  2. 比較演算子(==, !=, >, < など)と論理演算子(and, or, not)がイメージできる
  3. for文でリストを1件ずつなめるイメージが持てる
  4. 「辞書のリスト」に対して if × for でフィルタリングができる

ここまで来れば、

  • 「スコアが○点以上のコーヒーだけ」
  • 「50cm以上の魚だけ」

といった、シンプルな分析や絞り込み ができるようになります。

if文とは?「〜だったらこうする」という分岐

if文は、

「もし〜だったら、こうする」

をPythonに伝えるための文です。

日常生活でも、

  • もし天気が良かったら、湖へ行く
  • もし雨なら、家で音楽を聴きながらコーヒーを淹れる

というように、条件によって行動を変えますよね。
それをそのままコードにしたのが if 文です。

if文の基本形

if 条件:
    実行したい処理

ポイントは3つ:

  • if のあとに「条件」を書いて、最後に :(コロン)
  • その下の行を インデント(字下げ) する(スペース4つ or Tab)
  • 条件が True のときだけ、インデントした行が実行される

例:評価の高いコーヒーだったらメッセージを出す

coffee_score = 4.5

if coffee_score >= 4.0:
    print("これはかなりお気に入りのコーヒーだ。ログに星マークをつけておこう。")

coffee_score >= 4.0True なら、print が実行されます。

比較演算子と論理演算子 条件の材料たち

if文の中で使う「条件」は、
比較演算子論理演算子 を組み合わせて書きます。

主な比較演算子

if文の中で使う「条件」は、
比較演算子論理演算子 を組み合わせて書きます。

==    左右が等しい
!=    左右が等しくない
>     左が右より大きい
>=    左が右以上
<     左が右より小さい
<=    左が右以下

例:魚のサイズで条件分岐

fish_length_cm = 52

if fish_length_cm >= 50:
    print("50アップ!うれしい一本だ。")

文字列の比較

coffee_origin = "エチオピア"

if coffee_origin == "エチオピア":
    print("今日もエチオピア。フルーティーな一杯になりそう。")

論理演算子(and / or / not)

条件を組み合わせたいときに使います。

and    両方とも True のときだけ True
or     どちらか一方でも True なら True
not    True / False を反転させる

例:エチオピアでスコア4.0以上なら「特にお気に入り」

coffee_origin = "エチオピア"
coffee_score = 4.5

if coffee_origin == "エチオピア" and coffee_score >= 4.0:
    print("エチオピアで4.0以上。かなりお気に入りの一杯。")

例:ブラウンかレイクなら「レイクトラウト系」とみなす(or)

fish_type = "ブラウントラウト"

if fish_type == "ブラウントラウト" or fish_type == "レイクトラウト":
    print("レイクトラウト系の魚だ。ファイトも強い。")

if / elif / else で「三択・多段階」の分岐

「Aならこれ」「Bならこれ」「それ以外ならこれ」というように、
条件がいくつか分かれている場合は elifelse を使います。

基本形

if 条件1:
    処理1
elif 条件2:
    処理2
else:
    それ以外のときの処理

例:コーヒーのスコアでコメントを変える

coffee_score = 3.8

if coffee_score >= 4.5:
    print("かなり特別な一杯。記念すべきレベル。")
elif coffee_score >= 4.0:
    print("安定して美味しい。リピートしたい。")
elif coffee_score >= 3.0:
    print("普通に美味しい。気分次第でまた飲むかも。")
else:
    print("好みとは少し違うかもしれない。")

for文とは?リストの中を「ひとつずつ」なめていく

次は for文(繰り返し) です。
これは、リストなどの「ならび」を ひとつずつ取り出して処理する ための構文です。

基本形

for 要素 in リスト:
    繰り返したい処理

例:コーヒー名のリストを1つずつ表示する

coffees = [
    "エチオピア浅煎り",
    "グアテマラ中煎り",
    "ケニア深煎り"
]

for name in coffees:
    print("最近飲んだコーヒー:", name)

name には、リストの中の要素が 順番に 入ってきます。

辞書のリスト × for文 – ログを1件ずつ扱う

第4回で作ったような「辞書のリスト」があるとしましょう。

coffee_logs = [
    {
        "date": "2025/05/01",
        "name": "エチオピア浅煎り",
        "score": 4.5
    },
    {
        "date": "2025/05/02",
        "name": "グアテマラ中煎り",
        "score": 4.0
    },
    {
        "date": "2025/05/03",
        "name": "ケニア深煎り",
        "score": 3.2
    }
]

これを for 文でなめて、1件ずつ表示してみます。

for log in coffee_logs:
    print("日付:", log["date"])
    print("名前:", log["name"])
    print("スコア:", log["score"])
    print("----------------")

log には、リストの中の 1件分の辞書 が順番に入ってきます。

if × for で「条件に合うものだけ」を抽出する

ここからが本番です。
for で1件ずつ取り出しつつ、if でふるいにかける ことで、

  • スコアが高いコーヒーだけ
  • 50cm以上の魚だけ

といった抽出ができるようになります。

スコア4.0以上のコーヒーだけ表示

for log in coffee_logs:
    if log["score"] >= 4.0:
        print("★ お気に入り候補")
        print("日付:", log["date"])
        print("名前:", log["name"])
        print("スコア:", log["score"])
        print("----------------")

if の条件に合ったログだけが表示されます。

50cm以上の魚だけを表示(釣りログ編)

fishing_logs = [
    {
        "date": "2025/04/29",
        "lake": "中禅寺湖",
        "fish_type": "ブラウントラウト",
        "fish_length_cm": 48,
        "is_released": True
    },
    {
        "date": "2025/05/01",
        "lake": "中禅寺湖",
        "fish_type": "ブラウントラウト",
        "fish_length_cm": 52,
        "is_released": True
    },
    {
        "date": "2025/05/05",
        "lake": "中禅寺湖",
        "fish_type": "レイクトラウト",
        "fish_length_cm": 60,
        "is_released": False
    }
]

print("50cm以上だけを表示")
print("===================")

for log in fishing_logs:
    if log["fish_length_cm"] >= 50:
        print("日付:", log["date"])
        print("魚種:", log["fish_type"])
        print("サイズ:", log["fish_length_cm"], "cm")
        print("リリース?:", log["is_released"])
        print("----------------")

こういう「条件で絞る処理」は、現実のデータ分析でも頻出です。
趣味ログの段階で慣れておくと、仕事でもすんなり応用できます。

break / continue で繰り返しを少しコントロールする

もう一歩だけ踏み込みたい人向けに、
for 文の中でよく使う breakcontinue も触れておきます。

break – そこで繰り返しを「終わらせる」

たとえば、「今シーズン最初に釣れた50cm以上の魚だけ知りたい」とします。
条件に合うものを1件見つけたら、そこでループを終わらせたい場合に break を使います。

for log in fishing_logs:
    if log["fish_length_cm"] >= 50:
        print("シーズン最初の50アップ:")
        print("日付:", log["date"])
        print("魚種:", log["fish_type"])
        print("サイズ:", log["fish_length_cm"], "cm")
        break  # ここでループを終了

continue – その1回だけ「スキップする」

一方、「リリースしていない魚は集計からスキップしたい」
といった場面では continue が使えます。

for log in fishing_logs:
    if not log["is_released"]:
        # リリースしていないので、この1件はスキップ
        continue

    # ここには「リリースした魚」だけが来る
    print("リリースした魚:", log["fish_type"], log["fish_length_cm"], "cm")

よくあるつまずきポイント(if & for 編)

初心者がハマりがちなポイントを、ここでまとめておきます。

  1. インデント(字下げ)をそろえ忘れる
    • if や for の中の行は、必ず同じ幅でインデントする
    • スペース4つ or Tab で統一する(混ざるとエラーのもと)
  2. :(コロン)の付け忘れ
    • if 条件: / for 〜 in 〜: の最後に : を忘れがち
  3. === の混同
    • = は「代入」(値を入れる)
    • == は「等しいかどうかの比較」
    • if の条件には == を使う
  4. キー名のスペルミス
    • log["fish_length_cm"] のように、辞書のキー名はスペルが1文字でも違うとエラー
    • 自分で決めたキー名をコピペする癖をつけると良い

今日のまとめ – 「条件」と「繰り返し」で世界を切り取る

今回は、

  • if文で「もし〜だったら、こうする」という分岐を書く
  • 比較演算子・論理演算子で条件を組み立てる
  • for文でリストや「辞書のリスト」を1件ずつ処理する
  • if × for で「条件に合うログだけ」を抽出する

というところまで進みました。

ここまでできると、Pythonの中で

  • 自分のお気に入りのコーヒーだけを一覧にしたり
  • 思い出に残る魚だけを抜き出したり

といった、「意味のある振り返り」 が一気にやりやすくなります。

それはまるで、
日記の中から「大切な一文」だけを拾い上げる作業に少し似ています。

次回予告 – ファイル(CSV)にログを書き出して残す

今までは、Pythonのコードの中にログを直接書いてきました。
次回からは、いよいよ

  • ファイル(特にCSV)への読み書き

に入っていきます。

  • 釣りログをCSVファイルに書き出しておく
  • コーヒーログをCSVから読み込んで集計する

などができるようになると、

「ノート」+「Python」+「ファイル」

を組み合わせた、かなり実用的なログシステムが見えてきます。

湖やコーヒータイムの記憶を、
そっとデータとして残していくための一歩として、
次回もゆっくり進んでいきましょう。

コメント