Pythonでif文を使って、条件分岐をする方法について書いています。
最初にif文について簡単に解説して、その後にelse文・elif文について解説しています。
ifと一緒に使用するelifやelseについても一緒に解説しました。
載せているコードはPythonのバージョン3.9.12で確認しました。
Pythonのif文って?どう書く?
if文は「もしも〜だったら〜する」というように、特定の条件のときにやりたい処理行うことができます。
if文を書くときには、ifの後に条件を書きます。
条件文の終わりにコロン(‘:’)をつけます。
例えば、下記のように使います。
fruit = 'apple'
if fruit == 'apple':
print('赤色です')
上記では、fruit変数に’apple’という文字列を入れています。
その後にif文を使っています。
fruit変数の値が’apple’なのかを比較演算子(‘==’)で比べています。
条件に合う場合には、配下のコードブロックが実行されます。
今回は条件に合うので、’赤色です’という文字列がprint関数で出力されます。
下記のようにfruitが条件に合わない場合は、何も出力せずに処理が終わります。
fruit = 'banana'
if fruit == 'apple':
print('赤色です')
上記のコードのようにPythonのif文の処理の中身はインデント(字下げ)しておく必要があります。
インデントされていない場合は?
if文の配下の処理コードがインデントされていない場合はエラーになります。
実際に下記のコードを動かしてみます。
fruit = 'apple'
if fruit == 'apple':
print('赤色です')
そうすると、このようにエラーが表示されました。
$ python3 if-test.py
File "/Users/xxx/if-test.py", line 4
print('赤色です')
^
IndentationError: expected an indented block
「インデントされたブロックが必要」というメッセージが表示されました。
インデントがズレている場合は?
if文の配下の処理コードのインデントが、それぞれズレている場合もエラーになります。
実際に下記のコードを動かしてみます。
fruit = 'apple'
if fruit == 'apple':
print('赤色です')
print('青色です')
print('黄色です')
そうすると、このようにエラーが表示されました。
$ python3 /Users/xxx/if-test.py
File "/Users/xxx/if-test.py", line 5
print('青色です')
IndentationError: unexpected indent
「予期しないインデント」というメッセージが表示されました。
このように、インデントがなかった場合や処理コードのインデントがズレている場合はエラーになります。
else(そうでない場合)はどう書くのか?
else文を書くと、if文に該当しない場合にelse文の処理を通るようになります。
else文はif文の後、もしくはelif文の後に書きます。
例えば、下記のように使います。
fruit = 'banana'
if fruit == 'apple':
print("りんごです")
else:
print("何かの果物です")
else文を書いた後はコロン(:
)をつけて、その配下にコードを書きます。
こちらもインデントしておく必要があります。
上記のコードでは、fruit変数にはbanana
が入っています。
fruit変数の内容をapple
と比較していますが、違うのでelse文のコードブロックを通ります。
結果、今回のコードでは「何かの果物です」が出力されます。
コード配下のインデントがなかったり、ズレていた場合は、if文と同様にこちらもエラーになリます。
elif(違う場合で、もしも〜だったら)はどう書くのか?
elif文はelse if
の略式です。
「もしも〜だったら」の後に「そうではなく〜だったら」といった形で、条件がつけれます。
if文の条件を書いた後に使用します。
例えば、下記のように使います。
fruit = 'banana'
if fruit == 'apple':
print("りんごです")
elif fruit == 'banana':
print("バナナです")
else:
print("何かの果物です")
elif文も条件を書いた後にコロン(:
)をつけて、配下に条件にあっている場合のコードブロックを書きます。
こちらも同様にコードブロックはインデントします。
上記のコードだと、fruit変数にbanana
が入っています。
最初に、if文でfruit変数がappleか確認します。
appleではないので、次にelif文の条件と合うかを確認します。
今回はelif文の条件に合うので、配下のコードが実行されます。
結果として、上記のコードは「バナナです」が出力されます。
elif文もインデントや、コードのそれぞれがズレているとエラーになります。
if文を使ったサンプルコード
if文を使用したサンプルコードを3つ載せてみました。
else文を省略する
else文は書かずに、if文・elif文だけを使用することも、もちろん可能です。
score = 80
if 90 <= score:
print("すごい!")
print(str(score) + "点です")
elif 80 <= score:
print("よくできました!")
print(str(score) + "点です")
elif 60 <= score:
print("がんばりました!")
print(str(score) + "点です")
上記のコードでは、score変数に80が入っています。
最初にif文で90と比べていますが、条件に合わないので、次の条件にいきます。
次の条件はelif文で書いています、条件を確認すると80点以上なので、ここのコードブロックが実行されます。
なので、結果としては「よくできました!」と「80点です」が出力されます。
else文が無いので、59点以下の場合は該当する条件文がないので、何も出力されずに処理が終わります。
if文を複数回使っている
プログラムの中で、if文は何度でも使うことができます。
fruit = 'apple'
if fruit == 'banana':
print("バナナです。")
elif fruit == 'apple':
print("リンゴです。")
else:
print("何かの果物です。")
if fruit == 'banana':
print("黄色です。")
elif fruit == 'apple':
print("赤色です。")
else:
print("色はわかりません")
上記のコードでは、fruit変数に’apple’が入っています。
最初のif・elif・else文で、’apple’と判定している箇所を通るので「リンゴです。」が出力されます。
その後に、また同じif文を書いています。
こちらでも同じ条件を通ります。
そのため結果は「リンゴです。」と「赤色です。」が出力されます。
同じ条件なので、if文の処理を上のほうにまとめてもよかったのですが、わざと2つ書いてみました。
おみくじを作る
最後におみくじを作ってみました。
出力するのは、大吉・中吉・小吉・吉・末吉・凶の6パターンです。
最初にランダムな数値を取得して、if・elif・elseを使って出力してみました。
import random
result = random.randrange(6)
if result == 0:
print("大吉です。")
elif result == 1:
print("中吉です。")
elif result == 2:
print("小吉です。")
elif result == 3:
print("吉です。")
elif result == 4:
print("末吉です。")
elif result == 5:
print("凶です。")
else:
print("?")
最初にrandomモジュールを使用して、0から5のランダムな数値を取得して、result変数に入れています。
その後にif・elif・else文で値を判定しています。
0だったら大吉、1だったら中吉…みたいな形です。
elseも用意していますが、0から5の数値しか取れないので、else配下のコードは実行されません。
おみくじが完成しました。
ランダムな値を取得するので、毎回結果が変わります。
コメント