Python

条件分岐を表すifと、条件式の中身について

ifの基本構文

プログラミングでは条件によって異なる処理を行うことが必要です。
そのために使うのがifです。

基本構文は

if 条件式:
____実行処理(条件式が正しければ実行)

となります。
条件は比較演算子などが入ります。例えば

if a > 0:

if a < 3:

if a == 1:

 
などです。
イコールが’==’と’=’2つになっている
のを注意してくださいpythonでは
イコール1つの ‘=’ は変数への代入
イコール2つの ‘==’ は比較演算子
です。

簡単な例文を書きます

a = 3
if a > 2:
    print('aは2より大きい')

aは2より大きい

a = 3
if a > 5:
    print('aは5より大きい')

#(出力なし)

条件に合わないのでprint文が実行されません。

条件に分岐があるときはelseを使います。

if 条件:
____実行処理① (条件にあてはまる時に実行)

else:
____実行処理②(条件にあてはまらない時実行)

となります。

a = 8
if a > 5:
    print('aは5より大きい')
else:
    print('aは条件を満たしませんでした')

aは5より大きい

a = 3
if a > 5:
    print('aは5より大きい')
else:
    print('aは条件を満たしませんでした')

aは条件を満たしませんでした

条件の分岐を増やす時はelifを使います。

if 条件①:
____実行処理①(条件①のときに実行)
elif 条件②:
____実行処理②(条件②のときに実行)
else:
____実行処理③(それ以外のとき実行)

簡単な例を考えます
aには自然数が入るものとします。
ちなみに「%」は割り算の余りを求める演算子です。

a = 10
if a % 3 == 1:
    print('aは3で割ると1余ります')
elif a % 3 == 2:
    print('aは3で割ると2余ります')
else:
    print('aは3で割りきれます')

aは3で割ると1余ります

a = 2
if a % 3 == 1:
    print('aは3で割ると1余ります')
elif a % 3 == 2:
    print('aは3で割ると2余ります')
else:
    print('aは3で割りきれます')

aは3で割ると2余ります

a = 123456
if a % 3 == 1:
    print('aは3で割ると1余ります')
elif a % 3 == 2:
    print('aは3で割ると2余ります')
else: 
    print('aは3で割りきれます')

aは3で割りきれます

となります。

ifの条件式の中身について

実は
「>, <, ==」 は 「+, -, *, /」 と同じく、 ただの式としても使えます。


1 > 0
# True
4 < 0
# False
3 == 3
# True
3 == 4
# False

となります。
ここでの計算結果としてでてくる
「True」「False」は「真偽値」というタイプです。
2つに一つの値を取るbool型と呼ばれます。
2つなので0, 1でも表されます。

Falseは0
Trueは1
とみなされます。
試しに整数に変換すると

int(True)
# 1
int(False)
# 0

Falseは0 Trueは1に変換されます。

0と1として計算もできます

True * 10 
# 10
False + True
# 1

そういう見方でみると

if (TrueかFalseの値)
____実行処理(Trueの時):
else
____実行処理(Falseの時):

とも読めます。
たとえば

a = True
if a:
print('aは条件を満たします')
else:
print('aは条件を満たしません')

も機能します。

そしてTrueは1にあたるので

a = 1
if a:
    print('aは条件を満たします')
else:
    print('aは条件を満たしません')

aは条件を満たします

数字の0や空のものがFalseとされる

ここで
if内がFalseとなるのは
a = False (0)のときのみなので
aが0 以外(2でも3)だと
Trueとしてif側の処理が行われます。

a = 0
if a:
    print('aは条件を満たします')
else:
    print('aは条件を満たしません')

aは条件を満たしません

a = 5
if a:
    print('aは条件を満たします')
else:
    print('aは条件を満たしません')

aは条件を満たします

a = 5でも 0(False)ではないので、Trueと同じ処理がされます。

他の型で空のものはFalseとされます。
'', [], {}, set()などもFalseとされます。

a = 'テスト'
if a:
    print('aは条件を満たします')
else:
    print('aは条件を満たしません')

aは条件を満たします

a = ''
if a:
    print('aは条件を満たします')
else:
    print('aは条件を満たしません')

aは条件を満たしません

となります。
これはテキストの読み込みなどで非常に重要となります。

また、空のリスト [] はFalseとみなされますが、
ゼロが入っているリスト [0, 0, 0]などはTrueです。

a = []
if []:
    print('trueです')
else:
    print('falseです')

falseです

if [0, 0, 0]:
    print('trueです')
else:
    print('falseです')

trueです

数字でも文字でもif文は機能しますが、混乱しないように
自分で書くときは条件式の中身はなるべくTrueやFalseになるようにしましょう。