理由はそのうち考える

まずやってみよう

Python学習メモ:制御構文

gihyo.jp

変数・コメント・ブロック

変数は型宣言不要。実行時に決まる。ただし型が異なると実行時エラーとなるので、実装時には型は意識する必要がある。 コメントは#(シャープ)で。ブロックはインデントで表現する。

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)

詳細はWhat's New In Python 3.8 — Python 3.8.5 ドキュメントを参照。