Pythonの【if文】を基礎から応用まで理解する

Pythonのif文 Python

「Pythonで、特にif文の使い方がイマイチ理解できていない…もっと核心的なところから詳しく解説してほしい!」

本記事は、こんな悩みを解決する内容です。

「制御構文」は、記述することでプログラムの動きをコントロールする構文です。
種類はいくつもありますが、【if文】はそのうちの一つ。
「条件式の値によって処理を分岐する」というのが、if文の役割です。

if文を使っているプログラムとそうでないものでは、利便性に雲泥の差が生まれます。

本記事を読めば、if文の使い方について基本から応用まで丁寧に学習できます。
if文を本質的に理解し、使いこなせるようになりたいあなたは必ずチェックしてください!

if文とは、TrueとFalseの2択を導く条件分岐

if文とは、条件が分岐する指示を出すプログラムです。
Pythonだけでなく、JavaやPHPなど他のプログラミング言語でも使われています。
最も基本的な処理の1つで、使用頻度が非常に高い関数になります。

【書式】

if [条件式]:
[条件式がTrueのときに行う処理]

分岐条件が書かれた「条件式」に対して、「True」と「False」の2択の結果が導かれます。
条件式の内容は必ずYESかNOの2択で答えられるものになります。

【if文に対する処理】

①True(YES)の場合 ⇒ if文の処理へ
②False(NO)の場合 ⇒ 何も起きない

if文がTrueの場合のみ処理が実行される

if文では、条件式を計算した結果が「True」になれば、続く処理を実行します。

わかりやすいように、基本的なif文を使ったプログラムを作ってみました。
変数「walking」が1000以上であれば「ウォーキング完了」と表示するプログラムです。

【コード例】

歩数 = 1250

if walking >= 1000:
    print('ウォーキング完了')

【出力結果】

ウォーキング完了

条件式の結果はTrue(walking >= 1000)なので、
次の段に記述した処理(’ウォーキング完了’と表示)が実行されています。

【コード例】

歩数 = 980

if walking >= 1000:
    print('ウォーキング完了')

【出力結果】

条件式がFalse(walking >= 1000ではない)の場合、
次の段に記述した処理(’ウォーキング完了’と表示)は実行されないので、
出力結果には何も表示されていません。

if-else文 Falseの場合、別の処理を実行する

基本的なif文では、条件が達成されなかった
(条件式がFalseだった)場合には何も出力されません。

「else」または「elif」という記述を追加することで、
if文がFalseだった場合でも、処理を指定することができます。

「else」でFalseの場合の処理を指定する

「else」とは英語で「それ以外」や「その他」という意味です。
条件式がTrueだった場合を除く、全ての範囲をカバーします。

else部を追加するときは、基本的なif文の下段に以下のように記述します。
if文とは異なり、else部に条件式は必要ありません。

【書式】

if [条件式]:
[条件式がTrueのときに行う処理]
else :
[if文がFalseの場合に実行する処理]

次の例は、歩数が1000以上であれば完了を知らせるプログラムにelse部を追加したものです。
それによって、歩数が1000以上でなければ歩き続けるよう
「まだウォーキングしましょう」と表示させます。

【コード例】

walking = 1250

if walking >= 1000:
    print('ウォーキング完了')

else:
    print('まだウォーキングしましょう')

【出力結果】

ウォーキング完了

【コード例】

walking = 980

if walking >= 1000:
    print('ウォーキング完了')

else:
    print('まだウォーキングしましょう')

【出力結果】

まだウォーキングしましょう

if-else-elifで別の条件を追加する

if文の条件式の答えは「True」か「False」の2択です。
ですので、そのままでは2通りの処理しか行うことができません。
しかし2つ目以降の条件式を加えることで、∞通りの処理が可能になります。

if文に「elif」という記述を追加すれば、
条件式の値がFalseだった場合に別の条件式を検討させることができます。

「elif」とは「else if」の略で、「True以外(else)の場合における条件(if)」を意味します。

基本的な書式は以下の通りで、1番最初のif文の下段に記述します。
if文と同様、elifの後には条件式の記述が必要です。

【書式】

if [条件式1]:
[条件式1がTrueのときに行う処理]
elif [条件式2]:
[条件式2がTrueの場合に実行する処理]

elif文を使う場合、条件の検討には順序があります。
まずif文の条件式1を検討して、値がFalseだった場合のみ、elifの条件式2が検討されます。
そして、elifの条件式2がTrueとなる場合のみ、elifの処理2が実行されるのです。

例として、変数walkingが300歩以下の場合は早歩きするように
「早歩きしましょう」と表示するプログラムを作ってみます。

【コード例】

walking = 1250

if walking >= 1000:
    print('ウォーキング完了')

elif walking <= 300:
    print('早歩きしましょう')

【出力結果】

ウォーキング完了

【コード例】

walking = 290

if walking >= 1000:
    print('ウォーキング完了')

elif walking <= 300:
    print ('早歩きしましょう')

【出力結果】

早歩きしましょう

「else」と「elif」は併用することが可能

「elif」は何個でも記述することができ、「else」と同時に使うことも可能です。

【書式】

if [条件式1]:
[条件式1がTrueのときに行う処理]elif [条件式2]:
[条件式2がTrueの場合に実行する処理]else :
[条件式1も条件式2もFalseの場合に実行する処理]

次の例ではelifを複数、elseも同時に記述しています。
walkingが1000歩以上の場合はウォーキング完了、300歩以下は早歩き、
500歩で休憩、それ以外はまだウォーキングするよう知らせるプログラムです。

【コード例】

walking = 290

if walking >= 1000:
    print ('ウォーキング完了')

elif walking <= 300:
    print('早歩きしましょう')

elif walking == 500:
    print('休憩しましょう')

else:
    print('まだウォーキングしましょう')

【出力結果】

早歩きしましょう

【コード例】

walking = 750

if walking >= 1000:
    print ('ウォーキング完了')

elif walking <= 300:
    print('早歩きしましょう')

elif walking == 500:
    print('休憩しましょう')

else:
    print('まだウォーキングしましょう')

【出力結果】

まだウォーキングしましょう

このように、変数walkingが290の場合は早歩きをするよう、750の場合はゆっくり歩くように表示されました。

if文を記述するための「条件式」について

「条件式」とは、if文が処理をどう進めるか決定する原因となる式です。

この条件式には、「bool型」と「比較演算子」についての知識が必要になります。

bool型は「True」と「False」から構成されるデータ型

データ型とは、値の種類のことです。
それぞれ特徴があり、データ型によってPython内での扱われ方が異なります。

bool型は「真理値型」とも呼ばれ、「True(真)」と「False(偽)」の2種類の値を持つデータ型です。

if文は、この2つの値を使って条件成立を判断します。
計算の結果「True」という値が出れば条件成立、「False」という値が出れば条件は不成立と認識されます。
それによって処理を実行するか否か、どの処理を実行するかというプログラムの進行をコントロールするのです。

比較演算子は、値を比較するための演算子

プログラムで計算を行う時に記述する記号を「演算子」と呼びます。
値の間に特定の演算子を入力すれば、Pythonに決まった計算をさせることができるのです。

「比較演算子」も演算子の一種。
値の間に入力して実行すると、両端の値を比較した結果「True」か「False」どちらかの値が出ます。
この結果から、if文はプログラム処理をどう進めるか決定するのです。

Pythonには、次のような比較演算子があります。
(値Aと値Bの間にある記号)

  • A == B(「AとBが等しい」ならTrue)
  • A != B(「AとBが等しくない」ならTrue)
  • A < B(「AがB未満」ならTrue)
  • A > B(「BがA未満」ならTrue)
  • A <= B(「AがB以下」ならTrue)
  • A >= B(「AがB以上」ならTrue)

次の例では、「12が11未満かどうか」「1*2*3*4*5*6が720と等しいかどうか」「’文字列’が’文字列’と等しいかどうか」を調べました。

【コード例】

12 < 11

【計算結果】

False

【コード例】

1 * 2 * 3 * 4 * 5 * 6 == 720

【計算結果】

True

【コード例】

'文字列' == '文字列'

【計算結果】

True

if文の条件式を細かく設定できる「論理演算子」

if文の条件式を作れる言葉は、比較演算子だけではありません。
「論理演算子」という演算子を使えば、より高度な条件式を作ることができます。
if文の条件式に使われる論理演算子の種類は以下の3つです。

  • A and B(「AかつB」ならTrue)
  • A or B(「AまたはB」ならTrue)
  • not A (「Aではない」ならTrue)

2つの式が両方Trueでないと成立しない「and」

「条件式1 and 条件式2」という形で、2つの式の間に記述します。
2つの条件式が共に「true」である場合のみ、if文全体が「true」となります。
どちら片方でも「False」の値をとれば、if文全体も「False」の値をとります。

【基本的な書式】

if [条件式1] and [条件式2]:
[どちらもtrueの時に行う処理]

次の例では、これまで例として扱ってきた変数walkingのプログラムを利用し、もう少し複雑に条件を設定します。
歩数が300歩以上かつ500歩以下なら、水を飲むように
「給水しましょう」と表示されるプログラムです。

【コード例】

walking = 450

if 300 <= walking and walking <= 500:
    print('給水しましょう')

【出力結果】

給水しましょう

2つの式が片方でもTrueなら成立する「or」

「条件式1 or 条件式2」のように、2つの式の間に記述します。
2つの条件式のうち、どちらかでも「true」であれば、if文全体も「true」になります。
2つの条件式が、両方とも「False」でない限り、if文全体が「False」になることはありません。

【書式】

if [条件式1] or [条件式2]:
[どちらか一方でもtureの場合の処理]

次の例は、300歩または700歩の際に休憩するように
「休憩しましょう」と表示されるプログラムです。

【コード例】

walking = 700

if 300 == walking or walking = 700:
    print('休憩しましょう')

【出力結果】

休憩しましょう

条件式を否定して真逆にする「not」

「not 条件式」という形式で、条件式の前に記述します。
論理演算子の中では最もシンプルで、その条件式の値が真逆になるだけです。

条件式が「True」であれば、if文全体は「False」に、
条件式が「False」であれば、if文全体としての値は「True」になります。

【書式】

if not [条件式]:
[条件式がFalse(if文はTrue)の場合の処理]

例として、歩数が1000歩以下でない場合には
「帰宅しましょう」と表示されるプログラムを構築します。

【コード例】

walking = 1500

if not walking <= 1000:
    print ('帰宅しましょう')

【出力結果】

帰宅しましょう

まとめ

if文は、Pythonを学習していく中で頻繁に登場する非常に重要な構文です。
加えて、Python以外の多くのプログラミング言語でも利用されています。

つまりif文をマスターすることは、プログラミングの核心を理解することなのです。

プログラミング学習においては「コードの丸暗記」よりも「本質の理解」の方が大切。
if文を自由に扱えるように練習し、ハイレベルなプログラマーを目指しましょう。

コメント

タイトルとURLをコピーしました