Python入門 - 条件分岐
もし〇〇だったら、・・・する
今まで、数値や文字列を、1行ずつ別々に実行してきました。
しかし、実際のプログラムでは
「まず、これをして、次にあれをして、その結果がこれこれだったら、それをして・・・」
というように、上から順番にプログラムを実行していって、条件によって処理を分岐させたりします。
今回は、条件によって処理を分岐させる「if文」について説明していきます。また、ここからはインタラクティブモードではなく、pyファイルにプログラムしていきます。
if文
条件分岐するためには、if文を使います。
if 条件式:
条件が真の時、実行する処理
・・・
サンプルコード
num = 10
if num < 100:
print('num is small')
実行結果
num is small
ifの後に「条件」を記述し、その下の行から「条件が真の時だけ実行する処理」を書きます。
この「条件が真の時だけ実行する処理」はifに比べて1段下げます。これは、実はとても重要な意味があり、なくてはならないもので、「インデント」と言います。この「インデント」によって、その処理がif文の中の処理だということがわかるのです。
例えば、次のような処理を見てみましょう。
サンプルコード
num = 1000
if num < 100:
print('num is small')
print('always!')
実行結果
always!
このようにprint('always!')はインデントされていないため、if文の中に入っていません。そのため、条件の真偽に関係なく、必ず実行されてしまいます。
インデントされたいくつかの処理のまとめることができます。これをブロックと言います。
サンプルコード
num = 1000
if num < 100:
print('num is small')
print(num)
if num >= 100:
print('num is big!')
print(num)
print('alwasys!')
実行結果
num is big!
1000
alwasys!
if else文
「もし条件が真なら・・・して、そうでなければ・・・する」という処理をするのが、「if else文」です。
サンプルコード
num = 1000
if num < 100:
print('num is small')
print(num)
else:
print('num is big')
print(num)
print('alwasys!')
実行結果
num is big
1000
alwasys!
if else文ではifブロックかelseブロックのどちらか1つが、必ず実行されます。
if elif else文
if else文をさらに進めて「もし条件1なら・・・、そうでなくて条件2なら・・・、そうでなければ・・・」という処理をするのが「if elif else文」です。
サンプルコード
str = 'triangle'
if str == 'circle':
print('circle')
elif str == 'triangle':
print('triangle')
else:
print('other')
実行結果
triangle
この例では、elifブロックは1つしかないですが、たくさんあってもOKです。また、elseブロックがなくても問題ありません。
この「if elif else文」では、注意しておいた方がいいことがあります。それは、上の条件から順番に確認していって、該当する条件が見つかったら、それ以降の条件で真になるものがあっても無視される、ということです。
サンプルコード
num = 5
if num > 10:
print('5 - ')
elif 3 < num and num <= 10 :
print('3 - 10')
elif -5 < num and num <= 7:
print('-5 - 7')
else:
print('- -5')
実行結果
3 - 10
条件としては「3 < num and num <= 10」でも「-5 < num and num <= 7」でも真ですが、先にある方のブロックだけ実行されます。
ネスト
最後に、ネストについて説明します。これはインデントと同じでif文に限らず、他のものにも同様な考え方です。
インデントされたブロックの中で、さらにインデントします。
サンプルコード
num = 5
str = 'circle'
if num > 10:
print('5 - ')
elif 3 < num and num <= 10 :
print('3 - 10')
if str == 'circle':
print('Tlhis is circle')
else:
print('This is not circle')
elif -5 < num and num <= 7:
print('-5 - 7')
else:
print('- -5')
実行結果
3 - 10
Tlhis is circle