分岐処理
プログラムの処理は「順次・分岐・反復」の組み合わせとされます。
プログラミング言語は一般的に上から書かれた命令文を順次実行しますが、
変数の値に応じて処理の内容を変化させることで、プログラムにより複雑な処理を
実行させることができます。
if文
if(もし~なら)
分岐処理の基本であるif文の構造は、以下になります。
「条件」が正しい場合、「処理」が行われます。
if 条件 :
処理
if文において「処理」を記述する行は字下げ(インデント)を行ってください。
if 条件 :
処理
このように書いた場合は、他のプログラミング言語と異なりPythonは
以下のようなエラーを返します。
IndentationError: expected an indented block
a = 1
if a == 1:
print("a is 1")
上記のプログラムは、"a is 1"を出力します。
変数aに1以外の値を格納した場合は、if以降の条件を満たさないため、
何も出力されません。
if~else(もし~なら、それ以外なら)
「条件」を満たす場合は「処理A」、満たさない場合は「処理B」を実行します。
if 条件 :
処理A
else :
処理B
a = 1
if a == 1:
print("a is 1")
else:
print("a is not 1")
上記のプログラムは、"a is 1"を出力します。
変数aに1以外の値を格納した場合は、"a is not 1"を出力するようになります。
if~elif~else(もし~なら、それ以外で~なら、それ以外なら)
「条件A」を満たす場合は「処理A」、「条件A」を満たさず、「条件B」を満たす場合は「処理B」、
いずれの「条件」も満たさない場合は「処理Z」を実行します。
elif文は複数記述することが出来ます。
if 条件A :
処理A
elif 条件B
処理B
else :
処理Z
a = 1
if a == 1:
print("a is 1")
elif a == 2:
print("a is 2")
elif a == 3:
print("a is 3")
else:
print("a is not 1,2,3")
上記のプログラムは、"a is 1"を出力します。
変数aに2を格納した場合は、"a is 2"を出力します。
変数aに3を格納した場合は、"a is 3"を出力します。
1,2,3以外の値を格納した場合は"a is not 1,2,3"を出力します。
比較演算子
if文における「条件」の多くは ある値 比較 ある値 を判定して、条件を満たすか満たさないか決定します。
この比較で用いる演算子を紹介します。
比較演算子 | 説明 |
---|---|
== | 等しい |
!= | 等しくない |
>= | 以上 |
<= | 以下 |
> | より大きい |
< | より小さい |
算数で使用する記号の意味そのままなため細かい説明は省略しますが、等号の演算子のみ「=」ではなく「==」です。
また、型をまたがった比較は等価とはなりません。
整数と小数点以下が0の値は比較が出来ますが(1 == 1.0 はTrueを返します)、
1 == "1" はFalseを返します。
and or not(かつ・または・ではない)
複数の「条件」を組み合わせて、より複雑な「条件」を作成することが出来ます。
a = 1
b = ['a','b','c']
if not (a == 1 and 'z' in b) or len(b) != 3 :
print("ok!")
このプログラムはand、or、notの機能を説明するために無理に書いたプログラムですが、
何をしているか分かりますか?正解は
(aが1かつb内に'z'が存在する)左記条件を満たさない、または、bの要素数が3でないです。
必ずFalseを返す値
PythonでFalse(偽)として扱われる値は
- False
- ゼロとして認識できる数値(0や0.0)
- 空のリスト、タプル、ディクショナリ、セット
- None
他にもありますが、使用される値は上記が多いです。
None型
None型は「値が存在しない」ことを示す特別な型です。
Noneか否かを判定するためには is None(またはis not None)を使用します。
x = None
if x is None:
print("x is none")
y = False
if y is not None:
print("y is not none")
FalseはNoneではない点に注意してください。