【 Python 】条件分岐(if文)

今回は、Pythonにおける条件分岐について記事にしたいと思います。

Pythonのインストールが終わってない方はこちら。
[st-card-ex url=”https://cubkitson.net/2019/02/04/python%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB” target=”_blank” rel=”nofollow” label=”” name=”” bgcolor=”” color=”” readmore=”>>> NEXT”]

IDLEで実行?なにそれ?美味いの?って方はこちら。
[st-card-ex url=”https://cubkitson.net/2019/02/04/python%E3%81%AEidle” target=”_blank” rel=”nofollow” label=”” name=”” bgcolor=”” color=”” readmore=”>>> NEXT”]

もし何々ならば

ifは英語でいうと「もし」です。

プログラムでは、条件分岐と言います。

もし、Aならばコレをしなさい。BもしくはCならコレを、DかつEならコレを、全てに当てはまらなかったらコレをしなさい。

というような命令をすることができます。

とりあえず、何も考えずに以下のコードをPythonのIDLEへコピペして実行してみてください。

[st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”]x = input("何か数字を入力してください: ")

if str.isdecimal(x):

x = float(x) # ifの条件を満たしている場合

print (x) # ifの条件を満たしている場合

else: # 条件を満たしていない場合

print ("数字って言ったでしょ")[/python][/st-mybox]

結果はいかがでしたでしょうか?

[st-cmemo fontawesome=”fa-lightbulb-o” iconcolor=”#FFA726″ bgcolor=”#FFF3E0″ color=”#000000″ iconsize=”100″]プログラムの途中で、コメントアウトしたい場合、#に続いてコメントを入れられます。[/st-cmemo]

解説編

[st-mybox title=”1行目” fontawesome=”” color=”#757575″ bordercolor=”#ccc” bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold”]
x = input("何か数字を入力してください: ")
[st-marumozi fontawesome=”” bgcolor=”#F48FB1″ color=”#fff” radius=”30″ margin=”0 10px 0 0″]日本語訳:[/st-marumozi] 「何か数字を入れてください:」と表示させ、入力された文字列をxという変数に入れなさいという命令です。
[st-cmemo fontawesome=”fa-lightbulb-o” iconcolor=”#FFA726″ bgcolor=”#FFF3E0″ color=”#000000″ iconsize=”100″]input文で入力された文字や数字は、必ずstr型で変数に代入されます。[/st-cmemo][/st-mybox] [st-mybox title=”2行目” fontawesome=”” color=”#757575″ bordercolor=”#ccc” bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold”]
if str.isdecimal(x):
[st-marumozi fontawesome=”” bgcolor=”#F48FB1″ color=”#fff” radius=”30″ margin=”0 10px 0 0″]日本語訳:[/st-marumozi] 「もしxが半角数字であれば」です。
[st-cmemo fontawesome=”fa-lightbulb-o” iconcolor=”#FFA726″ bgcolor=”#FFF3E0″ color=”#000000″ iconsize=”100″]str.isdecimal()というのは、()の中に入れられた数値や文字もしくは変数が半角数字、全角数字であればtrue(真)を返し、そうでなければfalse(偽)を返すというPythonの関数です。[/st-cmemo][/st-mybox] [st-mybox title=”3・4行目” fontawesome=”” color=”#757575″ bordercolor=”#ccc” bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold”]
x = float(x)
print (x)
[st-marumozi fontawesome=”” bgcolor=”#F48FB1″ color=”#fff” radius=”30″ margin=”0 10px 0 0″]日本語訳:[/st-marumozi] 「xのデータ型を浮動小数点型にし、Xを出力しなさい」です。
[st-cmemo fontawesome=”fa-lightbulb-o” iconcolor=”#FFA726″ bgcolor=”#FFF3E0″ color=”#000000″ iconsize=”100″]インデントされていますので、3、4行目はif文の条件を満たす場合であると判断できます。[/st-cmemo] [/st-mybox] [st-mybox title=”5行目” fontawesome=”” color=”#757575″ bordercolor=”#ccc” bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold”]
else:
[st-marumozi fontawesome=”” bgcolor=”#F48FB1″ color=”#fff” radius=”30″ margin=”0 10px 0 0″]日本語訳:[/st-marumozi] 「そうでなければ」です。
[/st-mybox] [st-mybox title=”6行目” fontawesome=”” color=”#757575″ bordercolor=”#ccc” bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold”]
 print ("数字って言ったでしょ")
[st-marumozi fontawesome=”” bgcolor=”#F48FB1″ color=”#fff” radius=”30″ margin=”0 10px 0 0″]日本語訳:[/st-marumozi] 「数字って言ったでしょ」を出力しなさい。
[/st-mybox]

こんな感じになるわけです。

[st-mybox title=”if文の構文” fontawesome=”fa-check-circle” color=”#FFD54F” bordercolor=”#FFD54F” bgcolor=”#FFFDE7″ borderwidth=”2″ borderradius=”5″ titleweight=”bold”]if 条件式:
(インデント)何らかの命令
else:
(インデント)何らかの命令
が基本となります。[/st-mybox]

こんなことも。

[st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”]x = input("何か数字を入力してください: ")

if str.isdecimal(x):

x = float(x) # ifの条件を満たしている場合

print (x) # ifの条件を満たしている場合

if x >= 10 and x < 1000:

print ("てか、一桁でいいじゃん")

elif x < 10:

print ("横着者バンザイ")

else:

print ("4桁以上ですか・・・")

else: # 条件を満たしていない場合

print ("数字って言ったでしょ")[/python][/st-mybox] [st-mybox title=”追加された部分” fontawesome=”” color=”#757575″ bordercolor=”#ccc” bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold”] [st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”] if x &gt;= 10 and x &lt; 1000:

print ("てか、一桁でいいじゃん")

elif x &lt; 10:

print ("横着者バンザイ")

else:

print ("4桁以上ですか・・・")[/python][/st-mybox] [st-marumozi fontawesome=”” bgcolor=”#F48FB1″ color=”#fff” radius=”30″ margin=”0 10px 0 0″]日本語訳:[/st-marumozi] もし、xが10以上かつ1000未満なら「てか、一桁でいいじゃん」を出力し、xが10未満なら「横着者バンザイ」を出力し、それ以外なら「4桁以上ですか・・・」を出力しなさい。というのが追加されています。
[/st-mybox] [st-mybox title=”if文の構文2” fontawesome=”fa-check-circle” color=”#FFD54F” bordercolor=”#FFD54F” bgcolor=”#FFFDE7″ borderwidth=”2″ borderradius=”5″ titleweight=”bold”]

if 条件式A:
  条件式Aを満たす場合の何らかの処理
elif 条件式B:
  条件式Bを満たす場合の何らかの処理
else:
  全ての条件式に当てはまらない場合の何らかの処理

[/st-mybox]

勘のいい方は気がついていると思いますが、elifを増やすことで、どんどん条件を細かくすることが出来ますヨ!

[st-cmemo fontawesome=”fa-lightbulb-o” iconcolor=”#FFA726″ bgcolor=”#FFF3E0″ color=”#000000″ iconsize=”100″]else:はifの条件に当てはまらない場合に作動するものですので、省いても特に問題ありません。[/st-cmemo]

難関場所

ここで難しいのは、Trueを返す、Falseを返すという言葉と、突然出てきたstr.isdecimal()という関数だと思います。

TrueやFalseを返すというのはプログラミングをする上で、よく使用される言葉です。

今回の場合は「ifの条件を満たすか満たさないか」と言い換えることが出来ます。

私が上手い例を思いつかなかっただけで、str.isdecimal()はとりあえず、現時点では考える必要はありません。

最後に

条件分岐であるif文は、後述するループ(繰り返し)に並んで重要な構文です。

しっかりマスターしておきましょう!

最後までお読みいただきありがとうございました!