Pythonのif文コレだけ 基本の使い方

Focused young developer coding late in office writing script shown on computer monitors, serious handsome coder programmer hacker programming developing software applications working alone at night

 前回の記事では繰り返し処理forループについて学習しました。この記事では特定の条件を満たす場合に実行内容を変えるif文について学習します。forループと今回、学習するif文を組み合わせる事でかなり大体のプログラムは書けると言っても過言でありません。それでは早速、学習をスタートしましょう。

この記事を読むことであなたは
・if文の基本的な使い方
・if文で判定する条件式の基本
について理解することができます。

if文の基本

 実際のプログラムを見ながら説明しましょう。次のプログラムを見てください。このプログラムではforループを回しながら、数が偶数か奇数かを判定するプログラムです。

for i in range(10):
  if i % 2 == 0:
    print("This is even.")
  else:
    print("This is odd.")    

このようにif文は次の形式で記述します。

if 条件式:
    実行文

 if文の条件式の部分が真(True)になる事で、インデントされたブロックの実行文が実行されます。今回の場合、条件式はi % 2 == 0ですので、2で割った余りが0かどうかです。余りが0の場合、偶数ですので、実行文の部分はprint関数を使って、偶数であることを表示しています。

 elseそれ以外全てのケースを指し、こちらが実行されるという意味です。今回の場合、2で割り切れない場合は全てこちらですが、その場合は奇数ですので、print関数で奇数であることを表示しています。実行結果は次の通りです。

実行結果

This is even.
This is odd.
This is even.
This is odd.
This is even.
This is odd.
This is even.
This is odd.
This is even.
This is odd.

elifと条件式

 複数の条件式を判定したい場合や条件式自体が複数の条件から成る場合の例を示します。次のプログラムを見てください。

for i in range(10):
  if 0 <= i < 5:
    print("{i} is less than 5".format(i=i))
  elif (5 <= i) and (i <= 8):
    print("{i} is between 5 and 8".format(i=i))
  else:
    print("{i} is greater than 8".format(i=i))

 今回は先程よりはやや複雑なプログラムになっています。1つ目のifではiが0以上、5未満かどうかを判定しています。このようにPythonではa以上、b以下のような複数の条件を一纏めで記述する事ができます。

 また、if文の次のブロックにはelifが登場しています。これは最初のifを実行してTrueにならなかった場合に、次に実行される条件式になります。このように3つ以上の分岐になる場合はif, elif, elseを使います。ここでは条件式としてiが5以上、8以下かどうかを判定しています。

 一番最初の式では1つの条件式で表していましたが、別の例を示すために、ここではandを使って、2つの条件式の論理積を取っています。なお、どちらかの条件が満たされれば良い場合にはorを使います。

このプログラムの実行結果は次の通りです。

実行結果

0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is between 5 and 8
6 is between 5 and 8
7 is between 5 and 8
8 is between 5 and 8
9 is greater than 8

まとめ

 この記事ではif文の基本的な使い方、また条件式の基礎について学びました。

if 条件式:
    実行文
elif 条件式:
    実行文
else:
    実行文

# xが正かどうかを判定する条件式
x > 0

# x が1以上3以下かどうかを判定する条件式
(1 <= x) and (x <= 3)
1 <= x <= 3

 このif文の書き方と条件式の書き方の2つをマスターしておけば、多くの場合は事足ります。また、これまで学習してきた文法は一緒に使われる事が多いですので、必要に応じて復習しておきましょう。

Tips: Noneの判定

 ここではif文のTipsとしてNoneの判定を取り扱いたいと思います。Noneとは“何も無い”を表すためのデータ型です。NoneはPythonの様々なところで現れます。例えば、ある変数がNoneかどうかをif文で判定して、Noneでは無い場合に特定のフラグを立てるというような使われ方をする事も多いです。次のプログラムを見てください。

args = None
some_flag = False
if args is not None:
  some_flag = True
print("some_flag: ", some_flag)

 ここではargsという変数にNoneが入っています。Noneを判定しているのは3行目です。まずisというのは”==”に似た意味になります。基本的にはNoneを判定するときはisを使うのだ、くらいに覚えておけば良いかと思います。

 次に、args is not Noneという風にnotを使っています。まるで文章のようですね。このように一読して意味が取れるようにプログラムを書くのがPythonではとても重要です。さて、話を戻すとnot否定演算子と言って、条件がTrueの場合にFalseを返すような演算子です。このため、argsがNoneでは無い場合にTrueになります。

 ここではargsがNoneではない場合に、何かのフラグ(some_flag)をTrueにしています。今はargsにはNoneを設定しているため、このif文は実行されません。イメージ的には普段はNoneだが、特定のケース(例えば、デバッグモードでプログラムを走らせたいときなど)にはargs=”Debug”と値を入れるケースを想定しています。

この場合には、Noneではなくなりますので、フラグがTrueに変更されるわけです。科学技術計算ではよく出てくる文法になりますので覚えておきましょう。ちなみにこのプログラムの実行結果は次の通りです。

実行結果

some_flag:  False
The following two tabs change content below.
メーカーR&D職 研究開発業務にPythonを使用。 Udemy講師およびKindleで電子書籍を出版。 Udemyでは受講生 約15,000名 Pythonの適用範囲: データ分析、画像処理、統計解析、並列計算、流体解析、深層学習

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUT US

メーカーR&D職 研究開発業務にPythonを使用。 Udemy講師およびKindleで電子書籍を出版。 Udemyでは受講生 約15,000名 Pythonの適用範囲: データ分析、画像処理、統計解析、並列計算、流体解析、深層学習