C#プログラマからみたPython 基本の制御構文
if文
#python if year == 1986: print('明治元年') elif year == 1912: print('大正元年') else: print('その他')
// C# if (year == 1986) { System.Console.WriteLine("明治元年"); } else if (year == 1912) { System.Console.WriteLine("大正元年"); } else { System.Console.WriteLine("その他"); }
このように、インデントでif文の処理を表現する。
C系の言語のように{}で表現はしないので、書き方としてはVB系の言語と似ているが、VBとは異なり条件の中で自由に改行を入れることが可能なので融通が効く。個人的にVBの条件式中で改行できない点は地味にイラッとしていた点なので、Pythonの条件式の融通はかなり嬉しい。
(とは言え、つい最近のVisualStudioでは自由に改行できるようになったが…。)
なおelse if
をPythonではelif
と表現する。
また、Pythonにはswitch
に相当する制御が存在しない。
switch
を利用したいときには、if〜elif
を利用することになる。
for文
#python for i in range(10): print(i)
foreach(int i in array) { System.Console.Write(i); }
インデントで表現するのはif文と同様。
range
でループ回数を制御している。なお、range
は引数で与えられた数の分だけリストを作成する関数。
構文こそfor
となっているが、動作としては…
シーケンスの要素を1つずつ繰り返し変数に代入していき、要素が無くなるまでループを実行します。
みんなのPython 112ページより
というものなので、C#のforeach
と同じ。
Pythonでもループ中にはbreak
やcontinue
を置くことができ、動作はC#と変わらない。
ループカウンタ
Pythonのループ処理では基本的にループカウンタは利用しないとのことだが(確かに最近はC#でもforeach
の方がよく使っている)、ループカウンタを利用したい場合は、enumerate()
関数を利用する。
#python for i, cnt in enumerate([1,2,3]): print(i)
// C# for(int i = 0; i < 3; i++) { System.Console.Write(i); }
enumerate()
関数は2つの要素をタプルにして返却する。
最初の要素はループカウンタに該当する数値で0から順番に増えていく。
while文
#python while cnt < 10: print(cnt) cnt += 1
// C# while(cnt < 10) { System.Console.Write(cnt); cnt++; }
C#などのwhile
と同様。
ただし、VBなどであったwhile〜do
のような制御構文は存在しない。
アレ使うと、脳がこんがらがって死ぬので歓迎。
なお、while
でもループ中にはbreakやcontinueを置くことができる。動作もいっしょ。