Python Works

Pythonで色々プログラミングする

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