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文ではないので ふつうに実行される
1221が False のとき。
a = 0
if a == 1:
print(a)
print(a + 1)
print(a + a)
print(a) # ← ここは if文ではないので ふつうに実行される
0
インデントは一回につき、半角スペース4つ分です。決まり事!
半角スペースの代わりに、[Tab]キー1回押してもOK!
でも半角スペース4つ分になったりならなかったり。
最後に : を付けると、[Enter]キーを押したときに自動でインデントがつく場合もあります。
逆につけ忘れるとインデントが付かないので、そこで : の付け忘れに気付いたりします。😓