Atom's tech blog

Pythonを勉強しよう! if文と比較演算子について

f:id:iAtom:20201109085645j:plain

Python初心者の備忘録.....

今回は、「 if 」文と「比較演算子」についてです。

if 」文はプログラムの流れを変えるために使用します。 「 比較演算子 」は「 if 」文の条件式に使うための演算子です。それでは個々にみていきましょう。

if文

「 if 」は、条件式がTrueのときはTrueルートのプログラムコードを実行、FalseのときはFalseルートのプログラムを実行するための条件式を記述します。

基本的なif文の形

基本的に「 if 」文、「 else 」文、「 elif 」文で記述します。「 elif 」は C言語の「 else if 」に相当します。

if のみの場合

if 条件式1:
    "条件式1がTrueのときに行う処理"

if , else 場合

if 条件式1:
    "条件式1がTrueのときに行う処理"
else:
    "すべての条件式がFalseのときに行う処理"

if , elif , else の場合

if 条件式1:
    "条件式1がTrueのときに行う処理"
elif 条件式2:
    "条件式1がFalseで条件式2がTrueのときに行う処理"
...
else:
    "すべての条件式がFalseのときに行う処理"

比較演算子

「 if 」文の条件式に必要となる演算子です。比較演算子の記号は下記です。

比較演算子 意味 記述例 比較結果の内容
== 等しい x == y xとyが等しいときTrue。xとyが異なるときFalse
!= 異なる x != y xとyが異なるときTrue。xとyが等しいときFalse
> 大きい x > y x値がy値より大きいときTrue。x値がy値より小さいときFalse
< 小さい x < y x値がy値より小さいときTrue。x値がy値より大きいときFalse
>= 以上 x >= y x値がy値以上のときTrue。x値がy値より小さいときFalse
<= 以下 x <= y x値がy値以下のときTrue。x値がy値より大きいときFalse
in 要素 x in y xがyの要素のときはTrue。xがyの要素でないときはFalse
not in 要素ではない x not in y xがyの要素でないときはTrue。xがyの要素のときはFalse

「 is 」、「 not is 」演算子もありますが、ここでは説明から外します。ご了承ください。

== の書き方例

「 == 」で比較できるものとして、文字列、数値、リスト、bool型(True/False)などがあります。 下記は文字列、数値、リスト比較です。

###################
###   数値比較    ###
###################
# value変数に100の数値を代入
value = 100
# value変数が100と等しいか比較
if 100 == value :
    # 等しい場合True
    print('True')
else:
    # 異なる場合
    print('False')

###################
###    文字列比較      ###
###################
# fruits変数にapple文字列を代入
fruits  = 'apple'
# fruirs変数がapple文字列と等しいか比較
if 'apple' == fruits :
    # 等しい場合True
    print('True')
else:
    # 異なる場合
    print('False')

###################
###  リスト比較     ###
###################
# listValue変数に100,200,300のリスト数値を代入
listValue1  = [100,200,300]
listValue2  = [100,200,300]
# listValue1と2を等しいか比較
if listValue1 == listValue2 :
    # 等しい場合True
    print('True')
else:
    # 異なる場合
    print('False')

# 出力結果
# True
# True
# True

!= の書き方例

「 != 」で比較できるものとして、文字列、数値、リストなどがあります。「 == 」演算子と同じです。 下記は文字列、数値、リスト比較です。

###################
###   数値比較    ###
###################
# value変数に100の数値を代入
value = 100
# value変数が100と異なるか比較
if 100 != value :
    # 等しい場合True
    print('True')
else:
    # 異なる場合
    print('False')

###################
###    文字列比較      ###
###################
# fruits変数にapple文字列を代入
fruits  = 'apple'
# fruirs変数がapple文字列と異なるか比較
if 'apple' != fruits :
    # 等しい場合True
    print('True')
else:
    # 異なる場合
    print('False')

###################
###  リスト比較     ###
###################
# listValue変数に100,200,300のリスト数値を代入
listValue1  = [100,200,300]
listValue2  = [100,200,300]
# listValue1と2を異なるか比較
if listValue1 != listValue2 :
    # 等しい場合True
    print('True')
else:
    # 異なる場合
    print('False')

# 出力結果
# False
# False
# False

> の書き方例

「 > 」で比較できるものとしては基本的には数値です。

# value変数に100の数値を代入
value = 100
# value変数が100より大きいか比較
if value > 100 :
    # 大きい場合True
    print('True')
else:
    # 小さい場合
    print('False')

# 出力結果
# False

比較した値は同じですが、条件式が100より大きいときだけTrueという条件のため、結果はFalse。

100を含めたいときは「 >= 」の比較演算子を使いましょう。

「 >= 」の書き方例

「 >= 」で比較できるものとしては基本的には数値です。

# value変数に100の数値を代入
value = 100
# value変数が100以上か比較
if value >= 100 :
    # 100以上の場合True
    print('True')
else:
    # 100より小さい場合
    print('False')

# 出力結果
# True

比較した値は同じで条件式が100以上(100を含む)のTrueという条件のため、結果はTrue。

< の書き方例

「 < 」で比較できるものとしては基本的には数値です。

# value変数に100の数値を代入
value = 100
# value変数が100より小さいか比較
if value < 100 :
    # 小さい場合True
    print('True')
else:
    # 大きい場合
    print('False')

# 出力結果
# False

比較した値は同じですが、条件式が100より小さいときTrueという条件のため、結果はFalse。

100を含めたいときは「 <= 」の比較演算子を使いましょう。

<= の書き方例

「 <= 」で比較できるものとしては基本的には数値です。

# value変数に100の数値を代入
value = 100
# value変数が100以下か比較
if value <= 100 :
    # 100以下の場合True
    print('True')
else:
    # 100より大きい場合
    print('False')

# 出力結果
# True

比較した値は同じで条件式が100以下(100を含む)のTrueという条件のため、結果はTrue。

inとnot inの書き方例

「 in 」の左辺には比較するための要素、右辺には比較する集合体を記述します。

# apple, orange,banana文字列をfruits変数に代入
fruits  = [ 'apple', 'orange','banana']

###################
###     in の使い方      ###
###################

# fruitsの変数にorangeの文字列が入っているか比較する
if 'orange' in fruits :
    # orangeの文字列が入っている場合
    print('True')
else:
    # orangeの文字列が入っていない場合
    print('False')

###################
###  not   in の使い方 ###
###################

# fruitsの変数にorangeの文字列が入っていないか比較する
if 'orange' not in fruits :
    # orangeの文字列が入っていない場合
    print('True')
else:
    # orangeの文字列が入っている場合
    print('False')

# 出力結果
# True
# False

複数の比較演算子の結合

一つのif文に複数の比較演算子をつけることもできます。ただし複雑にになりバグを埋め込む可能性もあるため、「 and 」、「 or 」演算子を用いてシンプルにし可読性などをよくする方法を活用した方がいいです。

比較演算子を2つ結合したとき

下記は「 < 」、「 <= 」を結合したときの条件式です。

# value変数に50の数値を代入
value = 50
# value変数が10より大きく、100以下か比較
if 10 < value <= 100 :
    # True
    print('True')
else:
    # False
    print('False')

# 出力結果
#True

比較演算子が2つの場合は、あまり複雑にならないのでシンプルにできそうですね。

この時の条件式は、10より大きく、100以下で比較した値は50なのでTrue。

結合できる比較演算子は、上記例以外の演算子も可能ですし、3つ以上の結合も可能です。

2つの条件式をandで記述したとき

こちらは「比較演算子を2つ結合したとき」と同じ条件式です。 and演算子は、左辺と右辺どちらもTrueが条件になります。 and演算子、or演算子、not演算子の論理演算子は別の記事で書きたいと思います。

# value変数に50の数値を代入
value = 50
# value変数が10より大きく、100以下か比較
if  value > 10 and value <= 100 :
    # True
    print('True')
else:
    # False
    print('False')

# 出力結果
#True

この時の条件式は、10より大きく、100以下で比較した値は50なのでTrue。

if , elseを一行で記述する方法

if , elseの基本形式で記述したとき

# value変数に100の数値を代入
value = 100
# value変数が100以上か比較
if value >= 100 :
    # 100以上の場合True
    print('True')
else:
    # 100より小さい場合
    print('False')

# 出力結果
#True

これを一行形式で記述すると下記となります。

一行形式で記述したとき

# value変数に100の数値を代入
value = 100
# value変数が100以上か比較し、100以上お場合はTrue、100より小さい場合はFalseを出漁
print('True' if value >= 100 else 'False' )

# 出力結果
#True

上下のサンプルソース共に同じ式になります。

とてもコードライン数は少なくなりますが、可読性と規模換算、プログラム評価を考えた場合、個人的には基本形が好きです。

省略した記述をするとき

プログラムでは、よく省略された書き方が出てくることがあります。if文で右辺の条件が記述されていないケース。

Bool型の場合

省略しない記述 
result = True
# result結果がTrueのときの比較
if result == True:
    print('True')
else:
    print('False')

## 出力結果
#True

3行目の 「 == True 」を省略することが可能です。

省略した記述
result = True
# result結果がTrueのときの比較
if result :
    print('True')
else:
    print('False')

## 出力結果
#True

省略してもサンプルコードどちらも同じ結果となります。

数値比較の場合

if文の数値結果が0以外の場合はTrue、0の場合はFalseのプログラムコードへ分岐します。

if (数値を結果とする式):は、if (数値を結果とする式) != 0: と同じになります。

省略しない記述
x = 5
y = 6

# 余りを計算し、奇数、偶数を確認する
if (x+y)%2 != 0:
    # 奇数の場合
    print('Odd')
else:
    # 偶数の場合
    print('Even')

# 出力結果
# Odd
省略する記述
x = 5
y = 6

# 余りを計算し、奇数、偶数を確認する
if (x+y)%2 :
    print('Odd')
else:
    print('Even')

# 出力結果
# Odd