Chatpter.1 - 条件分岐とは
条件分岐とは
主に条件文の を使って「もし〇〇なら右、××なら左」みたいなことをします。
分かれ道に立てる立て札のようなものです。
使い方はとても簡単なのですが、使いこなすのが難しいです。
エラーが出てないのにうまく動かないときは、たいていの場合、条件文に間違いがあります。
条件文は魔物です。
でも、手懐けるととても頼りになります。
「条件分岐」「条件文」「条件式」。条件だらけでややこしいです。
コンピュータの世界も現代社会同様、世知辛いのです。
ロボットのセンサーみたいな機能が作れるようになります👍
主に条件文の を使って「もし〇〇なら右、××なら左」みたいなことをします。
分かれ道に立てる立て札のようなものです。
使い方はとても簡単なのですが、使いこなすのが難しいです。
エラーが出てないのにうまく動かないときは、たいていの場合、条件文に間違いがあります。
条件文は魔物です。
でも、手懐けるととても頼りになります。
「条件分岐」「条件文」「条件式」。条件だらけでややこしいです。
コンピュータの世界も現代社会同様、世知辛いのです。
まずはこれを見てください。
if True または False:
if が True の時に、これを実行する。
else:
if が False の時に、これを実行する。
a = 1
の時、
a = 1
if a == 1: # a が 1 の時
print('1 です。')
else:
print('1 ではありません。')
a = 1
if True: # a が 1 なので True に化けた
print('1 です。') # ← これが実行される
else:
print('1 ではありません。')
1 です。
a = 1
は代入文。a == 1
は条件式です。=
の数に注意!
a
は 1
なので、この場合 a == 1
が True
に化けます。
文で、a
が 1
の時 (True) は、すぐ下の print('1 です。')
だけが動きます。
else:
以降の部分は飛ばされます。
逆に a
が 1
ではない時 (False) は else:
まで飛んで、
そのすぐ下の print('1 ではありません。')
が動きます。
例えば a = 0
の時は、
a = 0
if a == 1: # a が 1 の時
print('1 です。')
else:
print('1 ではありません。')
a = 0
if False: # a が 1 ではないので False に化けた
print('1 です。')
else: # ← ここに飛んで、
print('1 ではありません。') # ← これが実行される
1 ではありません。
と画面に出力されます。
else:
以降を省略した場合、 が False の時は 何もしない ということになります。
a = 0
if False: # a が 1 ではないので False に化けた
print('1 です。')
〔 else:
が無いので、何も起こらない 〕
文の一番うしろに :
を付けるのを忘れないでくださいね。
簡単です。まずはこれを見てください。
if True または False:
if が True の時に、これを実行する。
elif True または False:
elif が True の時に、これを実行する。
else:
全部 False の時は、これを実行する。
a
が 2
の時
a = 2
if a == 1:
print('1 です。')
elif a == 2:
print('2 です。')
else:
print('1 でも 2 でもありません。')
a = 2
if False: # <-- a が 1 ではないので 次の elif へ
print('1 です。')
elif a == 2:
print('2 です。')
else:
print('1 でも 2 でもありません。')
a = 2
if False:
print('1 です。')
elif True: # <------ ここが True になった
print('2 です。')
else:
print('1 でも 2 でもありません。')
2 です。
if
が False
の時、次の 文に飛びます。
このように、if
が1つでは足りないときに、if
の次に elif
を使うと条件文が増やせます。
を使えば、100個でも100万個でもいくらでも増やせます。
けど、できる限り少なくした方が、プログラムが読みやすくなってモテます。
これを見てください。
a = 3
if a >= 1 and a <= 5: # and
print('a は、1 以上 5 以下の数です。')
else:
print('a は、1 以上 5 以下の数ではありません。')
a は、1 以上 5 以下の数です。
a = 3
if a == 1 or a == 5: # or
print('a は、1 か 5 です。')
else:
print('a は、1 でも 5 でもありません。')
a は、1 でも 5 でもありません。
このように、条件式を繋げて書くことができます。
and は、1つでも False があると、その条件式は False になります。
全てが True でなければ True になりません。
or は、1つでも True があると、その条件式は True になります。
全てが False の時のみ、 False になります。
ちなみに and のほうは、こんな風にも書けます
if 1 <= a <= 5: # こっちのほうが一般的でわかりやすい。オススメ!
場合によって ( ) で囲って見やすくすることもあります。
if (1 <= a <= 5):
しかし場合によって ( ) で囲う必要があるときもあります。
if 1 <= a <= 5 and (a == 1 or a == 5):
a が 1 以上 5 以下
且つ ( a が 1
または a が 5
) の時。
これは 1 <= a <= 5
を先に評価してから次に (a == 1 or a == 5)
評価して、最後に両方の結果の値( True か False )を評価にかける順番になっています。
ややこしすぎて、ちょっと何言ってるかわからないですよね。
以下がそれを見える化したものです。
じっくりと、目で追っていってみてください。
a = 5
if 1 <= a <= 5 and (a == 1 or a == 5):
a = 5
if True and (a == 1 or a == 5):
a = 5
if True and True:
a = 5
if True:
a
の値を変えてみます。
a = 3
if 1 <= a <= 5 and (a == 1 or a == 5):
a = 3
if True and (a == 1 or a == 5):
a = 3
if True and False:
a = 3
if False:
a
の値をさらに変えてみます。
a = 10
if 1 <= a <= 5 and (a == 1 or a == 5):
a = 10
if False and (a == 1 or a == 5):
a = 10
if False:
途中で False
になった時点で、条件式の結果が False
になります。
False
になったら、それより後の条件式はすべて評価されません。
どんなに複雑で長い条件式であっても、一番最初で『False
(and)』 『True
(or)』になったら、そこで評価は終了です。
ですので、評価にかける条件式の順番は、わりと重要だったりします。慣れたら自然にわかる!
だんだん複雑になってきましたね。🥴
『インデント』は、「字下げ」ともいいます。
例えば「文はここからここまでです 」という意味でインデントが使われます。
a = 1
if a == 1: # a が 1 の時、インデントした範囲が実行される
print(a) # print の前の空白が『インデント』
print(a + 1)
print(a + a) # if文はここまで
print(a) # ← ここは if文ではないので ふつうに実行される
1
2
2
1
が False のとき。
a = 0
if a == 1:
print(a)
print(a + 1)
print(a + a)
print(a) # ← ここは if文ではないので ふつうに実行される
0
インデントは一回につき、半角スペース4つ分です。決まり事!
半角スペースの代わりに、[Tab]
キー1回押してもOK!
でも半角スペース4つ分になったりならなかったり。
最後に :
を付けると、[Enter]
キーを押したときに自動でインデントがつく場合もあります。
逆につけ忘れるとインデントが付かないので、そこで :
の付け忘れに気付いたりします。😓