制御ステートメント
プログラミングでパソコンに自動で作業をさせることを考えてみましょう。単純に命令をIron Pythonにさせているだけでは、WordやExcelのように人間が判断しているので、パソコンに自動で作業を行わせることにはなりません。状況によってパソコンに判断させることが必要になってきます。パソコンに判断させるルールについて記述する命令を制御ステートメント(制御命令文)と言います。
では制御ステートメントについて説明していきましょう。
if文
書式>if 〜 :
「もし〜ならば」という意味です。使い方をみてみましょう。# coding: shift-jis
# 注:このコードはコピー&ペーストしても動きません。手で入力してください。
a = "abc"
n = 10
if n > 0 :
print a
raw_input()
出力画面:
abc
上のコードは「もし変数nが0より大きかったら、変数aをprintしなさい」という意味になります。ifの後のprint文の行頭に空白が入っています。これはprint文がif文の条件に依存されることをIron Pythonがわかるように表記しています。
このように空白を入れることを「インデント」といいます。インデントは半角の空白文字か、Tab(キーボードの左側にあるキー)を使いますが、一般的には半角の空白文字4つを入力されていることが多いようです。
インデントの効果を確認してみましょう。
# coding: shift-jis
# 注:このコードはコピー&ペーストしても動きません。手で入力してください。
a = "abc"
d = "def"
g = "ghi"
n = 0
if n > 0 :
print a
print d
print g
raw_input()
出力画面:
ghi
今回は変数nが0より大きくなかったので変数aは表示されません。変数dのprint文も行頭がインデントされているので、if文の影響が続いていると判断されています。変数gのprint文はインデントされていないので、if文は終わったとIron
Pythonは判断して、表示させます。変数aと変数dのprint文のように、同じインデントを使って、一連の実行する命令の塊を表現したものをブロックといいます。この同じインデントというのがとてもIron Pythonには重要です。中途半端なインデントでは、分からなくなってしますからです。
例えば、次の場合です。
# coding: shift-jis
# 注:このコードはコピー&ペーストしても動きません。手で入力してください。
# このコードはエラーを起こします。
a = "abc"
d = "def"
g = "ghi"
n = 0
if n > 0 :
print a
print d
print g
raw_input()
Iron Pythonからしてみると「print dって何?if文は終わったの?」って分からなくなってしまいます。ちょっと応用、if文の中にif文を書いてみます。
# coding: shift-jis
# 注:このコードはコピー&ペーストしても動きません。手で入力してください。
a = "abc"
d = "def"
g = "ghi"
m = 10
n = 0
if m < 0 :
print a
if n == 0 :
print d
print g
raw_input()
出力画面:
ghi
変数nは0と同じですが、2番目のif文はあくまでも1番目のif文の条件が満たされた際に実行される命令文なので、print dは表示されません。このようにインデントはIron
Pythonにとって重要な意味を持ちます。else文
書式>if 〜 : else:
if文と一緒に使います。意味は「もし〜ならば、でなければ」の「でなければ」に当たります。elseの後のコロン(:)をよく忘れるので気をつけてください。# coding: shift-jis
# 注:このコードはコピー&ペーストしても動きません。手で入力してください。
a = "abc"
d = "def"
g = "ghi"
m = 10
n = 0
if m < 0 :
print a
else:
print d
print g
raw_input()
出力画面:
def
ghi
elif文
書式>if (1)〜 : elif (2)〜 :
if文と一緒に使います。意味は「もし(1)〜ならば、でなくて(2)〜ならば」の「でなくて(2)〜ならば」に当たります。else文とも一緒に使うことができます。# coding: shift-jis
# 注:このコードはコピー&ペーストしても動きません。手で入力してください。
a = "abc"
d = "def"
g = "ghi"
m = 10
n = 0
if m < 0 :
print a
elif n== 0 :
print d
else:
print g
raw_input()
出力画面:
def
変数の値やif文の条件を変えて、いろいろ試してみてください。