2週間でAIを触れる! Python講座 基礎 [if文編]

2週間でAIを触れるようになる!Python講座

目標

ある条件の時だけコードを実行できるようになる.
条件によって,実行するコードを変えられるようになる.

if文

ある条件を満たすときだけコードを実行したいときに使う文です.

if 条件:
    コード
    コード

という風に使います.
条件を満たすときに,実行するコードは,コードの前にインデント(字下げ)を入れます.
:(コロン)の後のブロックには,必ずインデントをいれる,と覚えておいてください.
インデントはスペース4つです.
環境構築編でSublime Text3をいれて,僕と同じように設定した人は,tabキーでスペース4つを入れることができます.
実際に使ってみましょう.

a = 3
if a == 3:
    print("a = 3")

これを実行すると,

a = 3

と表示されます.
==は比較演算子の1つで両辺が等しいことを表します.
つまりこのプログラムは,aが3の時に,「a = 3」と表示するプログラムです.
比較演算子は7つあります.

では

a = 5
if a <= 0:
    print("a <= 0")
print(a)

とすると,どうなるでしょうか?
まず,2行目のif文の条件は満たしていないので,3行目は実行されません.
しかし4行目はインデントがついていないので,if文の条件にかかわらず実行されます.
つまり,

5

となります.
ちなみに,if文などの後に来る,インデントされたコードの塊のことをコードブロックと呼びます.

では条件を2つ満たすときだけコードを実行したいときにはどうすればいいでしょうか?
if文の中にif文を入れて以下の様に,書くこともできますが,あまりコードがきれいではありません.<pre>if a > 0:
if b > 1:
print("hello")

この場合論理演算子を使います.
論理演算子は3つあります.
// 表 and or not
では,実際に使ってみましょう.<pre>a = 5
b = 7
if a > 0 and b >1:
print("hello")

これを実行すると,

hello

と表示されます.
しかし,

a = 5
b = 1
if a > 0 and b >1:
    print("hello")

の様に書き換えると,ifの後ろの条件を片方しか満たしていないので,実行しても何も起こりません.
これである条件の時だけコードを実行できるようになりました.

if-else文

ではある条件を満たさないときに,何か処理をさせたいときには,どうすればいいでしょうか?
このようなときに使うのが,if-else文です.

a = 3
if a < 0:
    print("aは負の数")
else:
    print("aは正の数")

の用に使います.
これを実行すると,ifの条件は満たしていないので,elseの中のコードが実行されて

aは正の数

と表示されます.

if-elif-else文

では,条件によって処理を変えたいときにはどうすればいいでしょうか?
その時に使うのが,if-elif-else文です.
if-elif-else文は

if 条件1:
    コード1
elif 条件2:
    コード2
elif 条件3:
    コード3
else:
    コード4

の様に使います.
これとif文を3つ並べたものは,同じように思われるかもしれません.
では以下の二つのコードを実行してみてください.
コード1

num = 5
if num < 3:
    print(1)
elif num < 6:
    print(2)
elif num < 8:
    print(3)
else:
    print(4)

コード2

num = 5
if num < 3:
    print(1)
if num < 6:
    print(2)
if num < 8:
    print(3)
else:
    print(4)

コード1の実行結果は

2

コード2の実行結果

2
3

となるはずです.
これはif-elif-else文は条件を満たすまで条件を辿り,条件を満たしたところで,if-elif-elseのかたまりを抜け出す,という仕様になっているからです.
つまりコード1をif文を並べて書く

num = 5
if num < 3:
    print(1)
if 3 <= num < 6:
    print(2)
if 6 <= num < 8:
    print(3)
if num >= 8:
    print(4)

の様に複雑になってしまいます.
これで条件分岐もかけるようになったと思います.

Follow me!