「Pythonで、特にif文の使い方がイマイチ理解できていない…もっと核心的なところから詳しく解説してほしい!」
本記事は、こんな悩みを解決する内容です。
if文は「制御構文」と言われる、記述することでプログラムの動きをコントロールする構文のうちの一つなんです。
「条件式の値によって処理を分岐する」というのが、if文の役割です。
本記事では、if文の基本的な使い方やif-else文、if-else-elif文について具体例と共に解説していきます。
if文を本質的に理解し、使いこなせるようになりたいあなたは必ずチェックしてください!
if文とは、TrueとFalseの2択を導く条件分岐
if文とは、条件が分岐する指示を出すプログラムです。
Pythonだけでなく、JavaやPHPなど他のプログラミング言語でも使われています。
最も基本的な処理の1つで、使用頻度が非常に高い関数になります。
【書式】
条件式がTrueのときに行う処理
コロンとif文の次にくる処理のインデントを忘れないようにしましょう。
if文では分岐条件が書かれた「条件式」に対して、「True」と「False」の2択の結果が導かれます。
条件式の内容は必ずYESかNOの2択で答えられるものになります。
【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部に条件式は必要ありません。
【書式】
条件式が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の後には条件式の記述が必要です。
【書式】
条件式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」と同時に使うことも可能です。
【書式】
[条件式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
【計算結果】
【コード例】
1 * 2 * 3 * 4 * 5 * 6 == 720
【計算結果】
【コード例】
'文字列' == '文字列'
【計算結果】
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」の値をとります。
【基本的な書式】
[どちらも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」になることはありません。
【書式】
[どちらか一方でもtureの場合の処理]
次の例は、300歩または700歩の際に休憩するように
「休憩しましょう」と表示されるプログラムです。
【コード例】
walking = 700 if 300 == walking or walking = 700: print('休憩しましょう')
【出力結果】
条件式を否定して真逆にする「not」
「not 条件式」という形式で、条件式の前に記述します。
論理演算子の中では最もシンプルで、その条件式の値が真逆になるだけです。
条件式が「True」であれば、if文全体は「False」に、
条件式が「False」であれば、if文全体としての値は「True」になります。
【書式】
[条件式がFalse(if文はTrue)の場合の処理]
例として、歩数が1000歩以下でない場合には
「帰宅しましょう」と表示されるプログラムを構築します。
【コード例】
walking = 1500 if not walking <= 1000: print ('帰宅しましょう')
【出力結果】
まとめ
if文は、Pythonを学習していく中で頻繁に登場する非常に重要な構文です。
加えて、Python以外の多くのプログラミング言語でも利用されています。
コメント