Pythonのif文は、特定の条件が真(True)の時に特定のコードを実行する制御フロー文です。
参考 Pythonとは?

"もし○○○なら●●●をする" というように、特定の条件を満たす場合にのみ行う処理を定義することができます。Pythonでも他の言語同様、if文は超・基本知識。
number = 10
if number > 5:
print("The number is greater than 5.")
# 変数numberが5より大きい場合、
# "The number is greater than 5."というメッセージが表示されます。
参考 print関数の使い方
このページではPython初心者向けにif文(条件分岐)の使い方を0からわかりやすくサンプルコード付きで解説します。
Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
Python:if文を利用した条件分岐
Pythonのif文は、特定の条件を満たすかどうかに基づいてプログラムの動作を決定するためのツールです。

これは「もし(if)この条件が真だったら、これをやる」という意味です。条件が偽の場合、if文の中のコードはスキップされます。
簡単な例を見てみましょう。
age = 18
if age >= 18: # もしageが18以上であれば
print("投票できます。") # "投票できます。"と表示する
上記のコードでは、ageという変数が18以上であるかどうかを確認しています。もしageが18以上であれば(つまり、条件が真であれば)、"投票できます。"というメッセージが表示されます。
参考 Pythonの変数の基本
if文には、さらに複雑な制御を可能にするためのelse(「もしifの条件が偽であれば、これをやる」)とelif(「もしifの条件が偽で、別の条件が真であれば、これをやる」)を加えることができます。
age = 15
if age >= 18: # もしageが18以上であれば
print("投票できます。") # "投票できます。"と表示する
else: # そうでなければ
print("投票するには若すぎます。") # "投票するには若すぎます。"と表示する
このコードでは、ageが18以上なら"投票できます。"と表示し、そうでなければ(つまり、ageが18未満なら)"投票するには若すぎます。"と表示します。
このように、特定の条件に基づいて処理を変えたいような場合に利用するのがif文です。基本的にはどのプログラミング言語にも存在する構文の1つなので、プログラミング初心者でなければ何となくの処理の概要は理解していることでしょう。

このページではPythonにおけるif文の使い方やコツ、注意点を細かく解説していきます。
Python:if文
if 条件式:
# 実行する処理if文を利用する際には以下3つのルールを守りましょう。
もしルールを一つでも守っていない場合、当たり前ですがプログラムは正常には動きません。
if 条件式:
条件式がTrueの場合に行う処理1
条件式がTrueの場合に行う処理2 # ←この部分のインデントがずれている
条件式がTrueの場合に行う処理3
・・・・・

この場合、処理2の行のインデントがそろっていないためエラーになります。
Python:else文
else文は、if文と一緒に使われ、if文の条件が偽(False)だったときに実行されるブロックを指定します。
if 条件式:
# 条件式が真(True)のときに実行するコード
else:
# 条件式が偽(False)のときに実行するコード条件式が「偽:False」の場合に行う処理は「else」の後に記述します。インデント(字下げ)などの基本ルールは、ifと同様です。

elseを利用したサンプルコードがこちら。
age = 16
if age >= 20: # もしageが20以上であれば
print("成人です。") # "成人です。"と表示する
else: # そうでなければ(つまり、ageが20未満であれば)
print("未成年です。") # "未成年です。"と表示する
このコードでは、変数ageが20以上かどうかをチェックします。もしageが20以上(つまり、ifの条件が真)であれば、"成人です。"と表示します。それ以外の場合(つまり、ifの条件が偽)では、"未成年です。"と表示します。
このように、elseを使用することで、特定の条件が偽であったときの動作を明示的に制御することができます。

なお、elseブロックはオプションであり、必ずしも必要というわけではありません。elseがない場合、ifの条件が偽であったときには何も実行されません。
Python:elif文
Pythonのelifは、「else if」の略で、if文とelse文の間に追加の条件をチェックするために使用します。elifの後には新たな条件式が続きます。
if 条件式1:
# 条件式1が真(True)のときに実行するコード
elif 条件式2:
# 条件式1が偽(False)で、条件式2が真(True)のときに実行するコード
else:
# 全ての条件式が偽(False)のときに実行するコード以下に具体的な例を示します。
temperature = 20
if temperature < 0: # もしtemperatureが0未満であれば
print("寒いです。") # "寒いです。"と表示する
elif temperature < 30: # そうでなく、temperatureが30未満であれば
print("快適です。") # "快適です。"と表示する
else: # それ以外の場合(つまり、temperatureが30以上であれば)
print("暑いです。") # "暑いです。"と表示する
このコードでは、まずtemperatureが0未満かどうかをチェックします。
もしtemperatureが0未満(つまり、最初のifの条件が真)であれば、"寒いです。"と表示します。それ以外の場合、次にtemperatureが30未満かどうかをチェックします。
temperatureが30未満(つまり、elifの条件が真)であれば、"快適です。"と表示します。最後に、それ以外の全ての場合(つまり、すべての前の条件が偽)では、"暑いです。"と表示します。

このように、elifを使用することで、複数の条件を順番にチェックして適切なコードブロックを実行することができます。また、elifは任意の数だけ書くことができます。
if文のネスト
Pythonのif文はネスト(入れ子)することも可能です。

わかりやすく言うと、if文の中にさらにif文を書くことができる、ということです。
この特性は、より複雑な条件をチェックするためや、特定の条件が真のときだけさらなるチェックを行いたいときなどに便利です。
age = 25
country = "Japan"
if country == "Japan": # もし国が"Japan"であれば
if age >= 20: # さらに、年齢が20以上であれば
print("あなたは日本で成人です。") # "あなたは日本で成人です。"と表示する
else: # そうでなければ(つまり、年齢が20未満であれば)
print("あなたは日本で未成年です。") # "あなたは日本で未成年です。"と表示する
このコードでは、まずcountryが"Japan"かどうかをチェックします。もしcountryが"Japan"(つまり、最初のifの条件が真)であれば、その中の次のif文に進み、ageが20以上かどうかをチェックします。
そして、ageが20以上なら"あなたは日本で成人です。"を表示し、そうでなければ(つまり、ageが20未満なら)"あなたは日本で未成年です。"と表示します。

ネストされたif文を利用する際は、インデントに注意する必要があります。Pythonはインデントを利用してコードのブロック(スコープ)を認識するため、正しくインデントしないとエラーが発生する可能性があります。
ただし、ネストが深すぎる場合、コードが読みづらくなってしまう点に注意。可読性が低くなるとバグが生まれやすくなります。
number = 10
if number > 1:
print("numberは1以上です")
if number > 2:
print("numberは2以上です")
if number > 3:
print("numberは3以上です")
if number > 3:
print("numberは3以上です")
# numberは1以上です
# numberは2以上です
# numberは3以上です
# numberは3以上です
他のロジックで代替できないか?を検討しましょう。
def is_adult(age, country):
if country != "Japan":
return False
if age < 20:
return False
return True
def is_japanese(country):
return country == "Japan"
def is_adult(age):
return age >= 20
if is_japanese(country) and is_adult(age):
print("あなたは日本で成人です。")
参考 Python:def
if country == "Japan" and age >= 20:
print("あなたは日本で成人です。")
参考 比較演算子

以上のように、適切な設計やリファクタリングによって、ネストが深くなるのを避けることが可能です。
in / not in
Pythonのinとnot inは、ある値が特定のシーケンス(リスト、タプル、文字列、辞書など)の中に存在するかどうかをチェックするために使用します。
inはその値がシーケンスに存在する場合にTrue、存在しない場合にはFalseを返します。一方、not inはその値がシーケンスに存在しない場合にTrueを返し、存在する場合にはFalseを返します。

これらはif文と一緒に使われることが多いので、以下にサンプルコードを記載しておきます。
サンプル inの使用例
fruits = ["apple", "banana", "cherry"]
if "banana" in fruits: # もし"banana"がfruitsリストに含まれていれば
print("バナナが見つかりました。") # "バナナが見つかりました。"と表示する
サンプル not inの使用例
fruits = ["apple", "banana", "cherry"]
if "grape" not in fruits: # もし"grape"がfruitsリストに含まれていなければ
print("ブドウが見つかりませんでした。") # "ブドウが見つかりませんでした。"と表示する
また、in / not in は文字列の中に特定の部分文字列が存在するかどうかをチェックするのにも使うことができます。
message = "こんにちは、世界"
if "世界" in message: # もし"世界"がmessage文字列に含まれていれば
print("メッセージに'世界'が含まれています。") # "メッセージに'世界'が含まれています。"と表示する
Python:if文のまとめ

始めてPythonを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。
Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!
読者料典 Python入門:学習カリキュラム ←こちらから!
