Pythonで「if文」による条件分岐を書く方法は?

プログラミング
Python学習初心者の方に向けて、Pythonでif文はどのように書くのかを中心に説明しています。まずプログラミング言語においてif文とは何かを解説した後に「if else文」「if elif else文」などの基本的なものから、これらの三項演算子をPythonで1行で記述する応用編までご紹介しています。
Pythonで「if文」による条件分岐を書く方法は?

この記事では、Pythonを学習している方でif文が分からない方に向けて、Pythonでのif文の書き方や、if文を書く際の注意点、1行でif文を書く方法についてご紹介していきます。

if文とは?

if文は、条件分岐を行うためのプログラムで、Pythonだけではなく、PHP、Rubyなど多くのプログラミング言語でも採用されている基本的なプログラミング構文です。

これだけ多くの言語で使われていますが、if文自体の処理や考え方などは変わらないために、一度習得してしまうと、もしPython以外の言語を勉強することになっても応用が効くので便利です。

実際の現場でも、入力を手伝ってくれるような自動化プログラムだったり、Pythonが注目されている分野でもある人工知能のプログラムでも応用されていたりと幅広く利用されています。

基本をしっかり抑えておくことで、実際の現場に行った時にも活きてくるため是非とも習得しておきたい文法の1つです。

Pythonのif文で字下げする際の注意点

Pythonのif文の書き方について本格的に入っていく前に、Pythonにおけるif文での字下げは他の言語と少し異なるということについて触れておきます。

Pythonでは基本的に1行1ステートメントしか記述することができません。本来プログラミングにおいて「字下げ」は、コードの読みやすさを高めるために利用されています。

しかし、Pythonの場合は、ブロック文を指定するために本質的に必要な書式なのです。Pythonにおける字下げは行頭にある空白文字が重要で、同じ数の空白文字で字下げされたステートメントがブロックとみなされます。

多くのテキストエディタでは、空白文字で字下げした次の行のタブ文字\tで埋め合わせることが出来るのですが、Pythonでは、タブ文字をキー入力して字下げされているように見えても、字下げしたとは見なされません。

この他の言語との字下げの違いを理解しておかないと、誤ってタブ文字を使って字下げしたと思ってデバッグした時に、IndentationError:unexpected indentのようなエラーが起きてしまうので注意しましょう。

Pythonにおける基本的なif文の書き方

では、Pythonについての概要が理解できたところで、早速Pythonでif文を作っていきましょう。

if else文の書き方

if文の基本である「if else文」の書き方から説明していきます。

if 条件式:
条件式が正しい時に行う処理A
else:
それ以外の時に行う処理B

if文は基本的に、if文の後に続く「条件式」が真である時に上図の「処理A」を実行し、条件式が真ではない時にelse以下の「処理B」を実行するというのが基本の形です。

では、簡単にif else文の例文を見ていきましょう。

x = 3
y = 4

if x + y == 7 :
  print('正解です。')
else :
  print('不正解です。')

この場合は「正解です。」と出力される。

この場合、関数x = 3、y = 4なので、条件式x + yの答えは「7」です。つまり、条件式は「真」であるために、「正解です」と出力されるわけです。

例えばこの時、「if x + y == 9」となっていた場合、条件式は「偽」なので、「不正解です」と出力されてしまうのです。

if elif else文の書き方

「if else文」が理解できたところで、次は「if elif else文」について解説していきます。

if 条件式A :
条件式Aが「真」である時に行う処理A
elif 条件式B :
条件式Aが「偽」で、条件式Bが「真」である時に行う処理B
elif 条件式C :
条件式Aも条件式Bも「偽」で、条件式Cが「真」である時に行う処理C
・・・
else
上記の条件式がすべて「偽」である時に行う処理X

先ほどの「if else文」では、条件式に対する出力値は「処理A」か「処理B」の2通りしかありませんでした。これでは、条件分岐が1つしか設定できないので、複数の条件分岐をすることができません。

「if elif else文」は、複数の条件分岐を行いたい時に、必要になる構文で、「処理C」「処理D」「処理E」と分岐した処理をいくつも構築することができます。

elifの後に条件式を続けることでいくつも条件を分岐させることが可能です。elseの後の「処理X」は、全ての条件式が「偽」である時に実行する処理になります。以下に、実際に使う際の例文を作成しました。

x = 3


if x == 3 :
 print('Xは3です。')
 elif x > 0 :
 print('Xは正の数です。')
 elif x <  0 :
 print('Xは負の数です。')
 else :
 print('Xは0です。')

例えば、xの値が「正の数」「負の数」「0」「3」のどれか確かめたい時は、4つの条件分岐をしてif文を構成しなければなりません。

そのため、上記の文では、条件文を4つ設置することで、数が4つの条件の中のどれに当てはまるのか調べています。

Pythonでif文(if elif else)を1行で書く方法!

Pythonは、可読性をあげるためではなく、「ブロック文」という構造柄、このような設計になっています。
そのため、ここまで説明してきたif文をわずか1文で書くことができてしまうのです。

通常のif elif else文を書く場合は、先ほども紹介したように

if 条件式A :
条件式Aが「真」である時に行う処理A
elif 条件式B :
条件式Aが「偽」で、条件式Bが「真」である時に行う処理B
elif 条件式C :
条件式Aも条件式Bも「偽」で、条件式Cが「真」である時に行う処理C
・・・
else
上記の条件式がすべて「偽」である時に行う処理X

なのですが、1文で書く場合は、以下のように省略することができます。

処理A if 条件式A else 処理B if 条件式B else 処理C if 条件式C・・・else 処理X

これが、Pythonでif文を1行で書く方法です。
「elif」になっていたところを、普通の「if」に変更されていますし、簡略化されてしまっています。

先ほど「if elif else文」の項で触れた例をこの方法で記述すると以下のようになります。

print('Xは3です。') if x = 3 else print('Xは正の数です。') if x > 0 else print('Xは負の数です。') if x <  0 else print('Xは0です。')

まとめ

今回は、Pythonでif文を書く方法について主にご紹介してきました。現在AIや人工知能など機械学習のシーンで注目されている言語でもあるPythonも、基本の構文をしっかり押さえておくことはとても重要なことです。

Python学習者の方は、この記事を読んだら、もう一度自分でif文について理解することができているか確認し、実践していきましょう。


TECH PLAYでは、エンジニアの方向けに勉強会・イベント情報を提供しています。
ご興味のある方はぜひご参加ください。


おすすめのコラム