【 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”]


if str.isdecimal(x):

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

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

else: # 条件を満たしていない場合
    
    print ("数字って言ったでしょ")


[/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("何か数字を入力してください: ")

「何か数字を入れてください:」と表示させ、入力された文字列を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):

「もし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)

「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-mybox] [st-mybox title="日本語訳:6行目" fontawesome="" color="#757575" bordercolor="#ccc" bgcolor="#ffffff" borderwidth="2" borderradius="2" titleweight="bold"]

 print ("数字って言ったでしょ")

「数字って言ったでしょ」を出力しなさい。
[/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"]


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 ("数字って言ったでしょ")


[/st-mybox] [st-mybox title="追加された部分" fontawesome="fa-code" color="#6bb6ff" bordercolor="#ff6893" bgcolor="#ffffff" borderwidth="2" borderradius="5" titleweight="bold"]


    if x &gt;= 10 and x &lt; 1000:
 
        print ("てか、一桁でいいじゃん")
 
    elif x &lt; 10:
 
        print ("横着者バンザイ")
 
    else:
 
        print ("4桁以上ですか・・・")


[/st-mybox]

もし、xが10以上かつ1000未満なら「てか、一桁でいいじゃん」を出力し、xが10未満なら「横着者バンザイ」を出力し、それ以外なら「4桁以上ですか・・・」を出力しなさい。というのが追加されています。

[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文は、後述するループ(繰り返し)に並んで重要な構文です。

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

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