言語バージョン 3.9.0

公開日 2020年11月18日 JST

更新日 2020年12月10日 JST

コード例の出力としてprint関数を使用しています。

使用方法がわからない場合は以下のページを参照してからコード例を確認してください。

print関数の使用方法

if

このページでは豊富な例を用いてPythonのifの使い方を学ぶことができます。

ifはPythonの構文の1つです。記述した条件式に沿った条件分岐を実現することができ、多くの場面で使用されます。
elseelifを使用することで他の条件式を記述することが可能になったり、 条件式が真(True)以外のときに実行したい処理なども記述することが出来ます。

また、Pythonにはswitch文が存在しないので同じ様な処理はelifelseを組み合わせることにより実現します。

記述例

if 条件式1:
    # 条件式1が真(True)の場合に実行したい処理
elif 条件式2:
    # 条件式2がTrueの場合に実行したい処理
else:
    # 条件式1と条件式2が共にTrueでない場合に実行したい処理

TL;DR

基本

if True:
    print('Python')
==> Python



str1 = 'Apple'
if str1 == 'Apple':
    print('str1 is Apple.')
==> str1 is Apple.



float1 = 1.414
if float1 > 1:
    print('float1 is greater than 1.')
==> float1 is greater than 1.



list1 = ['if', 'while', 'array', 'for']
# ('if' in list1) and ('array' in list1)と同じです
if 'if' in list1 and 'array' in list1:
    print('if and array are included!')
==> if and array are included!



# 条件式がTrueではないので何も表示されません。
if not ('if' in list1 and 'array' in list1):
    print('if and array are included!')
==>



# 後半がTrueなのでif文中の処理が実行されます
if not 1 < 0 or not 100 < 101:
    print('Venn diagram')
==> Venn diagram



# if文のネスト
int1 = 67
if int1 < 80:
    if int1 > 53:
        print('int1 is less than 80.')
    print('int1 is greater than 53.')
==> int1 is less than 80.
==> int1 is greater than 53.



# 上記のifネストを次のように表現可能
if 53 < int1 < 80:
    print('int1 is less than 80.')
    print('int1 is greater than 53.')
==> int1 is less than 80.
==> int1 is greater than 53.

関連情報:list(リスト・配列)の使用方法

条件式がTrueではない場合の処理(else)

str1 = 'apple'
if 's' in str1:
    print('s is included in "apple"')
else:
    print('s is NOT included in "apple"')
==> s is NOT included in "apple"



int1 = 50
if int1 == 'python' or int1 == 1:
    print('true block')
else:
    print('false block')
==> false block



list1 = []
# 空のlistはFalse判定
if list1:
    print('list1 is filled.')
else:
    print('list1 is empty.')
==> list1 is empty.

条件式を複数記述する場合(elif)

from enum import Enum

int1 = 50
if int1 < 20:
    print('if')
elif 20 <= int1 <= 50:
    print('elif')
else:
    print('else')
==> elif



str1 = 'Python'
if str1 == 'Kotlin':
    print('if')
elif str1 == 'Java':
    print('elif1')
elif str1 == 'Python':
    print('elif2')
else:
    print('else')
==> elif2



dict1 = {'py': 'Python', 'go': 'Golang', 'js': 'JavaScript'}
for k, _ in dict1.items():
    if k == 'js':
        print('if')
    elif k == 'java':
        print('elif1')
    elif k == 'go':
        print('elif2')
    elif k == 'py':
        print('elif3')
    else:
        print('else')
==> elif3
==> elif2
==> if



class Language(Enum):
    PYTHON = 'python'
    JAVA = 'java'
    JAVA_SCRIPT = 'javascript'
    GROOVY = 'groovy'

language1 = Language.JAVA_SCRIPT
if language1 == Language.PYTHON:
    print('if')
elif language1 == Language.JAVA:
    print('elif1')
elif language1 == Language.JAVA_SCRIPT:
    print('elif2')
elif language1 == Language.GROOVY:
    print('elif3')
else:
    print('else')
==> elif2

関連情報:forの使用方法

関連情報:class(クラス定義)の使用方法

条件文の改行方法

list1 = ['py', 'go', 'js', 'java']
# 1行で書く場合
# list1が空ではなく、かつ、list1[0]が空文字('')ではなく、かつ、list1[0]が'py'である
if list1 and list1[0] and list1[0] == 'py':
    print('True')
==> True



# 改行方法1:()の使用
if (list1
        and list1[0]
        and list1[0] == 'py'):
    print('True')
==> True



# 改行方法2:\の使用
if list1 \
        and list1[0] \
        and list1[0] == 'py':
    print('True')
==> True

if文を1行で表現する(三項演算子)

# ifの前の処理がTrueの場合実行され、else以降がFalseのときに実行される
print('programming') if 1 > 0 else print('else block')
==> programming



# else以降に三項演算子を再度指定
print('True1') if False else print('True2') if True else print('False')
==> True2

解説

記述例

if 条件式1:
    # 条件式1が真(True)の場合に実行したい処理
elif 条件式2:
    # 条件式2がTrueの場合に実行したい処理
else:
    # 条件式1と条件式2が共にTrueでない場合に実行したい処理

基本

ifの後ろに判定したい条件式を記述します。
記述した条件式がTrue(真)の場合、if文中に記述した処理が実行されます。
条件式がFalse(偽)の場合、対象のif文中の処理は実行されず、次の処理へと移っていきます。

int1 = 443
if int1 == 443:
    print('HTTPS')
==> HTTPS



# Sはstr1に含まれていないので条件式はFalse、何も表示されない
str1 = 'HTTP'
if 'S' in str1:
    print('Never displayed.')
==>

条件式がTrueではない場合の処理(else)

elseをif文と使用すると、指定した条件式がFalseの場合に実行したい処理を記述することが出来ます。

elseはforやwhileでも使用することが可能ですが、それぞれの使用時の挙動は異なるので違いを理解した上で使用してください。

for文でのelse使用方法while文でのelse使用方法

tuple1 = (1, 2, 3, 4, 5)
if len(tuple1) > 5:
    print('len(tuple1) > 5')
else:
    print('len(tuple1) <= 5')
==> len(tuple1) <= 5



dict1 = {'key1': 1, 'key2': 2, 'key3': 3}
if 'key100' in dict1.keys():
    print('dict1 has "key100".')
else:
    print('No "key100"')
==> No "key100"

条件式を複数記述する場合(elif)

elifを使用することで、条件式を複数記述して分岐を増やすことが出来ます。
elifを使用した際でもelseは必須ではありません。

条件が重なったり同じであった場合には最初に合致した部分の処理が実行され、それ以降の合致した部分の処理は実行されません。

また、他のプログラミング言語に見られるswitch文がpythonでは存在しないため、同じ様な処理を実現する場合はelifelseを使用して実現してください。

str1 = 'Python'
if 'a' in str1:
    print('if')
elif 'p' in str1:
    print('elif1')
elif 'P' in str1:
    print('elif2')
else:
    print('else')
==> elif2



# 最初に条件に合致した部分の処理が実行されます
if 'P' in str1:
    print('if')
elif 'P' in str1:
    print('elif')
else:
    print('else')
==> if

条件分の改行方法

実際にプログラミングをしていると、条件式部分の1行あたりの記述が長くなる場合があります。 視認性の観点から、1つの条件式を複数行に改行したほうが好ましい場合があります。
そうした場面では丸括弧()やバックスラッシュ\を使用すると改行することができます。

str1 = 'JavaScript'
# 1行で書く場合
if 'J' in str1 and 'a' in str1 and 'S' in str1 and 't' in str1:
    print('True')
==> True



# 改行方法1:()の使用
if ('J' in str1
        and 'a' in str1
        and 'S' in str1
        and 't' in str1):
    print('True')
==> True



# 改行方法2:\の使用
if 'J' in str1 \
        and 'a' in str1 \
        and 'S' in str1 \
        and 't' in str1:
    print('True')
==> True

if文を1行で表現する(三項演算子)

他のプログラミング言語を学んでいると、三項演算子(ternary operator)を使用することがあります。
Pythonでもifを用いることにより同じ様な処理を実現することが可能で、公式には"conditional expressions"と表記されています。

この表現を使用する場合、ifの前に条件式がTrueのときに実行したい処理を記述します。

str1 = 'some strings'
print(1) if str1 else print(2)
==> 1



print(1) if 'any' in str1 else print(2)
==> 2

1次情報

if文 - Pythonドキュメント

条件式 - Pythonドキュメント