Python学習メモ:制御構文
変数・コメント・ブロック
変数は型宣言不要。実行時に決まる。ただし型が異なると実行時エラーとなるので、実装時には型は意識する必要がある。 コメントは#(シャープ)で。ブロックはインデントで表現する。
if
構文は以下の通り。
if 条件式: 処理 elif 条件式: 処理 else: 処理
else if ではなくelif。条件式はおなじみの ==、<、> 、!=などの他に、and、or、notも使用できる。
偽以外が真となり、偽は以下の通り。
オブジェクトはデフォルトは真。__bool__()がFalseを返すとき、__len__()が0を返すときはFalseとなる。
- None
- False
- 数値型のゼロ(0、0.0、0j)
- コンテナオブジェクト(文字列、リスト、辞書、集合)の空オブジェクト
詳細は組み込み型 — Python 3.8.5 ドキュメントを参照。
条件演算子の連鎖
条件演算子を連鎖させて比較することができる。
x < y < z # x < y and y < z と同じ
書き方によっては可読性を落とすため注意が必要。
x < y > z # x < y and y > z と同じ
== と is
== は等価性、isはオブジェクトの同一性を比較する。
コンテナオブジェクトの in / not in
コンテナオブジェクトに含まれるかどうかを in / not in で判定できる。
container = ["x", "y", "z"] if "x" in container: 処理
for
構文は以下の通り。C#のforeachっぽく使える。
for 変数 in 繰り返し可能なオブジェクト: 処理
range()で回数繰り返し。
# 10回繰り返し。iには0〜9が入る。 for i in range(10): print(i)
enumerate()を使えば要素とインデックスを同時に取得できる。
container = ["hoge", "piyo", "fuga"] for index, element in enumerate(container): print(f'{index}:{element}'}
0:hoge 1:piyo 2:fuga
else
forでもelseが使用できる。終了時に一度だけ処理したい場合に記述する。
break時には実行されない。
for 変数 in 繰り返し可能なオブジェクト: 処理 else : 最後に一度だけ実行したい処理
while
構文は以下の通り。他の言語と特に変わらず使用できる。
while 条件式:
処理
こちらもelseが使用できる。
:=
セイウチ演算子と呼ばれる。Python3.8で導入された。
変数への代入と使用を一度に行える。
# lenの返り値を代入してそのまま使える if (n := len(array)) > 5 : print(n)