🔙
🔝

条件分岐・条件文・条件式・インデント

ロボットのセンサーみたいな機能が作れるようになります👍

Chatpter.1 - 条件分岐とは

条件分岐とは

  • 主に条件文の を使って「もし〇〇なら右、××なら左」みたいなことをします。

  • 分かれ道に立てる立て札のようなものです。

  • 使い方はとても簡単なのですが、使いこなすのが難しいです。

  • エラーが出てないのにうまく動かないときは、たいていの場合、条件文に間違いがあります。

  • 条件文は魔物です。

  • でも、手懐けるととても頼りになります。

  • 「条件分岐」「条件文」「条件式」。条件だらけでややこしいです。

  • コンピュータの世界も現代社会同様、世知辛いのです。

Chatpter.2 - 条件文

条件文

2.1 - if

if

  • まずはこれを見てください。

    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 は条件式です。= の数に注意!

  • a1 なので、この場合 a == 1True に化けます。

  • 文で、a1 の時 (True) は、すぐ下の print('1 です。') だけが動きます。
    else: 以降の部分は飛ばされます。

  • 逆に a1 ではない時 (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: が無いので、何も起こらない 〕

  • 文の一番うしろに : を付けるのを忘れないでくださいね。

2.2 - elif

elif

  • 簡単です。まずはこれを見てください。

    if True または False:
        if が True の時に、これを実行する。
    elif True または False:
        elif が True の時に、これを実行する。
    else:
        全部 False の時は、これを実行する。
    

  • a2 の時

    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 です。
  • ifFalse の時、次の 文に飛びます。

  • このように、if が1つでは足りないときに、if の次に elif を使うと条件文が増やせます。

  • を使えば、100個でも100万個でもいくらでも増やせます。

  • けど、できる限り少なくした方が、プログラムが読みやすくなってモテます。

Chatpter.3 - and と or

and と or

  • これを見てください。

    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)』になったら、そこで評価は終了です。

  • ですので、評価にかける条件式の順番は、わりと重要だったりします。慣れたら自然にわかる!


だんだん複雑になってきましたね。🥴

Chatpter.4 - インデント

インデント

  • インデント』は、「字下げ」ともいいます。

  • 例えば「文はここからここまでです 」という意味でインデントが使われます。

    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]キーを押したときに自動でインデントがつく場合もあります。

  • 逆につけ忘れるとインデントが付かないので、そこで : の付け忘れに気付いたりします。😓