Pythonに限らず、if文は条件式を設定することで値などに応じて処理を振り分けることができます。実際にプログラムを組むとき、さまざまな場面で使用するため、必ず覚えておきたいPythonの基本文法です。
今回は、Pythonのif文を使用した条件分岐をサンプルコード付きで解説します。
Pythonのif文を用いた条件分岐を解説!
if文は条件によって処理を分岐させたい場合に使用します。例えば、次のような条件分岐が考えられるでしょう。
- 条件式:年齢は18歳未満か?
- 年齢が18歳未満の場合はAの処理(True)
- 年齢が18歳以上の場合はBの処理(False)
条件式に合致するものが真(True)、合致しないものが偽(False)となり、プログラミングにおける条件分岐は真偽で判定を行います。複数の条件を持たせたい場合は、条件式を増やすことで対応できます。
Pythonのif文の書き方を条件指定から順に詳しく解説します。
比較演算子で条件を指定
まず、if文は比較演算子で条件を指定します。条件は「変数numの値が20以上」「変数に代入されている文字列が東京」というように指定をするのが一例です。if文の条件を指定し、その条件を満たせば、if文の中で定義した処理が実行されます。
if文の条件を設定する部分は下記です。
1 |
if 条件式; |
また、条件式に記述する頻繁に利用する論理記号(比較演算子)の意味については、以下の表をご覧ください。
論理記号(比較演算子) | 条件 |
== | 等しい |
!= または <> | 等しくない |
>= | 以上 |
> | より大きい |
<= | 以下 |
< | より小さい(未満) |
if文の条件式の具体例は下記の通りです。
1 2 3 4 5 |
if num == 1: if num < 1 or value > 10: if num% 2 == 0: if num != 0: if num <= 1: |
基本形(if文)
Pythonのif文の基本構文と具体例は下記の通りです。
1 2 3 |
#基本構文 if 条件式: 条件式がTrueの場合、この部分が実行されます。 |
1 2 3 4 5 6 7 |
#具体例 num = 1 if num == 1: print('numに代入された値は1です。') #具体例の出力結果 numに代入された値は1です。 |
True(真)は、条件式を満たすことを意味します。逆に満たさない場合は、if文の中で記載した処理は実行されません。例えば、具体例のnumに2が代入されていた場合、if文の処理は実行されずそれ以降のコードを読みます。
また、if文の条件式に当てはまった際に実行される処理の塊はブロックといわれます。Javaなどは、下記のように{}を用いるのが一般的です。
1 2 3 |
if(条件式){ 処理1 } |
しかし、Pythonはインデントを用いることでJavaやC言語で使用する{}を表現します。インデントとは、簡単に表現すると字下げのことです。インデントはtabキーを押すことで入力できます。具体的なインデントされている文は下記の通りです。
1 2 3 4 |
if条件式: 処理1 処理2 処理3 |
Javaなどのほかのプログラミング言語は、{}を使用せずにこのように処理を複数行にわけて記載するとコンパエイルエラーになります。しかし、Pythonはインデントを用い、複数行にまたがって処理を記載しても問題ありません。
Pythonのif文はあくまでも同じ位置にインデントされている処理が同じブロックで扱われます。そのため、インデントの数がずれていると同じブロックとして扱われませんので、注意しましょう。
1 2 3 4 |
if条件式: 処理1 処理2 処理3#エラー |
また、下記のように、if文の中にif文を記載するとき、さらにインデントを下げる必要があります。
1 2 3 4 5 6 7 8 |
if条件式: 処理1 処理2 処理3 if条件式: 処理1 処理2 条件が一つの場合(if else文) |
Pythonで条件が1つの処理を記述する場合、if else文を使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#基本構文 if 条件式: 条件式1 else: 条件2 #具体例 num = 1 if num == 1: print('numに代入された値は1です。') else: print('numに代入された値は1以外です。') #具体例の出力結果 numに代入された値は1です。 |
if else文は、条件式がTrueなら処理1、Falseなら処理2というように、条件によって処理するコードを振り分けることができます。もし、具体例のnumに2が代入されていた場合、elseの処理2が実行される形です。
条件が複数の場合(if elif else文)
条件が複数ある場合、if elif else文を使用します。if elif else文の基本構文は下記の通りです。
1 2 3 4 5 6 |
if条件式: 処理1 elif条件式2: 処理2 else条件式: 処理3 |
また、具体例は下記の通りです。
1 2 3 4 5 6 7 8 9 10 11 |
#具体例 a = 15 if a > 10: print("aは10より大きいです") elif a == 10: print("aは10です") else: print("aは10未満です") 【結果】 aは10より大きいです |
ソースコードの1行目で、aという変数に15が代入されています。そして、ソースコードの2行目で、 aが10よりも大きいかを比較します。今回は、a=15であるため10よりも大きくなります。したがって、「if a > 10」の部分はTrueなので、ソースコードの3行目の処理が実行されるというわけです。
もし、a=10の場合は、ソースコードの4行目がTrueなので、「print(“aは10です”)」というプログラムが実行されます。a=3など、aが10未満の場合は、「a > 10」にも「a == 10」にも該当しないので、「else:」以下の処理が実行されて、「aは10未満です」と表示されます。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Pythonのif文で複数条件や否定を指定するには?
Pythonのif文は、JavaやC言語と同様に、複数の条件や否定を条件として指定することができます。複数条件を指定するときや否定を条件として指定するときは、論理演算子を使うのが一般的です。
例えば、「代入されている値が10以上かつ20以下」、「文字列が東京、大阪、愛知の場合」などの複数条件は、論理演算子を使って指定します。また、numの値が10ではないなど、否定の条件も論理演算子を使用することで実現可能です。
具体的に論理演算子を使用して複数の条件や否定を指定する方法をサンプルコード付きで解説します。
論理演算子で条件を指定
Pythonでは論理演算子としてand(論理積)、or(論理和)、not(否定)の3種類が利用できます。論理演算子とは、真偽値(True/False)に対して行う演算を表す記号です。
言葉だけでは分かりづらいと思いますので、具体例を含めてみていきましょう。
論理演算子 | 使い方 | 意味 |
and(論理積) | A and B | AとBの両方がTrueの場合のみTrue、それ以外はFalse |
or(論理和) | A or B | AかBのどちらかがTrueの場合にTrue、どちらもFalseの場合はFalse |
not(否定) | not A | AがTrueの場合はFalse、Falseの場合はTrue |
論理演算子は複数の条件式を組み合わせる時に利用するものであり、「かつ(and)」「または(or)」「ではない(not)」という条件を追加したい場合に利用できます。
例えば、「Aさんの年齢が20歳以上【かつ】40歳未満」や「Aさんの年齢が15歳以上【または】女性である」といったような条件を作りたい場合に利用可能です。論理演算子を理解すれば複雑な条件もしてきるようになるため、ぜひマスターしておきましょう。
続いて、具体的なPythonコードの記述に関して解説していきましょう。
and(論理積)
Python if文における論理積andは次のように利用します。
1 2 |
if 条件式1 and 条件式2: 条件式1と条件式2が共にtrue(真)のときに行う処理 |
andより左の条件式とandより右の条件式が共にtrue(真)であるときに全体の評価がtrue(真)となります。
以下が論理積andの例です。
1 2 3 4 5 |
x = 20 if x > 10 and x < 40: print("True") else: print("False") |
【結果】
1 |
True |
まず、ソースコード1行目でxという変数に20が代入されています。
2行目のif文の条件式の意味は「xが10よりも大きい【かつ】xが40よりも小さい」です。
xは10よりも大きく40よりも小さいため、2つの条件式を共に満たしています。したがって全体の評価はtrue(真)となり、「True」が出力されます。
もし、x=50などの場合は、「x>10」の1つ目の条件式ではtrue(真)ですが、「x<40」の2つ目の条件式はfalse(偽)になり、全体の評価はfalse(偽)です。
よって結果はelse以下の処理が実行されて、「False」が出力されます。
or(論理和)
Python if文における論理和orは次のように利用します。
1 2 |
if 条件式1 or 条件式2: 条件式1、条件式2の少なくともどちらか一方がture(真)であるときに行う処理 |
論理和orは、どちらかの一方の条件式がtrue(真)であれば全体の評価がtrue(真)になります。
以下が論理和orの例です。
1 2 3 4 5 |
x = 20 if x < 30 or x > 60: print("True") else: print("False") |
【結果】
1 |
True |
まず、ソースコード1行目で、変数xに20が代入されています。
2行目のif文の意味は「xが30よりも小さい【または】xが60よりも大きい」です。
xは30よりも小さい(true)ですが、60よりも大きくありません(false)。
論理和orは、少なくともどちらか一方の条件式がtrue(真)であれば全体の評価がtrue(真)になります。
よって、今回は「True」が出力されました。
なお、xが50の場合は、30よりも大きく(false)、60よりも小さい(false)ため、全体の評価はfalse(偽)になります。
not(否定)
Python if文における否定notは次のように利用します。
1 2 |
if not 条件式: 条件式がtrue(真)の場合に実行される処理 |
否定notは、もとの条件式の真偽を反転します。つまり、notを利用する場合は条件式がfalse(偽)となる場合に全体的な評価がtrue(真)となるのです。
以下が否定notの例です。
1 2 3 4 5 |
x = 50 if not x <= 30: print("True") else: print("False") |
【結果】
1 |
True |
まず、ソースコード1行目で、変数xに50が代入されています。
2行目のif文の意味は「xが30以下【ではない】」です。
この例の場合、xは50であるため「x <= 30」の判定式の結果はfalse(偽)ですが、否定notが付くことで真偽が反転して全体的な評価はtrue(真)となります。
そのため、「True」が出力されます。
Pythonでは複数の条件式を一文で書ける?三項演算子の使い方
Pythonのif文の使い方について、もう少し複雑な書き方についても触れておきましょう。Pythonには三項演算子と呼ばれる書き方があり、これはif-elif-elseを1行で記載できる書き方です。
三項演算子の基本的な使い方は次のとおりです。
1 |
条件式が真のときに実行される処理 if 条件式 else 条件式が偽のときに実行される処理 |
elifまでを含めようとする場合は、「条件式が偽のときに実行される処理」に三項演算子を追加します。言葉だけでは分かりづらいと思いますので、具体例を見ていきましょう。
1 2 3 4 5 |
a = 15 if a > 10: print("aは10より大きいです") else: print("aは10未満です") |
この一般的なif文を三項演算子で書き直すと、次のとおりです。
1 2 |
a = 15 print("aは10より大きいです") if a > 10 else print("aは10未満です") |
さらに、elifを含む場合は次のように記載します。
1 2 3 4 5 6 7 |
a = 15 if a > 10: print("aは10より大きいです") elif a == 10: print("aは10です") else: print("aは10未満です") |
1 2 |
a = 10 print("aは10より大きいです") if a > 10 else print("aは10です") if a == 10 else print("aは10未満です") |
三項演算子の場合はelifをそのまま利用できず、最初の条件式で偽となったあとに再度条件式を記載するイメージで利用します。
三項演算子はif文が一行にまとまるため簡単なif文であれば活用しやすいでしょう。しかし、elifを含むような少しでも複雑なif文の場合は、逆に可読性が落ちる可能性が高いため、利用する際には注意が必要です。
プログラミング言語Pythonのif文についての解説は以上になります。Python if文は文法の中でも基本の1つですので、本記事で紹介した論理演算子も含めて、必ず理解しておきましょう。
最新情報・キャンペーン情報発信中