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 ifPythonでは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でもループ中にはbreakcontinueを置くことができ、動作は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を置くことができる。動作もいっしょ。