Pythonの基礎文法を図を用いて分かりやすく解説していきます。
今回は条件分岐をする機能を提供する「if文句」を解説します、if文はどのようなプログラミング言語でも必ず使われますので既にご存じの方も多いかと思いますが、Python特有の規則もありますので、基本を説明しつつも他言語との違いについても取り上げます。
Pythonの公式ドキュメントは以下になりますので必要に応じて参照してください。
Python公式ドキュメントの引用
https://docs.python.org/ja/3/reference/compound_stmts.html#the-if-statement
1. 条件分岐構文(if文句)
Pythonの条件分岐構文であるif文句は大きく3つに大別されます。
1.1 ifによる条件分岐 < if構文 >
if文の最も単純な使い方で、条件式が真(True)の時にif句ブロック内のステートメントが実行される流れです。構文とフローチャートは次のようになります。
サンプルコードは次のとおりです。ポイントは、変数valueの値の正負判定を行い正数の場合にif句内の処理(value×10)が行われます。負数の場合はスルーされます。
value = 1
if value > 0 :
value = value * 10 # 条件式がTrueとなるのでこのステートメントが実行される
print(value) # 10と表示(計算される)
#------------------------------------------------------------------------------------------------
value = -1
if value > 0 :
value = value * 10 # 条件式がFalseとなるのでこのステートメントが実行されない
print(value) # -1と表示(初期値のまま)
1.2 ifによる条件分岐 < if-else構文 >
1.1項に加えif文の条件式が偽(False)判定となった時にも処理するステートメントelse句を記述するパターンです。構文とフローチャートは次のようになります。
サンプルコードは次のとおりです。ポイントは、変数valueの値の正負判定を行い正数の場合にif句内の処理(value×10)が行われます。また、負数の時はelse句が処理(0で初期化)が行われます。
value = 1
if value > 0 :
value = value * 10 # 条件式がTrueとなるのでこのステートメントが実行される
else:
value = 0
print(value) # 10と表示(if句の計算結果が反映される)
#-------------------------------------------------------------------------------------------------
value = -1
if value > 0 :
value = value * 10
else:
value = 0 # 条件式がFalseとなるのでこのステートメントが実行される
print(value) # 0と表示(else句の計算結果が反映される)
1.3 ifによる条件分岐 < if-elif-else構文 >
1.2項に条件式が多段構成になった構文です。elif句は1つである必要はなく分岐させる条件の数だけ追加することができます。条件式は上から順番に判定され、はじめに真(True)となったブロックの処理が実行される流れとなります。どの条件式も偽(False)となった場合にelse句の処理が実行されます。またelse句は省略することもできます。
サンプルコードは次のとおりです。ポイントは、変数inputの条件判定がif句とelif句の2回にわたり判定が行われます。より細かい条件で処理を分岐させることができるようになります。
input = 70
if input >= 80 :
output = 'A' # 条件式がFalseなのでこのステートメントは評価されない
elif input >= 60 :
output = 'B' # 条件式がTrueなのでこのステートメントは評価されて、if文を抜ける
else:
output = 'C'
print(output) # Bと表示される
#-------------------------------------------------------------
# <その他の結果>
# input = 80 の場合は 'A'と表示される
# input = 50 の場合は 'C'と表示される
2. その他の条件分岐構文
他言語にはないPython特有の規則について以下にまとめます。
2.1 case文による分岐方法
多くのプログラミング言語にはswitch文とcase文を使って処理を振り分ける構文が用意されていると思いますが、残念ながらPythonでは使えません。ですので、1.3項のif/elif/else文や、if文のネスト構造をつかって処理を振り分ける必要があります。
2.2 < if-else構文 >を1行記述する
f/else文を1行で記述することができます。Pythonを特徴付ける書き方の例で、スマートに記述できるため多用されます。一見複雑に見えますが、フロー自体は単純で、条件式が真(True)であれば処理Aが評価され、条件式が偽(False)であれば処理Bが評価し結果を戻します。
処理A,Bの場所には基本的には(※)単文(1つのステートメント)のみ記述することができます。
下記の書式では左辺の変数へ結果を戻していますが、直接関数の引数やリスト・タプルなどなどの要素に記述することができます。
※ ,(カンマ)区切りで複数記述することができますが結果はタプルとなります。
サンプルコードは次のとおりです。ポイントは、変数a, bの大小比較をしその結果次第で処理A(a×10)または、処理B(b×10)を実行し変数resultに戻します。
a = 5
b = 3
result = (a*10) if (a > b) else (b*10) # 条件式がTrueとなるので処理Aが実行され結果が戻る
print(result) # 50と表示される
#-----------------------------------------------------------------------------------------------------------
a = 4
b = 6
result = (a*10) if (a > b) else (b*10) # 条件式がFalseとなるので処理Bが実行され結果が戻る
print(result) # 60と表示される
以上、Pythonの基礎文法として条件分岐構文のif文の使い方の概要を説明しました。
最後までお読みいただきありがとうございました。