Python Python 入門 プログラミング

【python 入門】条件分岐 if文の書き方、使い方を習得する

python if eye

 

プログラミングの基本である、条件分岐のif文について紹介していきます。

 

本記事はこんな方におすすめです。

 

hituji
pythonを始めたばかりで、条件分岐について知りたい
hituji
条件分岐は知っているが、pythonの特殊な書き方も知っておきたい

 

 

本記事の内容

  • 真偽について
  • 比較演算子
  • 基本的書き方
  • 比較演算子
  • 条件を複数使う
  • 比較演算子の省略
  • 1行での記述
  • passの使い方
  • 文字列や配列(list, tuple)を使う場合
  • 関数を使う場合

 

 

pythonのif文は色々な書き方があるので、本記事の内容を知っておくと他の人のコードを見て、なんだこれ?とはならないレベルにまで習得できます。

python入門 基礎まとめも参考にしてください。

>> python 入門 基礎まとめ

 

サンプルコード

 

 

 

スポンサーリンク

真偽

if文では、条件が真(正しい)か偽(正しくない)によって、処理が実行されます。

真偽はTrue/Falseで表されます。

 

if文の一番シンプル書き方は次のようになります。

インデント(字下げ)は「タブ」若しくは「半角スペース4つ」を使います。

*他の書き方はあとでしっかり説明していきます。

 

条件に、True/Falseを入れて動かしてみます。

# 処理される
if True:
    print('Trueの時')
    
# 処理されない
if False:
    print('Flaseの時')
Trueの時

 

表示されたのは、Trueの時だけですね。

これが条件分岐の特徴で、条件がTrueの時のみ実行します。

 

メモ

print('文字')で、文字を出力することができます。

文字はコーテーション(')か、ダブルコーテーション(")で囲いましょう。

print(変数名)で、変数の値の表示もできます。

 

 

比較演算子

次に、True/Flaseと判定する条件で使う比較演算子についてです。

>>pythonドキュメント比較演算子

例えば、「10以上」「10未満」「10と等しい」などです。

これらは、下記の比較演算子で表すことができます。

 

演算子 Trueの時 Falseの時
x == y xとyが等しい xとyが等しくない
x > y xがyより大きい xがy以下
x >= y xがy以上 xがy未満
x < y xがy未満 xがy以上
x <= y xがy以下 xがyより大きい
x != y
not x == y
xとyが等しくない xとyが等しい
x is y xとyのオブジェクトが同じもの xとyのオブジェクトが違うもの
x is not y
not x is y
xとyのオブジェクトが違うもの xとyのオブジェクトが同じもの
x in y xがyに含まれている xがyに含まれていない
x not in y
not x in y
xがyに含まれていない xがyに含まれている

*オブジェクト:クラス、関数など取り扱っているもの

 

使ってみる

例えば、aという変数を1つ目と5つ目の比較演算子を試してみます。

a = 10
if a==10:
    print('aは10です。')
if a!=1:
    print('aは以外です。')
aは10です。
aは以外です。

 

2つとも条件がTrueになるので、文字が出力されています。

 

条件をprint文で確認することができます。

print(a==10)

Trueと表示されます。

 

1-6の他の演算子も試してみてください。

 

オブジェクトの条件判定

これは、今わからない場合は、頭の隅にでも置いておいてください。

変数以外にもオブジェクトの一致を見る時があります。

 

例えば、次の2つのコードを比べてみましょう。[10]というlist型を判定しています。

a = [10]
b = [10]
if a is b:
    print('aとbは一緒です。')
a = [10]
b = a
if a is b:
    print('aとbは一緒です。')

どちらが、「aとbは一緒です。」と出力されるでしょうか?

実際に動かしてみてください。

答えは、2つ目の方です。

 

2つ目の方は、b=a(bにaが入っている)で、オブジェクトが同じだということになります。

値が同じというのとは別の意味になります。

 

9,10つ目のinの使い方は、あとで「文字列や配列」のところで紹介します。

 

基本的使い方

さて、やっとここでif文の基本的な使い方を紹介していきます。

3つと1つおまけがあります。

if 条件

先ほども出てきましたが、1つ目

条件がTrueの時に実行されます。

a = 5
if a<10:
    print('aは10未満')
aは10未満

 

if 条件 else

2つ目。条件がTrueの時とFalseの時の処理を分けて実行

 

# if else
a = 11
if a<10:
    print('aは10未満')
else:
    print('aは10以上')
aは10以上

 

if 条件 elif 条件 ... else

3つ目。条件を複数入れる場合。

 

a = 5
if a<10:
    print('aは10未満')
elif a>=10:
    print('aは10以上')
aは10未満

 

elif 条件はいくつ足してもOKです。

elseは不要であれば省略ができます。

 

ここに注意

条件は上から優先されます。

下記例を見てみましょう。

a = 5
b = 5
if a<10:
    print('aは10未満')
elif b<10:
    print('bは10未満')
else:
    print('a,bは10以上')
aは10未満

 

b<10の条件にも一致しますが、a<10の条件が優先されて実行されます。

 

複数の条件をそれぞれ、判断したい場合は、if文を次のように分けましょう

a = 5
b = 5
if a<10:
    print('aは10未満')
if b<10:
    print('bは10未満')
aは10未満
bは10未満

それぞれの条件でしっかり処理がされています。

 

ifの入れ子

ifは入れ子にすることができます。

a = 5
b = 5
if a<10:
    if b<10:
        print('aは10未満で、bも10未満')
aは10未満で、bも10未満

 

 

メモ

他の言語をされたことがある方は、VBのselect case、Cのswitch caseはないの?

と思ったかもしれませんが、結論、ないです。

>> pythonドキュメント switchない理由

 

 

条件を複数使う

条件は複数同時に設定することができます。

例えば、条件が「20以上かつ30未満」というような場合です。

and orについて

条件を複数使う場合は、andとorを使います。

if (条件1) and (条件2):

といった使い方です。

この時、条件はかっこ()で囲ってあげる必要があります。

 

条件1 and 条件2の場合。両方がTrueの時のみTrueになります。

andの場合
条件1 条件2 結果
True True True
True False False
False True False
False False False

 

条件1 or 条件2の場合。どちらかがTrueであればTrueになります。

orの場合
条件1 条件2 結果
True True True
True False True
False True True
False False False

 

使ってみる

入れ子の時に使ったコードを変更します。

Before

a = 5
b = 5
if a<10:
    if b<10:
        print('aは10未満で、bも10未満')

After

a = 5
b = 5
if (a<10) and (b<10):
    print('aは10未満で、bも10未満')

条件2つを満たすときに、処理がされるので、同じ処理になりました。

 

他にも、一つの値を複数の条件で分ける時に使います。

a = 11
if a<10:
    print('aは10未満')
elif (a>=10) and (a<20):
    print('aは11以上、20未満')
elif (a>=20) and (a<30):
    print('aは20以上、30未満')
else:
    print('aは30以上')
aは11以上、20未満

 

 

比較演算子の省略

ここからが、少し特徴的な使い方になります。

比較演算子を使わなくても、TrueやFalseとなる場合があります。

対象 Trueになる Falseになる
数値 0以外 0
文字列 1文字以上ある 1文字もない
list、dict データが入っている データが空
オブジェクト Noneじゃない None

 

数値を例に見てみましょう。

a = 0
if a:
    print('aは0ではありません。')
else:
    print('aは0です。')
aは0です。

 

if a:としただけで、条件分岐で処理ができています。

 

list(配列データ)も見てみます。

list_data = [1,2,3]
if list_data:
    print(sum(list_data))
else:
    print('データ読み込まれていません。')
6

 

データが読み込まれてたら、処理するという場合などで使えます。

 

 

1行での記述

次のように、if else文は1行で表すことができます。

 

普通に書いた場合と比べてみましょう。

普通にif文を使った場合

a = 0.7
result = ''
if a > 0.5:
    result = '陽性'
else:
    result = '陰性'
print(result)
陽性

 

1行にした場合

a = 0.7
result = '陽性' if a > 0.5 else '陰性'
print(result)
陽性

 

 

passの使い方

if文では処理の記述を省略するにはpassを使う必要があります。

というのも他の言語では、処理は書かず省略できますが、pythonではできません。

例えば、下記コードを実行します。

a = 0.7
result = ''
if a > 0.5:
    result = '陽性'
else:
    # 処理検討中
print(result)
IndentationError: expected an indented block

 

 

というふうにエラーが出ます。

インデントエラーですが、elseの後に処理がないので怒られます。

 

こういう時は、passと入れると解決します。

a = 0.7
result = ''
if a > 0.5:
    result = '陽性'
else:
    # 処理検討中
    pass
print(result)

 

 

 

文字列や配列(list, tuple)

文字列や配列では比較演算子の「in」を使うことが多いです。

x in y で xがyの中に含むかどうかを判断することができます。

文字列の場合

a = 'りんごが食べたい'
if 'りんご' in a:
    print('りんごを含む')
if 'みかん' in a:
    print('みかんを含む')
りんごを含む

 

listの場合

a = ['りんご', 'みかん', 'ぶどう']
if 'りんご' in a:
    print('りんごを含む')
if 'スイカ' in a:
    print('スイカを含む')
りんごを含む

 

 

関数を使う場合

長くなりましたが、これで最後になります。

条件のところは、比較演算だけでなく、関数とかでも利用できます。

先ほど使った下記のコードを変更していきます。

Before

a = 0.7
result = ''
if a > 0.5:
    result = '陽性'
else:
    result = '陰性'
print(result)

After

def judge(value):
    if a > 0.5:
        return True
    else:
        return False
    
a = 0.7
result = ''
if judge(a):
    result = '陽性'
else:
    result = '陰性'
print(result)

判定するjudgeという関数を用意して、if文の条件の箇所に使っています。

コード量は多くなりますが、judgeの処理が複雑になるときは、比較演算子では対応できないので、関数化することで条件に使いましょう。

 

以上が、if文の使い方です。

これで、他の人のコードに右往左往されることはありません。

-Python, Python 入門, プログラミング