こんにちは、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("残念…次は一緒に復習しよう")
# 出力:惜しい!あと少しで合格
実行結果:
惜しい!あと少しで合格


条件式に使う“素材”を知ろう:比較演算子とブール値
条件式の中では True(真) / False(偽) に評価される式を書きます。代表的なのが 比較演算子。
演算子 | 読み方・意味 | 例 | 結果 |
---|---|---|---|
== | 等しい | 3 == 3 | True |
!= | 等しくない | 3 != 2 | True |
> | より大きい | 5 > 2 | True |
< | より小さい | 5 < 2 | False |
>= | 以上(大きいか等しい) | 7 >= 7 | True |
<= | 以下(小さいか等しい) | 4 <= 3 | False |



あーなんとなく見たことあるかもって記号ですね。
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("ログインしてください")
コードの解説:
if logged_in:
- ユーザーがログインしているかどうかを判定。
True
(ログインしている)なら、次の条件へ進みます。False
(ログインしていない)なら、最後のelse:
に移ります。
- ネストされた
if is_admin:
- ログイン済みのユーザーが「管理者かどうか」を判定します。
True
なら:「管理者ページへアクセス」と表示。False
なら:「一般ユーザーページへアクセス」と表示。
- 最終的な表示:
- 未ログインなら:「ログインしてください」
②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回失敗したら「アカウントがロックされました」と表示
解答例
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-except
でint()
変換を試みる方法があります。 - 複雑な条件分岐が増えてきた…
-
関数に分ける/辞書でマッピング/クラス化など、設計を見直すとスッキリします。
応用: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なら実行する」シンプルな仕組み。
elif
、else
を組み合わせよう。 - 比較演算子・論理演算子で、現実の複雑な条件をそのまま表現できる。
- ミスの芽(=`と==、インデント)を最初から潰しておくと上達が早い!
- 三項演算子や
match-case
などのテクニックも、必要に応じて覚えていこう。 - とにかく 手を動かす のが最短コース。ミニチャレンジで実感できたはず。
最後まで読んでいただき、ありがとうございました!
実践シリーズ(初級編)で学習を続ける:
ー Pythonって何?初心者にやさしく解説
ー Pythonで割り勘と時間計算アプリ
ー Pythonの変数とは?初心者向け入門
ー Pythonのif文で条件分岐を学ぼう 今ココ
ー Pythonのfor文とrangeの使い方を学ぶ
Python初心者にオススメの入門書を正直レビューしました:
ー 【超正直レビュー】Python初心者が『Python1年生』読んでみた