Python高座


6. 制御構造

制御構造はごく常識的なものである、と言えない部分もあるのだが、とりあえず常識的な if 文から始めることにしよう。

if 条件:
elif 条件:
else:
elif はもちろん、else if の短縮形だが、else if とは書けない。elif 塊(block)、else 塊は省略可能である。ところで、塊の書き方だが、これが python 独特で、字下げ(indent)だけで表現する。c の {} や Pascal の begin,end に相当する記号はない。字下げには空白とタブが使える。首尾一貫していれば混在も可能だが、どちらかに統一する方がいいだろう。比較演算子は c に準じたものが多い。また、!= の代わりに <> が使える(もちろん != も使える)。一方、c と異なるのは、否定の単項演算子 not や論理積・論理和 and,or で、&& などは使えない。
while 文に移ろう。形式は、

while 条件:
else:
である。条件式と塊については if 文のところを見てもらうことにして、else 塊について説明する。while の条件が偽になった場合、else 塊が実行される。したがって、途中で抜け出す処理を書かなければ、明らかに else 塊は不要である。途中で抜け出す処理(すなわち break)で抜けてきた場合、else 塊は実行されない。普通の言語では while の中でフラグを用意して直後の if 文で判定するわけだが、それが不要になり、すっきりと書けるようになる。
次は for 文である。for 文は while と明確に違い、条件判断を(c のように)するのではない。形式としては以下のようになる。

for 変数 in リスト:
else:
ここでも再び else 塊が使える。この場合 else 塊が実行されるのはリストの最後まで周回(loop)が繰り返された時である。リストは任意のリストでいいのだが、特に他の言語で良く使うような等差数列で回したい時には、range([initial,]end[,step]) という関数を使うといい。これは initial 以上 end 未満の公差 step の等差数列からなるリストを返す。あるいは xrange という関数もあって、こちらはリストを最初に作ってしまうのではなく回しながら作っていくようになっているので、長い区間を回したい時にはこちらを使うことになるだろう。なお、これらの引数は多倍長の範囲は取れない。

最後にひとこと。
: を忘れるな。


目次索引