Pythonのif
文は、条件に応じて処理を分けるための最も基本的な制御構文です。
初心者の方がつまずきやすいインデントやコロンの書き方、比較演算子の使い方、よくあるエラーまで、動くサンプルコードと出力例を交えながら丁寧に解説します。
この記事だけで基本をしっかり身につけられます。
Pythonのif文とは?
if文は「ある条件が真(True)ならこの処理を実行する」という分岐の仕組みです。
Pythonではブロックの開始を表す:
(コロン)と、インデント(字下げ)で処理のまとまりを表現します。
中括弧を使わないため、読みやすさと書きやすさが特長です。
- 条件が1つだけのときは
if
を使います。 - 条件が複数あるときは
elif
(else ifの略)で追加できます。 - どれにも当てはまらない場合の処理は
else
で書きます。
インデントはスペース4つが推奨です。
タブとスペースの混在はエラーの原因になります。
Python if文の書き方と使い方(基本構文)
基本構文の形
Pythonのif文の基本形をまず確認します。
コロンとインデントに注目してください。
# if / elif / else の基本形
x = 10 # 判定する値
if x > 10: # 条件1 (True のときこのブロックが実行される)
print("10より大きい")
elif x == 10: # 条件2 (上がFalseで、これがTrueのとき実行)
print("ちょうど10")
else: # どの条件にも当てはまらないとき
print("10未満")
# ネスト(入れ子)の例
y = -3
if y >= 0:
if y % 2 == 0:
print("yは0以上かつ偶数")
else:
print("yは0以上かつ奇数")
else:
print("yは負の数")
ちょうど10
yは負の数
サンプルコード(数値の比較)
数値の大小や等しいかどうかを比較して分岐する典型例です。
試験の点数をランク分けします。
# スコアに応じて評価を分ける
score = 85
if score >= 90:
print("評価: A")
elif score >= 70: # ここに到達した時点で score < 90 が確定
print("評価: B")
elif score >= 50:
print("評価: C")
else:
print("評価: D")
評価: B
サンプルコード(文字列の空チェック)
空文字はFalseとして扱われるため、存在チェックがシンプルに書けます。
# 文字列が空かどうかで分岐
name = "Alice"
if name: # 空でなければTrue
print(f"こんにちは、{name}さん")
else:
print("名前が空です")
# 逆に「空なら」を判定したいとき
name2 = ""
if not name2: # not をつけると「空ならTrue」
print("name2 は空です")
# len(...) を使った書き方(動作は同じ)
# ※len()は文字数をカウントする関数
msg = "hi"
if len(msg) > 0:
print("msgは空ではありません")
こんにちは、Aliceさん
name2 は空です
msgは空ではありません
サンプルコード(inputの値で分岐)
inputの戻り値は文字列です。
数値として比較したいときはint(...)
で変換します。
安全のためtry/except
で数値以外の入力も扱います。
# 年齢の入力によって分岐する例
raw = input("年齢を入力してください: ") # 文字列として受け取る
try:
age = int(raw) # 数値に変換
if age >= 20:
print("成人です")
else:
print("未成年です")
except ValueError:
print("数値を入力してください")
年齢を入力してください: 18
未成年です
年齢を入力してください: abc
数値を入力してください
条件式の作り方と比較演算子
比較演算子(==, !=, >, >=, <, <=)
代表的な比較演算子と意味、簡単な評価例をまとめます。
演算子 | 意味 | 例 | 評価結果 |
---|---|---|---|
== | 等しい | 3 == 3 | True |
!= | 等しくない | 3 != 5 | True |
> | より大きい | 5 > 3 | True |
>= | 以上 | 5 >= 5 | True |
< | より小さい | 2 < 10 | True |
<= | 以下 | 2 <= 1 | False |
複数の比較をつなげる連鎖比較も可能です。
例えば20 <= age < 65
は、age
が20以上かつ65未満を表します。
真偽値と空の値(Falseになるもの)
Pythonでは「空」を表す多くの値がFalseとみなされます。
if文ではその性質を活用できます。
値 | 真偽値 |
---|---|
False | False |
None | False |
0 , 0.0 , 0j | False |
空文字"" | False |
空リスト[] 、空タプル() 、空辞書{} 、set() | False |
要素数0のrange(0) | False |
確認用の短いコードです。
values = [False, None, 0, 0.0, "", [], {}, set(), range(0)]
for v in values:
print(v, "->", bool(v))
False -> False
None -> False
0 -> False
0.0 -> False
-> False
[] -> False
{} -> False
set() -> False
range(0, 0) -> False
条件式でよく使うパターン
実用でよく使う書き方をまとめて示します。
email = "user@example.com"
age = 30
x = 6
items = []
# 文字列内に特定の文字が含まれるか
if "@" in email:
print("メール形式らしい")
# 範囲チェック(連鎖比較がシンプル)
if 20 <= age < 65:
print("就業年齢層です")
# 複数条件の組み合わせ(and, or, not)
if x > 0 and x % 2 == 0:
print("xは正の偶数")
# コレクションが空かどうか
if not items: # 空ならTrue
print("itemsは空です")
# Noneチェックは 'is' を使うのがPythonic
value = None
if value is None:
print("値はNoneです")
メール形式らしい
就業年齢層です
xは正の偶数
itemsは空です
値はNoneです
「Noneとの比較はis
を使う」のが慣例です。
等価性==
ではなく、is
で同一オブジェクトかを確かめます。
Python if文のエラーと落とし穴
コロン忘れとSyntaxError
Pythonではブロックの前に:
が必須です。
忘れると構文エラーになります。
# NG: コロン忘れ
# if True の末尾に : を付けていない
# if True
# print("OK")
# OK: コロンを付ける
if True:
print("OK")
エラーメッセージ例(NGの場合)
File "example.py", line 3
if True
^
SyntaxError: expected ':'
出力例(OKの場合)
OK
コロンとインデントはセットと覚えると防げます。
インデントの混在(Tabとスペース)
タブとスペースを混在させるとTabError
になります。
必ずスペース4つに統一しましょう。
# NGの例(説明用の擬似コード: 1行目はタブ、2行目はスペースでインデント)
def greet():
# ↑タブ
print("Hello") # ↑スペース
greet()
エラーメッセージ例
TabError: inconsistent use of tabs and spaces in indentation
対策として、エディタの設定で「インデント=スペース」「幅=4」に固定するのが安全です。
代入(=)と比較(==)の取り違え
条件式で=
は使えません。
=
は代入、==
が比較です。
代入を書いてしまうと構文エラーになります。
# NG
# x = 1
# if x = 1: # ← ここが間違い(= は代入)
# print("一致")
# OK
x = 1
if x == 1: # ← == で比較
print("一致")
エラーメッセージ例(NGの場合)
File "example.py", line 3
if x = 1:
^
SyntaxError: invalid syntax
出力例(OKの場合)
一致
文字列と数値の比較に注意
Python 3ではstr
とint
の大小比較はできません。
TypeError
になります。
# NG: 型が違うまま比較
# if "5" > 3:
# print("大きい")
# OK: 文字列を数値に変換してから比較
if int("5") > 3:
print("大きい")
エラーメッセージ例(NGの場合)
TypeError: '>' not supported between instances of 'str' and 'int'
出力例(OKの場合)
大きい
inputは文字列 → intに変換して比較
inputの戻り値は常に文字列です。
数値比較するにはint
などで変換しましょう。
変換せず比較するとエラーになります。
# NG: 変換せずに比較(説明用、実行するとエラー)
# age = input("年齢: ") # 例: "20"
# if age >= 18: # 右辺は int、左辺は str → 比較できない
# print("成人")
# OK: intで変換し、例外もケア
raw = input("年齢: ")
try:
age = int(raw)
if age >= 18:
print("成人")
else:
print("未成年")
except ValueError:
print("数字を入力してください")
エラーメッセージ例(NGの場合)
TypeError: '>=' not supported between instances of 'str' and 'int'
出力例(OKの場合)
年齢: 20
成人
小数を扱うときはfloat(raw)
、厳密な数値検証が必要なら正規表現や例外処理を組み合わせます。
まとめ
この記事ではPythonのif文の基本(書き方・比較演算子・空値の扱い)を、実行可能なサンプルとともに解説しました。
重要なのは、コロン:
とインデントを正しく書くこと、条件の型をそろえて比較すること、そして空の値を簡潔に判定する書き方を身につけることです。
特にinputは文字列という前提を忘れず、必要に応じてint
やfloat
に変換しましょう。
まずはここで覚えた基本パターン(数値の比較、文字列の空チェック、範囲判定、and/or/not
の組み合わせ)を、自分の小さなスクリプトに取り入れて慣れていくのがおすすめです。
慣れてきたら、他の制御構文(ループなど)と組み合わせることで、より実用的なプログラムを組み立てられるようになります。