【初心者向け】Pythonのif文が感覚でわかる条件分岐入門

Pythonのif文の基本について学ぶ ハナマルコ アイキャッチ

こんにちは、Python初心者のハナマルコです。
チャッピー先生と二人三脚で、今日もPythonの冒険に出かけます。

前回は、プログラミング人生初のコードとして「変数」を学び、自己紹介プログラムを完成させました。
そして今日は、ついにプログラムが「考える」力を持つ瞬間
そう、「条件分岐」=if文に初挑戦です.

この記事の内容
  • 「ifって結局なに?」が、毎日の生活例でスッと理解できる
  • ありがちなミス(= と ==/インデント)を先回りで回避できる
  • 応用:三項演算子(1行if)と match-case が理解できる
  • ミニチャレンジで「自分で書けた!」を体験、FAQで疑問も解決
読みたいところに飛べる目次

日常の「もし〜なら」をコードにする

「もし雨なら傘を持つ。晴れなら帽子をかぶる。」——この“条件の分岐”が if文 です。

ハナマルコ

今日は雨が降ったら長靴、降らなかったらスニーカーにしようかな。

チャッピー先生

その“もし雨なら…”が、まさに if 文です。Pythonで書くとこうなります。

weather = "rain"

if weather == "rain":
    print("長靴を履いて、傘を持って出かけよう!")
else:
    print("スニーカーでOK!")

実行結果:

長靴を履いて、傘を持って出かけよう!

まずは形を覚えちゃおう:if / elif / else の基本構文

Pythonでは インデント(字下げ)とコロン(:) がとても大切。形を丸ごと覚えるのが近道です。

if 条件式:
    # 条件が True(真)のときに実行する処理
elif 別の条件式:
    # 最初の条件が False(偽)で、こちらが True のときに実行
else:
    # どの条件にも当てはまらないときに実行

例:テストの点数でメッセージを変えよう

score = 78

if score >= 80:
    print("合格!よく頑張りました")
elif score >= 60:
    print("惜しい!あと少しで合格")
else:
    print("残念…次は一緒に復習しよう")

# 出力:惜しい!あと少しで合格

実行結果:

惜しい!あと少しで合格
if文のelifとelseの処理を解説
if文のelifとelseの処理を解説する

条件式に使う“素材”を知ろう:比較演算子とブール値

条件式の中では True(真) / False(偽) に評価される式を書きます。代表的なのが 比較演算子

演算子読み方・意味結果
==等しい3 == 3True
!=等しくない3 != 2True
>より大きい5 > 2True
<より小さい5 < 2False
>=以上(大きいか等しい)7 >= 7True
<=以下(小さいか等しい)4 <= 3False
ハナマルコ

あーなんとなく見たことあるかもって記号ですね。

age = 20
print(age >= 18) 

実行結果:

True

このコードの意味は、20歳は18歳以上ですか?となりますので実行結果は正しい(True)になります。

値の名前意味Pythonでの表記
正しいTrue
間違っているFalse
  • True:これは「はい」や「その通り」といった意味
  • False:これは「いいえ」や「ちがうよ」といった意味
  • = は「代入」=右側の値を左の変数に入れる
  • == は「比較」=左右が同じ値かどうかをチェック
    → よく混同されるので、if文の中は必ず == で比較しましょう。

条件を組み合わせる:and / or / not

単純な条件が増えてくると「しかも」「または」「〜ではない」という組み合わせが必要になります。そこで 論理演算子 の出番です。

演算子読み方Trueになる条件
andかつage >= 18 and country == "JP"どちらの条件もTrue
orまたはscore >= 80 or coupon == Trueどちらか一方でもTrue
notではないnot is_logged_in条件がFalseならTrue(True⇔False反転)
age = 17
country = "JP"

if age >= 18 and country == "JP":
    print("成人で、日本在住ですね")
else:
    print("条件に当てはまらないです")

出力結果:

条件に当てはまらないです

ネスト(ifの中にif)はほどほどに:読みやすさが命

処理が複雑になってくると、ついifの中にifを入れたくなります。が、深すぎる入れ子は読みづらい原因です。

次のコードは、ユーザーのログイン状態と管理者権限の有無によって表示するメッセージを切り替える処理です。

①BEFORE:ネストが深い例(読みづらい)

if logged_in:
    if is_admin:
        print("管理者ページへアクセス")
    else:
        print("一般ユーザーページへアクセス")
else:
    print("ログインしてください")

コードの解説:

  1. if logged_in:
    • ユーザーがログインしているかどうかを判定。
    • True(ログインしている)なら、次の条件へ進みます。
    • False(ログインしていない)なら、最後の else: に移ります。
  2. ネストされた if is_admin:
    • ログイン済みのユーザーが「管理者かどうか」を判定します。
    • True なら:「管理者ページへアクセス」と表示。
    • False なら:「一般ユーザーページへアクセス」と表示。
  3. 最終的な表示:
    • 未ログインなら:「ログインしてください」

②AFTER:論理演算子でフラット化(すっきり読みやすい)

if not logged_in:
    print("ログインしてください")
elif is_admin:
    print("管理者ページへアクセス")
else:
    print("一般ユーザーページへアクセス")

ネストを浅くして、可読性が高い書き方にしています。

条件分岐が深いと読みづらくなる
条件分岐が深いと読みづらくなる

よくあるミスを先に知っておこう

ミス1:=== の取り違え

x = 10
if x = 5:  # ← SyntaxError(代入しちゃってる)
    print("xは5です")

→ if文には必ず == を使う!

x = 10
if x == 5: 
    print("xは5です")

ミス2:インデントがずれる

if True:
print("Hello")  # ← ここにインデントがないのでエラー

→ Pythonはインデントでブロックを判断します。スペース4つで統一しましょう。

if True:
    print("Hello") 

elif を使わず if を連続

score = 85
if score >= 90:
    print("A")
if score >= 80:
    print("B")  # AもBも出る可能性あり

→排他的な条件は elif に置き換えよう。

score = 85
if score >= 90:
    print("A")
elif score >= 80:
    print("B") 
else:
    print("C")

【FAQ①】学習途中でよく出る疑問

if文の中にif文を書いてもいいの?

OKですが、深くすると読みにくい。論理演算子や関数を検討しましょう。

if 条件: 処理 を1行で書いても大丈夫?

実は書けますが、読みづらければ逆効果。短い処理以外は避けよう。

True/Falseっていつ出てくるの?

比較や論理演算子の結果として自然に出ます。自分で変数に入れて使ってもOK!

文字列やリストが空かどうかを判定したい

if not name: のように書けます。空文字 "" や空リスト [] は False と見なされます。

ミニチャレンジ:ログイン判定プログラムを作ろう!

チャッピー先生

今まで学習したことを思い出して簡単なコードを書いてきましょう。

ログイン判定プログラム

  • ユーザー名(username)とパスワード(password)を入力させる
  • 正しい組み合わせなら「ログイン成功」
  • どちらかが間違いなら「ユーザー名またはパスワードが違います」
  • 3回失敗したら「アカウントがロックされました」と表示

ヒント:while か for のループと if を組み合わせます

解答例
CORRECT_USER = "hanamaruko"
CORRECT_PASS = "python123"

attempts = 0
MAX_ATTEMPTS = 3

while attempts < MAX_ATTEMPTS:
    username = input("ユーザー名: ")
    password = input("パスワード: ")

    if username == CORRECT_USER and password == CORRECT_PASS:
        print("ログイン成功!ようこそ、ハナマルコさん")
        break
    else:
        attempts += 1
        print("ユーザー名またはパスワードが違います。残りチャンス:", MAX_ATTEMPTS - attempts)

else:
    # while が break されずに終わったときに実行
    print("アカウントがロックされました。サポートに連絡してください")

【FAQ②】チャレンジ後の疑問に答えます

while ループの else ってなに?

ループがbreakされず正常終了したときだけ実行される“おまけ”ブロックです。

入力が数字かどうかを判定したい!

str.isdigit() で数字か確認、または try-exceptint() 変換を試みる方法があります。

複雑な条件分岐が増えてきた…

関数に分ける/辞書でマッピング/クラス化など、設計を見直すとスッキリします。

応用:1行で書ける三項演算子(ワンライナーif)

短い条件分岐なら1行にまとめることも可能。

message = "合格" if score >= 60 else "不合格"
print(message)
チャッピー先生

読みやすさを最優先。複雑な条件は普通のif文にしましょう。

Python 3.10以降なら match-case も知っておこう

status_code = 404

match status_code:
    case 200:
        print("OK")
    case 301 | 302:
        print("Redirect")
    case 404:
        print("Not Found")
    case _:
        print("Unknown Status")

まとめ

  • if文は「条件がTrueなら実行する」シンプルな仕組み。elifelseを組み合わせよう。
  • 比較演算子・論理演算子で、現実の複雑な条件をそのまま表現できる。
  • ミスの芽(=`と==、インデント)を最初から潰しておくと上達が早い!
  • 三項演算子やmatch-caseなどのテクニックも、必要に応じて覚えていこう。
  • とにかく 手を動かす のが最短コース。ミニチャレンジで実感できたはず。

最後まで読んでいただき、ありがとうございました!

実践シリーズ(初級編)で学習を続ける:
Pythonって何?初心者にやさしく解説
Pythonで割り勘と時間計算アプリ
Pythonの変数とは?初心者向け入門
Pythonのif文で条件分岐を学ぼう 今ココ
Pythonのfor文とrangeの使い方を学ぶ

Python初心者にオススメの入門書を正直レビューしました:
【超正直レビュー】Python初心者が『Python1年生』読んでみた

当ブログは基本的にリンクフリーです。リンクを行う場合の許可や連絡は不要です。

Pythonのif文の基本について学ぶ ハナマルコ アイキャッチ

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
読みたいところに飛べる目次