第8章 条件処理

8.2 if文

 条件分岐で一番基本的なパターンとなるのが、if(イフ)文です。これは英語の「if」という単語の意味の通り、「もし○○○ならば、×××する」という条件分岐を作る制御文です。if文は条件に応じて様々な流れを作ることができますが、この節では、最も単純なパターンについて解説していきます。

8.2.1 if文の基本構文

 if文の基本構文は下記のようになります。

書式:if基本構文

 この場合は、もし条件式が合っていたら(条件を満たしたら)、if文内の処理を行う、ということになります。

ポイント

・条件式を判定した結果は、必ずtrueかfalseのどちらかになる。

 プログラムの流れを図にしたものをフローチャートと呼びます。if基本構文の流れを表したフローチャートが図 8.2.1.1です。

図 8.2.1.1 : if基本構文のフローチャート

ポイント

・ある条件が成立する時だけ処理を実行する場合、if文を使用します。

8.2.2 比較演算子とは

 条件式を書くためには、比較演算子知識が必要になります。
 比較演算子とは、式の左辺と右辺の関係を表す演算子です。
 例えば算数では、「1 + 2 = 3」のような式が成立しますが、これは「1+2」と「3」が同じであることを比較演算子「=」で表しているとも言えます。
 Pythonの世界では、下の表 8.2.1にある比較演算子を使うことが決まっています。

表 8.2.1 : 比較演算子

 前節のif文の条件式に、この比較演算子を当てはめてみましょう。

 この場合は、もしaとbが等しければ(a==bがtrueならば)、処理を行うということになります。
 フローチャートで表すと図 8.2.2.1のようになります。

図 8.2.2.1 : if基本構文と比較演算子のフローチャート

8.2.3 インデントを使ったブロックの定義

 if 文では条件式が真の場合、どこからどこまでの処理が実行されるのか、範囲を示したものをブロックと呼びます。
 他のプログラミング言語であるJavaやPHPにおいて、ブロックの範囲が括弧{ }で囲ってあるため明確ですが、ご覧の通り、Pythonでは処理の開始、完了のタイミングがJavaやPHPほど明確ではありません。

図 8.2.3.1:PythonとPHPのif分の比較

 そのため他の言語のように記号や特別な文字を使わず、Pythonではインデント(字下げ)によってブロックの範囲で判断します。

図 8.2.3.2:ブロックの範囲とインデント

 同じ位置にインデントされている文章を、同じブロックとして扱うため、インデントの数がずれていると他のブロックとみなされるため、同一処理内のインデントは揃えるように注意しなければなりません。

図 8.2.3.3:インデントの際の注意点

8.2.4 if文の条件式が成立するプログラム

 比較演算子「= =」を使った条件式が成立し、メッセージが表示されることを確認します。

ソース・フォルダ:/Desktop/Python超入門テキスト
ファイル名    :第8章.ipynb
アクセスURL   :http://localhost:8888/notebooks/Desktop/Python超入門テキスト/第8章.ipynb

➢ 第8章.ipynb/8.2.4 if文の条件式が成立するプログラム

	
	# 比較用の値を管理する変数の宣言
	a = 5
	b = 5
	
	print(‘-- if文①開始 –')

	if a == b :
		print(‘変数aと変数bは等しい。’)
		print(‘変数aの値は:’ , a)
	
	print(‘-- if文①終了 –’) 
	
	print(‘-- if文②開始 –’)
	
	if a > b :
		print(‘変数aは変数bより大きい。’)
		print(‘変数bの値は:’ , b)
	
	print(‘-- if文②終了 –’)
	
	

実行結果

解説
 3、4行目ではint型の変数aとbを宣言し、それぞれの変数に同じ値5を代入しています。

 8~10行目までが一つ目のif文です。9、10行目において処理内のインデントを揃えているのがわかります。条件式はtrueであるため、処理内の出力が行われました。

 また9、10行目はインデントが同じであるため、同一ブロックとみなされるのに対して、12、14行目はインデントが異なるため、同一ブロックとはみなされません。
そのため9、10行目と違い、8行目の条件式がtrueかfalseに寄らず、処理が実行されます。

 一方、16~18行目までが二つ目のif文ですが、処理の内容がfalseであったため、処理は実行されませんでした。

 しかし20行目は、17、18行目とインデントが異なり同一ブロックと見なされないため、16行目の条件式がtrueかfalseに寄らず、処理が実行されます。

図 8.2.4.1 : 上記if文のフローチャート

8.2.5 !=演算子を用いた条件式が成立するプログラム

 比較演算子「! =」を使った条件式が成立し、メッセージが出力されることを確認します。

ソース・フォルダ:/Desktop/Python超入門テキスト
ファイル名    :第8章.ipynb
アクセスURL   :http://localhost:8888/notebooks/Desktop/Python超入門テキスト/第8章.ipynb

➢ 第8章.ipynb/8.2.5 !=演算子を用いた条件式が成立するプログラム

	
	# 比較用の値を管理する変数の宣言
    a = 2
    b = 5
    
    print(‘-- if文開始 –’)
    
    if  a  !=  b :
        print(‘変数aと変数bは等しくない。’)
    
    print(‘-- if文終了 –')
	
	
	

実行結果

解説
 前項のプログラムと比べると、条件式の内容が異なります。比較演算子「!=」は、左辺と右辺が等しくない場合にtrueとなります。
 3、4行目にて変数aには2、変数bには5が代入されています。

 8行目はaとbを比較し等しくない場合をtrue、等しい場合をfalseとした条件式となっており、等しくないためこの条件式はtrueとなり、9行目の処理が実行されます。

 このサンプルプログラムのフローチャートを図 8.2.5.1に示します。

図 8.2.5.1 :当プログラムのフローチャート


NEXT>> 8.3 if-else文