ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Python - 条件式と分岐:bool型・比較演算子・条件分岐

初めに

 本記事では、bool 型や比較演算子、if 文、elif 節、else 節など、Python における条件式と分岐についてまとめます。

bool 型、比較演算子

bool 型とは

 bool 型とは、True か False か、どちらかを値をとる型のことです。True は真、False は偽のこと。

比較演算子

 比較演算子は、2つの値を比較するための演算子のことです。

 Python において、次の比較演算子が定義されています。

比較演算子 説明
a == b a が b と等しい
a != b a が b と異なる
a < b a が b よりも小さい
a > b a が b よりも大きい
a <= b a が b 以下である
a >= b a が b 以上である
a is b a が b と等しい
a is not b a が b と異なる
a in b a が b に含まれる
(a, b は共に文字列、または、b はリストやタプル)
a not in b a が b に含まれない
(a, b は共に文字列、または、b はリストやタプル)

print(100 == 100)   #true
print(10 != 10) #false
print(1 < 2)    #true
print(1 > 7)    #false
print(11 is 11) #true
print("abc" in "abcdef")    #true
print("qwerty" not in "ty") #true

 in 演算子では、部分一致を判定します。

文字列の比較

 文字列の比較において、== や != などの比較は分かりやすいですが、不等号で文字列の大小を比較することができます。

不等号では、辞書のように、1文字目が同じなら2文字目、3文字目...と順番に比較されます。文字列の大小関係(順序)は文字のUnicodeコードポイント(文字コード)で判定されます。

(大雑把なルール)

  • 数字は、文字の0が最小、9が最大(0 < 1 < 2 < ... < 9)
  • アルファベットでは、a が最小、z が最大 (a < b < c < ... < z)
  • 大文字は小文字より小さい (A < a, B < b, ...)
  • 数字は、アルファベットよりも小さい (0 < 9 < A)

print("0" < "8")    #true
print("a" < "b")    #true
print("A" < "a")    #true
print("111" < "a")  #true
print("あいうえお" < "アイウエオ")  #true
print("abcde" < "あいうえお")   #true
print("あいうえお" < "亜")  #true

条件分岐

if 文、ブロック

 if 文を使って、条件分岐ができます。条件式が真となった場合、その後に記述されたブロックの中の文を順に実行します。

if 条件式:
    ブロック内の処理1
    ブロック内の処理2

 Python の条件分岐には、他の言語と違う特徴があります。

python では、ブロックをインデントを使って定義する。

 同じ位置にインデントされている文が同じブロックとして扱われ、インデントの数がずれていると別のブロックとみなされます。新しいブロックが出てくるべきではないところでインデントが異なる文を書いてしまうとエラーとなってしまいます。

if 条件式:
    ブロック内の処理1
    ブロック内の処理2
    if 条件式:
        ブロック内の処理1
        ブロック内の処理2
        if 条件式:
            ブロック内の処理1
            ブロック内の処理2
    ブロック内の処理3
    ブロック内の処理4
    if 条件式:
        ブロック内の処理1
        ブロック内の処理2


(例)

a = 1
b = 10
c = 100

if a < b:
    print(str(a) + "は" + str(b) + "より小さい")
    if b < c:
        print(str(a) + "が一番小さく" + str(c) + "が一番大きい")
else 節、elif 節

 if 文での条件式が true でない場合の処理を書きたい場合、else 節や elif 節を使うことができます。

if 条件式1:    #条件式1がtrueの場合, 処理1が実行される
    処理1
    ...
elif 条件式2:    #ここまでの条件式がfalseで条件式2がtrueの場合, 処理2が実行される
    処理2
    ...
elif 条件式3:    #ここまでの条件式がfalseで条件式3がtrueの場合, 処理3が実行される
    処理3
    ...
else:    #条件式がすべてfalseの場合, else節の処理が実行される
    処理n
    ...

(例)

score = 85

if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'F'

print(f'成績: {grade}')