【Python入門】if文で条件分岐する書き方をサンプルコードとあわせて解説
Pythonの入門者を対象に、このようなPythonのif文の特徴や書き方を、サンプルコードとともに詳細に解説していきます。
Pythonの入門者を対象に、このようなPythonのif文の特徴や書き方を、サンプルコードとともに詳細に解説していきます。
スキルアップ
2023/02/22 UP
- プログラミング
- SE資格・スキル
- 入門
- Python
条件分岐の基礎となるif文は、プログラムの制御の基本になる構文です。Pythonの学習をすすめる上で、if文の理解は不可欠なポイントといえるでしょう。
今回はPythonの入門者を対象に、このようなPythonのif文の特徴や書き方を、サンプルコードとともに詳細に解説していきます。
Pythonのif文とは
if文は条件分岐をおこなうための文法です。Pythonのif文は、一般的な他のプログラミング言語と同様に、if...elif...elseで構成されています。
Pythonのif文も他のプログラミング言語と同じく、条件式の結果が真(true)であるか偽(false)であるかを評価し、「もし条件式Aが真(true)ならBを実行する」という処理をおこないます。この真偽の値を代入することができる変数をboolean型と呼びます。
if文の条件式を評価する場合は、真(true)と偽(false)によるboolean型で行います。比較演算子や論理演算子を使って条件式を記述すると、結果がboolean型になります。
以上を踏まえて、Pythonのif文の基本形を見てみましょう。
if 条件式A: 条件式Aが真(true)の場合に実行する処理 elif 条件式B: 条件式Aが偽(false)で条件式Bが真(true)の場合に実行する処理 else: すべての条件式が偽(false)の場合に実行する処理
条件式は:で終了し、ブロックの中はインデントします。Pythonのコードではブロックのインデントをおこなわないとエラーの原因になります。
また、Pythonには他のプログラミング言語で一般的にサポートされているSwitch文はありません。Pythonでは条件分岐はすべてif...elif..else...で記述します。
Pythonで使える比較演算子一覧
if文で条件式を記述するには、比較演算子を使用します。比較演算子は主に2つの値を比較し、結果が真の場合はtrue、偽の場合はfalseを返します。if文では比較演算子の結果がtrueの場合、条件が合致したとして分岐後の処理が行われます。
Pythonで使用できる比較演算子は以下の10種類になります。
演算子 |
内容 |
---|---|
a == b |
a が b と等しい |
a != b |
a が b と異なる |
a < b |
a が b よりも小さい |
a > b |
a が b よりも大きい |
a <= b |
a が b 以下である |
a >= b |
a が b 以上である |
a is b |
a が b と等しい |
a is not b |
a が b と異なる |
a in b |
a が b に含まれる (a, b は共に文字列、または、b はリストやタプル) |
a not in b |
a が b に含まれない (a, b は共に文字列、または、b はリストやタプル) |
Pythonで使える論理演算子一覧
複数の条件文を組み合わせて比較したい場合は、比較演算子ではなく論理演算子を使用します。論理演算子は2つ以上の条件式を評価し、条件に合致する場合にtrueを返します。
Pythonで使用できる論理演算子は以下の3種類です。
演算子 |
内容 |
---|---|
a and b |
a も b も真であれば真 |
a or b |
a または b が真であれば真 |
not a |
a が偽であれば真 |
Python の if文の書き方
それではPythonのif文について基礎的な知識が深まったところで、実際に動くサンプルコードを見ながら詳しく学習を進めていきましょう。ここでは主にif文の基本的な記述方法を解説していきます。
if文の基本形
if文のもっとも基本となる型は、ifのみの構文です。記述の仕方は以下のようになります。
if 条件式: 条件式が真(true)の場合に実行する処理
この場合、条件式は1つだけになるので、条件式がtrueにならない場合はなにも処理が実行されません。
次のサンプルコードでは、入力された値を参照し、1だった場合のみ「1です」と出力します。
value = int(input('1〜10の数を入力してください')) if value == 1: print('1です')
if else の形
ifの条件式が偽(false)であった場合の処理を追加するには、if...elseの構文型を使用します。記述の仕方は以下のような形になります。
if 条件式: 条件式が真(true)の場合に実行する処理 else: 条件式が偽(false)の場合に実行する処理
それではサンプルを見てみましょう。次のサンプルコードでは、入力された値を参照し、1だった場合はifの処理が実行され「1です」と出力します。1でなかった場合はelseの処理が実行され「1ではありません」と出力します。
value = int(input('1〜10の数を入力してください')) if value == 1: print('1です') else: print('1ではありません')
if elif else の形
if...elseに条件分岐を追加するには、elifを使用して、if...elif...elseの構文型にします。記述の仕方は以下のような形になります。
if 条件式A: 条件式Aが真(true)の場合に実行する処理 elif 条件式B: 条件式Aが偽(false)で条件式Bが真(true)の場合に実行する処理 else: すべての条件式が偽(false)の場合に実行する処理
それではサンプルを見てみましょう。次のサンプルでは、入力された値を参照して1であればifの処理、2であればelifの処理、それ以外であればelseの処理を実行します。
value = int(input('1〜10の数を入力してください')) if value == 1: print('1です') elif value == 2: print('2です') else: print('1でも2でもありません')
elifが複数の場合
elifは複数追加できます。次のサンプルでは、elifが1つ増えて、入力された値が3だった場合の処理が追加されています。
value = int(input('1〜10の数を入力してください')) if value == 1: print('1です') elif value == 2: print('2です') elif value == 3: print('3です') else: print('1でも2でも3でもありません')
elifはいくつでも追加できますが、あまり多くなる場合は可読性や処理速度の低下の原因となるため注意が必要です。こうした場合は、辞書を使用した記述方法を検討する必要があります。辞書を使った条件分岐の記述についてはこちらを参照してください。
Pythonではswitchやcaseがない!代わりに使える方法とは
and や or を使用した複数条件の書き方
複数の条件式を使用したい場合には、andやorのような論理演算子を使用します。次のサンプルコードは、1〜10の数字を入力させ、5以上の偶数であった場合にメッセージを表示するプログラムです。
inputで変数valueに入力された値を参照し、まずifの条件式にorを使用して1以上10以下であることを確認しています。もしifが真であった場合、入力範囲をオーバーしていることを伝えるメッセージを表示します。偽であった場合は次のelifに進み、変数valueが2で割った余りが0である(=偶数である)、かつ6以上であることを確認し、真であった場合はメッセージを表示します。
このように、実際の業務でも入力された値が正しい範囲に収まっていない場合は修正を促したり、2ヶ所に入力された値や文字列を参照してエラーメッセージを表示するなど、使い方はさまざまです。
value = int(input('1〜10の数を入力してください')) if value < 1 or value > 10: print('範囲がオーバーしています') elif value % 2 == 0 and value > 5: print('5より上の偶数です')
入れ子(ネスト)させる場合の書き方
ifの処理の中にさらに条件を分岐したい場合には、内側にif文を挿入する入れ子(ネスト)という記述方法を取ります。
ネストされたif文は、上位のif文の条件式がtrueになった場合のみ条件式の評価が行われます。記述する時に注意するべきポイントは、ネストしたif文は元のif文よりもインデックスすることです。
次のサンプルコードでは、入力された値を参照して偶数であった場合のみ、ネストしたif文の条件式を評価して、5以下か6以上の判定が行われています。
value = int(input('1〜10の数を入力してください')) if value % 2 == 0: if value < 6: print('5以下の偶数です') else: print('6以上の偶数です')
Python の if文 - 中級編
Pythonの制御構文には、ここまで解説してきた基本的な記述方法の他にも、さまざまな構文があります。if文を使いこなすには、三項演算子やbreakの使い方を習得する必要があります。
if文の代わりにも使える三項演算子の使い方
三項演算子(条件演算子)を使用すると、if文を短くシンプルに記述できます。三項演算子の基本的な記述方法は以下のとおりです。
真の時の処理 if条件式 else 偽の時の処理
このような構造のif...else文を、以下のようなシンプルな構造に書き換えられます。
三項演算子の構造を理解したところで、実際のコードを見てみましょう。以下のサンプルでは、変数numが5の場合は「5です。」、それ以外であれば「5以外です。」と表示するif...elseを三項演算子で書き換えています。どちらのコードも同じ処理をおこないます。
if...else文の場合
num = 2 if num == 5: print('5です') else: print('5以外です')
三項演算子の場合
num = 2 print('5です') if num == 5 else print('5以外です')
pass文とcontiune文
Pythonのpass文は「なにもしない」文であり、文法上なにかを記述する必要があるがなんの処理も実行しない場合に使用します。Pythonでは条件分岐のif文では中身を省略することができず、なにも記述しないとエラーになります。そこで、なにも実行したくない場合にpass文を使用します。
pass文はなにも実行しないため、pass文のあとに記述された処理はそのまま実行されます。次のサンプルコードでは、pass文が記述されたあとのprintも続けて実行されるため、iが5までは「5以下はパスします」という文字列が表示されます。
for i in range(10): print(i) if i >= 5: pass print('5以下はパスします')
continue文は記述された時点で処理を終了し、ループ処理の先頭に戻って再びループ処理を開始します。そのため、pass文とは異なり、continue文が記述された以降の処理は行われません。次のサンプルコードでは、continueよりあとに記述されたprintは実行されないため、「5以下はすぐループの先頭に戻ります」という文字列は表示されません。
for i in range(10): print(i) if i >= 5: continue print('5以下はすぐループの先頭に戻ります') else: print("6以上になりました")
break文
breakは記述された時点でループ処理を終了する命令です。while文やfor文のようなループ処理の中に組み込まれたif文と組み合わせて使用することで、特定の条件式が真になった場合にループ処理を終了するコードが書けます。
if...break文の記述は以下のような形になります。
while 条件式A: if 条件式B: break
次のサンプルコードでは、変数numbersの値を表示して+1ずつ加算するループ処理をおこない、numbersが10になった場合はif...break文でループを終了して「値が10になったので処理を終了します」というメッセージを表示します。
Pythonの基本であるif文をマスターしよう!
条件分岐をおこなうif文は、さまざまな制御の基本となります。if文をマスターすることで、他の構文の中でif文を使用してプログラミングをおこない、プログラムの挙動を制御できるようになります。
if文は単独で使うだけでなく、ループ処理を始めとした他の構文の中にネストして使用することが頻繁にあります。そのため、if文をしっかりと理解していないとさせたい挙動を上手く制御できなくなってしまいます。
比較演算子や論理演算子の使い方をしっかりとマスターして、if文を使いこなしましょう。